| // 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); |
| }); |
| }); |
| } |