blob: 6b9f8d70582ad85abf1cfe44c94f82b600aea454 [file] [log] [blame]
// Copyright 2015 Google. All rights reserved. Use of this source code is
// governed by a BSD-style license that can be found in the LICENSE file.
@TestOn('vm')
library wip.console_test;
import 'package:test/test.dart';
import 'package:webkit_inspection_protocol/dom_model.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
import 'test_setup.dart';
void main() {
group('WipDomModel', () {
WipDom? dom;
setUp(() async {
dom = new WipDomModel((await navigateToPage('dom_model_test.html')).dom);
});
tearDown(() async {
dom = null;
await closeConnection();
});
test('maintains model across getDocument calls', () async {
var document1 = await dom!.getDocument();
var document2 = await dom!.getDocument();
expect(document2.nodeId, document1.nodeId);
});
test('requestChildNodes updates children', () async {
Node htmlNode = (await dom!.getDocument()).children![1];
for (var child in htmlNode.children!) {
expect(child.children, isNull);
await dom!.requestChildNodes(child.nodeId);
}
// wait for children to be updated
for (var child in htmlNode.children!) {
expect(child.children, isNotNull);
}
});
test('removing a node updates children', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
await dom!.requestChildNodes(bodyNode.nodeId);
var childCount = bodyNode.childNodeCount!;
await dom!.removeNode(bodyNode.children!.first.nodeId);
expect(bodyNode.children, hasLength(childCount - 1));
expect(bodyNode.childNodeCount, childCount - 1);
});
test('Moving a node updates children', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
await dom!.requestChildNodes(bodyNode.nodeId);
Node div1 = bodyNode.children![0];
Node div2 = bodyNode.children![1];
expect(div1.childNodeCount, 1);
expect(div2.childNodeCount, 0);
await dom!.requestChildNodes(div1.nodeId);
await dom!.requestChildNodes(div2.nodeId);
await dom!.moveTo(div1.children!.first.nodeId, div2.nodeId);
expect(div1.childNodeCount, 0);
expect(div2.childNodeCount, 1);
expect(div2.children, hasLength(1));
}, skip: 'google/webkit_inspection_protocol.dart/issues/52');
test('Setting node value updates value', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
await dom!.requestChildNodes(bodyNode.nodeId);
Node div1 = bodyNode.children![0];
await dom!.requestChildNodes(div1.nodeId);
Node h1 = div1.children![0];
await dom!.requestChildNodes(h1.nodeId);
Node text = h1.children![0];
expect(text.nodeValue, 'test');
await dom!.setNodeValue(text.nodeId, 'some new text');
expect(text.nodeValue, 'some new text');
});
test('Adding attribute updates attributes', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
expect(bodyNode.attributes!.containsKey('my-attr'), isFalse);
await dom!.setAttributeValue(bodyNode.nodeId, 'my-attr', 'my-value');
expect(bodyNode.attributes!['my-attr'], 'my-value');
});
test('Changing attribute updates attributes', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
expect(bodyNode.attributes!['test-attr'], 'test-attr-value');
await dom!.setAttributeValue(bodyNode.nodeId, 'test-attr', 'my-value');
expect(bodyNode.attributes!['test-attr'], 'my-value');
});
test('Removing attribute updates attributes', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
expect(bodyNode.attributes!['test-attr'], 'test-attr-value');
await dom!.removeAttribute(bodyNode.nodeId, 'test-attr');
expect(bodyNode.attributes!.containsKey('test-attr'), isFalse);
});
test('refreshing resets document', () async {
var document1 = await dom!.getDocument();
await navigateToPage('dom_model_test.html');
var document2 = await dom!.getDocument();
expect(document2.nodeId, isNot(document1.nodeId));
});
test('getting attributes works', () async {
Node bodyNode = (await dom!.getDocument()).children![1].children![1];
var attributes = bodyNode.attributes;
var getAttributes = await dom!.getAttributes(bodyNode.nodeId);
expect(getAttributes, attributes);
expect(bodyNode.attributes, attributes);
}, skip: 'google/webkit_inspection_protocol.dart/issues/52');
});
}