devtools icon indicating copy to clipboard operation
devtools copied to clipboard

Flutter web integration tests failing

Open kenzieschmoll opened this issue 1 year ago • 6 comments

Example failure: https://github.com/flutter/devtools/actions/runs/9019966240/job/24787570258?pr=7731

This reproduces on the master branch locally: dart run integration_test/run_tests.dart --target=integration_test/test/live_connection/debugger_panel_test.dart --test-app-device=chrome

Failure logs from local run (failure occurs after performing a hot restart):

FlutterDriveProcess - Launching integration_test/test/live_connection/debugger_panel_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...             68.5s
FlutterDriveProcess - This app is linked to the debug service: ws://127.0.0.1:52704/B6InlRhbaIo=/ws
FlutterDriveProcess - Debug service listening on ws://127.0.0.1:52704/B6InlRhbaIo=/ws
FlutterDriveProcess - 00:00 +0: (setUpAll)
FlutterDriveProcess - 00:00 +1: Debugger panel
ChromeDriver - [1715275866.798][WARNING]: This version of ChromeDriver has not been tested with Chrome version 124.
FlutterDriveProcess - devtools server not available (200)
FlutterDriveProcess - DevTools version 2.36.0-dev.6.
FlutterDriveProcess - No DTD uri provided from the server during initialization.
FlutterDriveProcess - DevTools log level changed to INFO
FlutterDriveProcess - TEST STATUS: connecting to test app
FlutterDriveProcess - Attempted to call extension 'ext.flutter.inspector.structuredErrors', but no service with that name exists
FlutterDriveProcess - readyToResume: (106) Can only perform operation while paused.
FlutterDriveProcess - getSourceReport: (-32602) Source report kind Coverage not supported
FlutterDriveProcess - TEST STATUS: switching to debugger screen (icon IconData(U+0F112))
FlutterDriveProcess - TEST STATUS: looking for the main.dart file
FlutterDriveProcess - TEST STATUS: Navigating to line 57...
FlutterDriveProcess - TEST STATUS: opening the "more" menu
FlutterDriveProcess - Semantic node 261 had both scopesRoute and namesRoute set, indicating a self-labelled dialog, but it is missing the label. A dialog should be labelled either by setting namesRoute on itself and providing a label, or by containing a child node with namesRoute that can describe it with its content.
FlutterDriveProcess - Semantic node 261 had both scopesRoute and namesRoute set, indicating a self-labelled dialog, but it is missing the label. A dialog should be labelled either by setting namesRoute on itself and providing a label, or by containing a child node with namesRoute that can describe it with its content.
FlutterDriveProcess - Semantic node 261 had both scopesRoute and namesRoute set, indicating a self-labelled dialog, but it is missing the label. A dialog should be labelled either by setting namesRoute on itself and providing a label, or by containing a child node with namesRoute that can describe it with its content.
FlutterDriveProcess - TEST STATUS: selecting the go-to-line menu option
FlutterDriveProcess - TEST STATUS: entering line number 57 in the go-to-line dialog
FlutterDriveProcess - TEST STATUS: looking for line 57
FlutterDriveProcess - TEST STATUS: setting a breakpoint
FlutterDriveProcess - TEST STATUS: performing a hot restart
FlutterDriveProcess - getSourceReport: (-32602) Source report kind Coverage not supported
FlutterDriveProcess - readyToResume: (106) Can only perform operation while paused.
FlutterDriveProcess - result {"result":"false","failureDetails":["{\"methodName\":\"Debugger panel\",\"details\":\"══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════\\nThe following TestFailure was thrown running a test:\\nExpected: exactly one matching candidate\\n  Actual: _TextContainingWidgetFinder:<Found 0 widgets with text\\ncontaining Go to line number: []>\\n   Which: means none were found but one was expected\\n\\nWhen the exception was thrown, this was the stack:\\ndart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3  throw_\\npackages/matcher/src/expect/expect.dart 149:31                               fail\\npackages/matcher/src/expect/expect.dart 144:3                                _expect\\npackages/matcher/src/expect/expect.dart 56:3                                 expect$\\npackages/flutter_test/src/widget_tester.dart 474:18                          expect$\\ndebugger_panel_test.dart 208:3                                               goToLine\\ndart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50           <fn>\\ndart-sdk/lib/async/zone.dart 1407:47                                         _rootRunUnary\\ndart-sdk/lib/async/zone.dart 1308:19                                         runUnary\\ndart-sdk/lib/async/future_impl.dart 163:18                                   handleValue\\ndart-sdk/lib/async/future_impl.dart 847:44                                   handleValueCallback\\ndart-sdk/lib/async/future_impl.dart 876:13                                   _propagateToListeners\\ndart-sdk/lib/async/future_impl.dart 652:5                                    [_completeWithValue]\\ndart-sdk/lib/async/future_impl.dart 722:7                                    <fn>\\ndart-sdk/lib/async/zone.dart 1399:13                                         _rootRun\\ndart-sdk/lib/async/zone.dart 1301:19                                         run\\ndart-sdk/lib/async/zone.dart 1209:7                                          runGuarded\\ndart-sdk/lib/async/zone.dart 1249:23                                         callback\\ndart-sdk/lib/async/schedule_microtask.dart 40:11                             _microtaskLoop\\ndart-sdk/lib/async/schedule_microtask.dart 49:5                              _startMicrotaskLoop\\ndart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 181:7           <fn>\\n\\nThe test description was:\\n  Debugger panel\\n═════════════════════════════════════════════════════════════════\\n\"}"]}
FlutterDriveProcess - Failure Details:
FlutterDriveProcess - Failure in method: Debugger panel
FlutterDriveProcess - ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════
FlutterDriveProcess - The following TestFailure was thrown running a test:
FlutterDriveProcess - Expected: exactly one matching candidate
FlutterDriveProcess -   Actual: _TextContainingWidgetFinder:<Found 0 widgets with text
FlutterDriveProcess - containing Go to line number: []>
FlutterDriveProcess -    Which: means none were found but one was expected
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 - packages/matcher/src/expect/expect.dart 149:31                               fail
FlutterDriveProcess - packages/matcher/src/expect/expect.dart 144:3                                _expect
FlutterDriveProcess - packages/matcher/src/expect/expect.dart 56:3                                 expect$
FlutterDriveProcess - packages/flutter_test/src/widget_tester.dart 474:18                          expect$
FlutterDriveProcess - debugger_panel_test.dart 208:3                                               goToLine
FlutterDriveProcess - dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50           <fn>
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1407:47                                         _rootRunUnary
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1308:19                                         runUnary
FlutterDriveProcess - dart-sdk/lib/async/future_impl.dart 163:18                                   handleValue
FlutterDriveProcess - dart-sdk/lib/async/future_impl.dart 847:44                                   handleValueCallback
FlutterDriveProcess - dart-sdk/lib/async/future_impl.dart 876:13                                   _propagateToListeners
FlutterDriveProcess - dart-sdk/lib/async/future_impl.dart 652:5                                    [_completeWithValue]
FlutterDriveProcess - dart-sdk/lib/async/future_impl.dart 722:7                                    <fn>
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1399:13                                         _rootRun
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1301:19                                         run
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1209:7                                          runGuarded
FlutterDriveProcess - dart-sdk/lib/async/zone.dart 1249:23                                         callback
FlutterDriveProcess - dart-sdk/lib/async/schedule_microtask.dart 40:11                             _microtaskLoop
FlutterDriveProcess - dart-sdk/lib/async/schedule_microtask.dart 49:5                              _startMicrotaskLoop
FlutterDriveProcess - dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 181:7           <fn>
FlutterDriveProcess - 
FlutterDriveProcess - The test description was:
FlutterDriveProcess -   Debugger panel
FlutterDriveProcess - ═════════════════════════════════════════════════════════════════

