Search code examples
htmlflutterflutter-webflutter-test

Load custom HTML on browser tests


I'm trying to write a test on browser (Chrome) with a custom HTML file. I followed the instructions and here is what I have:

test/
 |- web_test.dart
 |- web_test.html
// test/web_test.dart
@TestOn('browser')

import 'dart:html' as html;

import 'package:flutter_test/flutter_test.dart';

void main() {
  test('It should load the custom html file', () {
    expect(html.document.title, 'Custom HTML file title');
  });
}
<!-- web_test.html -->
<!doctype html>
<html>

<head>
  <title>Custom HTML file title</title>
  <link rel="x-dart-test" href="web_test.dart">
  <script src="packages/test/dart.js"></script>
</head>

</html>

Then I run

flutter test --platform chrome

It looks like the custom html file is not used:

Logs:

00:02 +0 -1: It should load the custom html file [E]                                                                                                                                                                                                                                  
  Expected: 'Custom HTML file title'
    Actual: 'web_test.dart Test'
     Which: is different.
            Expected: Custom HTM ...
              Actual: web_test.d ...
                      ^
             Differ at offset 0
  
  dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
  packages/test_api/src/expect/async_matcher.dart.js 164:22                         fail
  packages/test_api/src/expect/async_matcher.dart.js 159:12                         _expect
  packages/test_api/src/expect/async_matcher.dart.js 86:12                          expect$
  packages/flutter_test/src/matchers.dart.js 5108:12                                expect$
  web_test.dart.js 20:21                                                            <fn>
  packages/test_api/src/backend/declarer.dart.js 266:17                             <fn>
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50                <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 179:98                  <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 247:16                  [_run]
  packages/stack_trace/src/stack_zone_specification.dart.js 179:80                  <fn>
  dart-sdk/lib/async/zone.dart 1434:47                                              _rootRunUnary
  dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
  dart-sdk/lib/async/future_impl.dart 159:18                                        handleValue
  dart-sdk/lib/async/future_impl.dart 766:44                                        handleValueCallback
  dart-sdk/lib/async/future_impl.dart 795:13                                        _propagateToListeners
  dart-sdk/lib/async/future_impl.dart 465:9                                         <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 247:16                  [_run]
  packages/stack_trace/src/stack_zone_specification.dart.js 170:71                  <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1236:7                                               runGuarded
  dart-sdk/lib/async/zone.dart 1276:23                                              callback
  dart-sdk/lib/async/schedule_microtask.dart 40:11                                  _microtaskLoop
  dart-sdk/lib/async/schedule_microtask.dart 49:5                                   _startMicrotaskLoop
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15               <fn>
  ===== asynchronous gap ===========================
  dart-sdk/lib/async/zone.dart 1356:19                                              registerUnaryCallback
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 67:19                _async
  packages/test_api/src/backend/declarer.dart.js 264:69                             <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1860:67                                              _runZoned
  dart-sdk/lib/async/zone.dart 1783:10                                              runZoned
  packages/test_api/src/backend/declarer.dart.js 264:21                             <fn>
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
  packages/test_api/src/backend/declarer.dart.js 254:90                             <fn>
  packages/test_api/src/backend/declarer.dart.js 733:15                             <fn>
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
  packages/test_api/src/backend/declarer.dart.js 730:61                             <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1860:67                                              _runZoned
  dart-sdk/lib/async/zone.dart 1783:10                                              runZoned
  packages/test_api/src/backend/declarer.dart.js 730:13                             [_waitForOutstandingCallbacks]
  packages/test_api/src/backend/declarer.dart.js 812:53                             <fn>
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50                <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 179:98                  <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 247:16                  [_run]
  packages/stack_trace/src/stack_zone_specification.dart.js 179:80                  <fn>
  dart-sdk/lib/async/zone.dart 1434:47                                              _rootRunUnary
  dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
  dart-sdk/lib/async/future_impl.dart 159:18                                        handleValue
  dart-sdk/lib/async/future_impl.dart 766:44                                        handleValueCallback
  dart-sdk/lib/async/future_impl.dart 795:13                                        _propagateToListeners
  dart-sdk/lib/async/future_impl.dart 592:7                                         [_complete]
  dart-sdk/lib/async/future.dart 252:15                                             <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 247:16                  [_run]
  packages/stack_trace/src/stack_zone_specification.dart.js 170:71                  <fn>
  dart-sdk/lib/async/zone.dart 1418:47                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1236:7                                               runGuarded
  dart-sdk/lib/async/zone.dart 1276:23                                              <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 247:16                  [_run]
  packages/stack_trace/src/stack_zone_specification.dart.js 170:71                  <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1260:23                                              <fn>
  dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19           internalCallback
  ===== asynchronous gap ===========================
  dart-sdk/lib/async/zone.dart 1356:19                                              registerUnaryCallback
  dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 67:19                _async
  packages/test_api/src/backend/declarer.dart.js 809:65                             <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1860:67                                              _runZoned
  dart-sdk/lib/async/zone.dart 1783:10                                              runZoned
  packages/test_api/src/backend/declarer.dart.js 809:17                             <fn>
  packages/test_api/src/backend/declarer.dart.js 837:9                              [_guardIfGuarded]
  packages/test_api/src/backend/declarer.dart.js 808:30                             <fn>
  packages/stack_trace/src/stack_zone_specification.dart.js 1276:18                 <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1860:67                                              _runZoned
  dart-sdk/lib/async/zone.dart 1783:10                                              runZoned
  packages/stack_trace/src/stack_zone_specification.dart.js 1274:20                 capture
  packages/test_api/src/backend/declarer.dart.js 807:19                             [_onRun]
  packages/test_api/src/backend/live_test_controller.dart.js 162:20                 run
  packages/test_api/src/backend/remote_listener.dart.js 233:18                      <fn>
  dart-sdk/lib/async/zone.dart 1426:13                                              _rootRun
  dart-sdk/lib/async/zone.dart 1328:19                                              run
  dart-sdk/lib/async/zone.dart 1860:67                                              _runZoned
  dart-sdk/lib/async/zone.dart 1783:10                                              runZoned
  packages/test_api/src/backend/remote_listener.dart.js 232:13                      [_runLiveTest]
  packages/test_api/src/backend/remote_listener.dart.js 208:27                      <fn>
  dart-sdk/lib/async/zone.dart 1434:47                                              _rootRunUnary
  dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
  dart-sdk/lib/async/zone.dart 1244:7                                               runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/zone.dart 1442:13                                              _rootRunUnary
  dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
  dart-sdk/lib/async/zone.dart 1244:7                                               runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/stream_controller.dart 867:13                                  add
  packages/stream_channel/src/stream_channel_controller.dart.js 1295:24             add
  packages/stream_channel/src/stream_channel_controller.dart.js 504:33              <fn>
  dart-sdk/lib/async/zone.dart 1618:10                                              runUnaryGuarded
  dart-sdk/lib/internal/async_cast.dart 85:11                                       [_onData]
  dart-sdk/lib/async/zone.dart 1618:10                                              runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/zone.dart 1618:10                                              runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/stream_controller.dart 867:13                                  add
  dart-sdk/lib/async/zone.dart 1618:10                                              runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/zone.dart 1618:10                                              runUnaryGuarded
  dart-sdk/lib/async/stream_impl.dart 341:11                                        [_sendData]
  dart-sdk/lib/async/stream_impl.dart 271:7                                         [_add]
  dart-sdk/lib/async/stream_controller.dart 774:19                                  [_sendData]
  dart-sdk/lib/async/stream_controller.dart 648:7                                   [_add]
  dart-sdk/lib/async/stream_controller.dart 596:5                                   add
  dart-sdk/lib/async/stream_controller.dart 867:13                                  add
  packages/stream_channel/src/stream_channel_controller.dart.js 1295:24             add
  web_test.dart.test.dart.js 83:31                                                  <fn>
  dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
  dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
  dart-sdk/lib/html/dart2js/html_dart2js.dart 37277:58                              <fn>
  
00:02 +0 -1: Some tests failed.

What am I missing?

The code is available in this repository.


Solution

  • Unfortunately, it seems to not be supported. The package test is meant to be run with dart test and not flutter test. See this issue. In it, they suggest writing an integration test instead.