Enable save/load for memory screen.
Release notes issue: https://github.com/flutter/devtools/issues/7844 I am hitting this error locally: https://github.com/flutter/flutter/issues/145772, every time at different place of the test.
Added debug logs. Local and bot output is different.
Bots do not show debug logs.
Locally, all lines are executed. There is some internal error that does not stop the test. And test is declared as failed.
Here is local output with logs:
``` polinach-macbookpro3:devtools_app polinach$ dart run integration_test/run_tests.dart --target=integration_test/test/offline/memory_offline_data_test.dart ChromeDriver - Starting ChromeDriver 125.0.6422.78 (14db42ec38aded3304a3e624a0a038e02956b87e-refs/branch-heads/6422@{#1088}) on port 4444 ChromeDriver - Only local connections are allowed. ChromeDriver - Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver - ChromeDriver was started successfully. FlutterDriveProcess - Resolving dependencies... FlutterDriveProcess - Downloading packages... FlutterDriveProcess - _fe_analyzer_shared 61.0.0 (69.0.0 available) FlutterDriveProcess - analyzer 5.13.0 (6.5.1 available) FlutterDriveProcess - cross_file 0.3.3+8 (0.3.4+1 available) FlutterDriveProcess - dart_style 2.3.2 (2.3.6 available) FlutterDriveProcess - ! devtools_app_shared 0.2.0-dev.1 from path ../devtools_app_shared (overridden) FlutterDriveProcess - ! devtools_extensions 0.2.0-dev.1 from path ../devtools_extensions (overridden) FlutterDriveProcess - ! devtools_shared 10.0.0-dev.3 from path ../devtools_shared (overridden) FlutterDriveProcess - ! devtools_test 0.0.0 from path ../devtools_test (overridden) FlutterDriveProcess - file_selector_web 0.9.3 (0.9.4+1 available) FlutterDriveProcess - flutter_lints 3.0.2 (4.0.0 available) FlutterDriveProcess - flutter_riverpod 2.0.0-dev.9 (2.5.1 available) FlutterDriveProcess - http 1.2.0 (1.2.1 available) FlutterDriveProcess - js 0.6.7 (0.7.1 available) FlutterDriveProcess - lints 3.0.0 (4.0.0 available) FlutterDriveProcess - pointer_interceptor 0.9.3+7 (0.10.1+1 available) FlutterDriveProcess - pubspec_parse 1.2.3 (1.3.0 available) FlutterDriveProcess - riverpod 2.0.0-dev.9 (2.5.1 available) FlutterDriveProcess - shared_preferences_android 2.2.2 (2.2.3 available) FlutterDriveProcess - shared_preferences_web 2.2.2 (2.3.0 available) FlutterDriveProcess - sse 4.1.4 (4.1.5 available) FlutterDriveProcess - state_notifier 0.7.2+1 (1.0.0 available) FlutterDriveProcess - url_launcher_android 6.3.2 (6.3.3 available) FlutterDriveProcess - url_launcher_web 2.2.3 (2.3.1 available) FlutterDriveProcess - web 0.4.2 (0.5.1 available) FlutterDriveProcess - web_benchmarks 1.1.1 (1.2.1 available) FlutterDriveProcess - web_socket_channel 2.4.3 (3.0.0 available) FlutterDriveProcess - Got dependencies! FlutterDriveProcess - 22 packages have newer versions incompatible with dependency constraints. FlutterDriveProcess - Try `flutter pub outdated` for more information. FlutterDriveProcess - Launching integration_test/test/offline/memory_offline_data_test.dart on Chrome in debug mode... FlutterDriveProcess - Waiting for connection from debug service on Chrome... FlutterDriveProcess - Warning: In index.html:55: Local variable for "serviceWorkerVersion" is deprecated. Use "{{flutter_service_worker_version}}" template token instead. FlutterDriveProcess - Warning: In index.html:92: "FlutterLoader.loadEntrypoint" is deprecated. Use "FlutterLoader.load" instead. FlutterDriveProcess - Warning: In index.html:113: "FlutterLoader.loadEntrypoint" is deprecated. Use "FlutterLoader.load" instead. FlutterDriveProcess - Waiting for connection from debug service on Chrome... 30.1s FlutterDriveProcess - This app is linked to the debug service: ws://127.0.0.1:53671/YFLdCxp9Zew=/ws FlutterDriveProcess - Debug service listening on ws://127.0.0.1:53671/YFLdCxp9Zew=/ws FlutterDriveProcess - 00:00 +0: Memory screen can load offline data FlutterDriveProcess - devtools server not available (200) FlutterDriveProcess - DevTools version 2.36.0-dev.20. FlutterDriveProcess - No DTD uri provided from the server during initialization. FlutterDriveProcess - DevTools log level changed to INFO FlutterDriveProcess - TEST STATUS: !!!!!!!! 1 FlutterDriveProcess - TEST STATUS: !!!!!!!! 2 FlutterDriveProcess - TEST STATUS: !!!!!!!! 3 FlutterDriveProcess - TEST STATUS: !!!!!!!! 4 FlutterDriveProcess - [FlutterError]: Unexpected null value. FlutterDriveProcess - TEST STATUS: !!!!!!!! 5 FlutterDriveProcess - TEST STATUS: !!!!!!!! 6 FlutterDriveProcess - TEST STATUS: !!!!!!!! 7 FlutterDriveProcess - [FlutterError]: Unexpected null value. FlutterDriveProcess - ══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ FlutterDriveProcess - The following TypeErrorImpl was thrown during a scheduler callback: FlutterDriveProcess - Unexpected null value. FlutterDriveProcess - FlutterDriveProcess - When the exception was thrown, this was the stack: FlutterDriveProcess - dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw_ FlutterDriveProcess - dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck FlutterDriveProcess - lib/_engine/engine/semantics/semantics.dart 1093:42 get element FlutterDriveProcess - lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize FlutterDriveProcess - lib/_engine/engine/semantics/scrollable.dart 112:7When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1433:82 updateChildren
lib/_engine/engine/semantics/semantics.dart 2403:13 updateSemantics
lib/_engine/engine/window.dart 112:5 updateSemantics
packages/flutter_test/src/window.dart 934:5 updateSemantics
packages/flutter/src/rendering/view.dart 374:5 updateSemantics
packages/flutter/src/rendering/binding.dart 245:48
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1433:82 updateChildren
lib/_engine/engine/semantics/semantics.dart 2403:13 updateSemantics
lib/_engine/engine/window.dart 112:5 updateSemantics
packages/flutter_test/src/window.dart 934:5 updateSemantics
packages/flutter/src/rendering/view.dart 374:5 updateSemantics
packages/flutter/src/rendering/binding.dart 245:48
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════ The following TypeErrorImpl was thrown during a scheduler callback: Unexpected null value.
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3 throw
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18 nullCheck
lib/_engine/engine/semantics/semantics.dart 1093:42 get element
lib/_engine/engine/semantics/semantics.dart 1691:5 recomputePositionAndSize
lib/_engine/engine/semantics/scrollable.dart 112:7
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ The following message was thrown: Multiple exceptions (13) were detected during the running of the current test, and at least one was unexpected. ════════════════════════════════════════════════════════════════════════════════════════════════════
Test 'Memory screen can load offline data' failed: ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════ The following message was thrown: Multiple exceptions (13) were detected during the running of the current test, and at least one was unexpected. ═════════════════════════════════════════════════════════════════ .
result {"result":"false","failureDetails":["{"methodName":"Memory screen can load offline data","details":"══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════\nThe following message was thrown:\nMultiple exceptions (13) were detected during the running of the\ncurrent test, and at least one was unexpected.\n═════════════════════════════════════════════════════════════════\n"}"]} Failure Details: Failure in method: Memory screen can load offline data ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════ The following message was thrown: Multiple exceptions (13) were detected during the running of the current test, and at least one was unexpected. ═════════════════════════════════════════════════════════════════
#0 IntegrationTestRunner.run.runTest (package:devtools_shared/src/test/integration_test_runner.dart:138:11)
</details>
Okay, basic version of the test passes.
But benchmark-performance fails with Caught browser-side error: Instance of 'ProgressEvent'
Reproduced locally. Error:
...
[APP] TEST STATUS: switching to memory screen (icon IconData(U+0F174))
Unrecognized URL path: /assets/img/doc/upload_dark.png
Unhandled exception:
Caught browser-side error: Instance of 'ProgressEvent'
Looks strange because the image is rendering well. Tried to list the image explicitly in assets. Did not help.
Ok, found that in production the image is not rendered:
Fixed.
The fix may be should be applied wider, because some other images may be missed as well. But while we do not know which, let it be just for memory screen. This issue may be a reason to switch golden testing from mac to web, and from debug to release or profile mode, because these parameters may affect the assets availability.
If image is not available in test in profile mode, the test will just fail.
I recommend hiding these controls when viewing offline data:
Why? What if user wants to upload another file? What if user imported couple more snapshots, diffed them, updated filter and want to save their work to continue later?
What if user imported couple more snapshots, diffed them, updated filter and want to save their work to continue later?
This is a good point. Fine to leave. However, I think the settings (or at least the one related to the console) are irrelevant for offline mode, aren't they?
Tested disconnect for memory - it works.