kenzieschmoll avatar May 09 '24 18:05 kenzieschmoll

I tested locally using flutter candidate version 3.22.0-25.0.pre, and it passed. The flutter candidate version was changed to 3.22.0-26.0.pre in https://github.com/flutter/devtools/commit/689cbd64b3de9c3c276f39e3ecfcd9f7142a5392. It is another issue that this was auto submitted and the test didn't fail on this commit. I would have expected the bots to fail on this commit if bumping the flutter candidate version is what triggered this failure.

kenzieschmoll avatar May 09 '24 18:05 kenzieschmoll

Some notes while investigating. Initially I though this might be around the work around hot-restart and breakpoints (https://github.com/flutter/devtools/issues/7231) but none of the packages that were touched for that work changed between 3.22.0-25.0.pre and 3.22.0-26.0.pre.

3.22.0-25.0.pre:

  • dwds: 24.0.0
  • dds: 4.1.0
  • dap: 1.2.0

3.22.0-26.0.pre:

  • dwds: 24.0.0
  • dds: 4.1.0
  • dap: 1.2.0

elliette avatar May 09 '24 19:05 elliette

Possibly related: Flutter integration tests have been flaking for hot restart/reload as well: https://github.com/flutter/flutter/issues/146879

elliette avatar May 09 '24 19:05 elliette

I increased the pumpDuration after hot-restart, and got a bit further in the test. The actual failure (I believe) is the more menu dialog is either not properly opening, or the "Go to" option is not being found. One thing I noticed is that the "Go to line" option is painted after the first two options in the dialog:

Screenshot 2024-05-09 at 1 17 08 PM

Screenshot 2024-05-09 at 1 18 07 PM

Tested the app locally and hot-restarting then setting breakpoint is working as expected, so I'm going to lower the priority (I don't think this is a real regression affecting debugging functionality).

elliette avatar May 09 '24 20:05 elliette

Note: this test is also failing for me on 3.22.0-25.0.pre (though it did pass once)

elliette avatar May 09 '24 20:05 elliette

Hello @kenzieschmoll, do you have solution to solve this warning on the web?
"FlutterLoader.loadEntrypoint" is deprecated. Use "FlutterLoader.load" instead. Actually I added this, but I have another warning instead: Uncaught (in promise) FlutterLoader.load requires _flutter.buildConfig to be set

sadibekov avatar May 17 '24 11:05 sadibekov