blob: 4f4b78a37c9fcf179af19ded0cd556025fb4ce37 [file] [log] [blame]
// Copyright 2020 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.runtime_test;
import 'dart:async';
import 'package:test/test.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
import 'test_setup.dart';
void main() {
group('WipRuntime', () {
WipRuntime runtime;
List<StreamSubscription> subs = [];
setUp(() async {
runtime = (await wipConnection).runtime;
});
tearDown(() async {
await runtime.disable();
runtime = null;
await closeConnection();
subs.forEach((s) => s.cancel());
subs.clear();
});
test('getIsolateId', () async {
await runtime.enable();
await navigateToPage('runtime_test.html');
expect(await runtime.getIsolateId(), isNotEmpty);
});
test('getHeapUsage', () async {
await runtime.enable();
await navigateToPage('runtime_test.html');
HeapUsage usage = await runtime.getHeapUsage();
expect(usage.usedSize, greaterThan(0));
expect(usage.totalSize, greaterThan(0));
});
test('evaluate', () async {
await runtime.enable();
await navigateToPage('runtime_test.html');
RemoteObject result = await runtime.evaluate('1+1');
expect(result.type, 'number');
expect(result.value, 2);
});
test('callFunctionOn', () async {
await runtime.enable();
await navigateToPage('runtime_test.html');
RemoteObject console = await runtime.evaluate('console');
RemoteObject result = await runtime.callFunctionOn(
'''
function(msg) {
console.log(msg);
return msg;
}''',
objectId: console.objectId,
arguments: [
'foo',
],
);
expect(result.type, 'string');
expect(result.value, 'foo');
});
test('getProperties', () async {
await runtime.enable();
await navigateToPage('runtime_test.html');
RemoteObject console = await runtime.evaluate('console');
List<PropertyDescriptor> properties = await runtime.getProperties(
console,
ownProperties: true,
);
expect(properties, isNotEmpty);
PropertyDescriptor property = properties.first;
expect(property.name, isNotEmpty);
});
});
}