Skip to content

Rewrite -d web-server hot reload/restart tests#187453

Merged
auto-submit[bot] merged 14 commits into
flutter:masterfrom
nshahan:start-paused-test
Jun 11, 2026
Merged

Rewrite -d web-server hot reload/restart tests#187453
auto-submit[bot] merged 14 commits into
flutter:masterfrom
nshahan:start-paused-test

Conversation

@nshahan

@nshahan nshahan commented Jun 2, 2026

Copy link
Copy Markdown
Contributor
  • Now uses chromedriver to launch and control Chrome.
  • Adds confirmation through console log reading that the app is running and the reload/restart was successful.
  • Moves tests from integration.shard to web.shard
  • Renames existing hot reload/restart tests to make it more obvious the device they are running on: chrome vs web-server.

Issue: #187452

Pre-launch Checklist

* Now uses chromedriver to launch and control Chrome.
* Adds confirmation through console log reading that the app is running
  and the reload/restart was successful.
* Moves tests from integration.shard to web.shard
* Renames existing hot reload/restart tests to make it more obvious the
  device they are running on: chrome vs web-server.
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Jun 2, 2026
@github-actions github-actions Bot added the tool Affects the "flutter" command-line tool. See also t: labels. label Jun 2, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 3, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 3, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 3, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 3, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 3, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 3, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 4, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 4, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 5, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 5, 2026
@nshahan nshahan requested review from mdebbar and srujzs June 5, 2026 16:03
@nshahan nshahan marked this pull request as ready for review June 5, 2026 16:03

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the integration tests for the web-server device, introducing new tests for hot reload and hot restart functionality along with a new WebServerDeviceTestRunner helper class. Feedback on the implementation focuses on robustness and resource management within the test runner. Key recommendations include tracking the runner's lifecycle with a disposal flag, using a stopwatch-based timeout in the browser log search to prevent infinite background loops, and wrapping webdriver cleanup in a try-finally block to guarantee that chromedriver processes are always terminated.

srujzs
srujzs previously approved these changes Jun 5, 2026

@srujzs srujzs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly nits, LGTM! Thanks!

Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
Comment thread packages/flutter_tools/test/web.shard/hot_reload_web_server_test.dart Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 5, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 5, 2026
srujzs
srujzs previously approved these changes Jun 5, 2026

@srujzs srujzs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some nits about error reporting, LGTM otherwise.

Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
@nshahan nshahan marked this pull request as draft June 5, 2026 23:55
@flutter-dashboard

Copy link
Copy Markdown

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@nshahan nshahan added the CICD Run CI/CD label Jun 9, 2026
@nshahan nshahan marked this pull request as ready for review June 9, 2026 22:28

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request reorganizes and adds integration tests for hot reload and hot restart on the web-server device, introducing a shared WebServerDeviceTestRunner utility and removing older WebSocket-based tests. Feedback on the changes includes addressing an uncaught TimeoutException in findNextInBrowserLog that bypasses custom error handling, avoiding throwing exceptions on non-fatal ChromeDriver stderr output to prevent test flakiness, and simplifying the commentHotReloadPrint helper by writing the original template directly instead of performing string replacement.

Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
Comment thread packages/flutter_tools/test/integration.shard/test_data/hot_reload_project.dart Outdated
srujzs
srujzs previously approved these changes Jun 9, 2026

@srujzs srujzs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I think it makes sense to just always surface the errors. If it's too noisy, we'll find out in CI.

Comment thread packages/flutter_tools/test/web.shard/test_data/web_server_test_common.dart Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 10, 2026
@nshahan nshahan added the CICD Run CI/CD label Jun 10, 2026
@nshahan nshahan added this pull request to the merge queue Jun 10, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 11, 2026
@nshahan nshahan added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit

auto-submit Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/187453, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@nshahan nshahan added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Jun 11, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit

auto-submit Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

auto label is removed for flutter/flutter/187453, Failed to enqueue flutter/flutter/187453 with HTTP 400: Pull request Required status check "Merge Queue Guard" is expected..

@gaaclarke gaaclarke added the CICD Run CI/CD label Jun 11, 2026
@nshahan nshahan added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue Jun 11, 2026
Merged via the queue into flutter:master with commit f0950cd Jun 11, 2026
172 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jun 11, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Jun 12, 2026
flutter/flutter@8bdce07...b7cb925

2026-06-12 engine-flutter-autoroll@skia.org Roll Skia from cadbde1ec4b7 to 8c89bf2b0ee3 (5 revisions) (flutter/flutter#187926)
2026-06-12 engine-flutter-autoroll@skia.org Roll Packages from 1b56cde to b78ad83 (5 revisions) (flutter/flutter#187928)
2026-06-12 engine-flutter-autoroll@skia.org Roll Dart SDK from f3441f2067ae to f6c31f4c3a63 (17 revisions) (flutter/flutter#187924)
2026-06-12 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 2KosSR4ONUjIB7tP_... to A3eaUn9mQ_EkSNxVI... (flutter/flutter#187923)
2026-06-12 engine-flutter-autoroll@skia.org Roll Skia from a2228b926c68 to cadbde1ec4b7 (9 revisions) (flutter/flutter#187921)
2026-06-12 kustermann@google.com Remove dynamic module loading code in flutter web engine (flutter/flutter#187777)
2026-06-12 matt.kosarek@canonical.com Remove EnableTransparentWindowBackground because it did nothing important and because Windows 10 does not support DWMWA_SYSTEMBACKDROP_TYPE (flutter/flutter#187848)
2026-06-12 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from dQ4PjIJB5kZFU8Y32... to EmfiOMUge_nnNS33B... (flutter/flutter#187912)
2026-06-12 mvincentong@gmail.com Clarify RichText selection docs (flutter/flutter#186844)
2026-06-12 1063596+reidbaker@users.noreply.github.com Custom KGP task and migration to AGP api for geting kgp version (flutter/flutter#182788)
2026-06-12 engine-flutter-autoroll@skia.org Roll Skia from f61acb31edf8 to a2228b926c68 (5 revisions) (flutter/flutter#187896)
2026-06-12 bdero@google.com [Flutter GPU] Expose ASTC HDR texture formats (flutter/flutter#187715)
2026-06-12 awolff@google.com Expand coverage of android_hardware_smoke_test. Add image, text, blend mode, and blur tests. (flutter/flutter#187600)
2026-06-11 bdero@google.com [Flutter GPU] Add blit operations (flutter/flutter#187289)
2026-06-11 bkonyi@google.com [flutter_tools] Fix version cache git fallback performance regression (flutter/flutter#187400)
2026-06-11 nshahan@google.com Rewrite `-d web-server` hot reload/restart tests (flutter/flutter#187453)
2026-06-11 bdero@google.com [Impeller] Allow sampling textures with manually-uploaded mip levels (flutter/flutter#187729)
2026-06-11 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#187884)
2026-06-11 47866232+chunhtai@users.noreply.github.com iOS a11y sets header trait based on heading level (flutter/flutter#186916)
2026-06-11 engine-flutter-autoroll@skia.org Roll Skia from 9f02102df298 to f61acb31edf8 (19 revisions) (flutter/flutter#187869)
2026-06-11 engine-flutter-autoroll@skia.org Roll ICU from ee5f27adc28b to d578f2e8b7bd (8 revisions) (flutter/flutter#187829)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC louisehsu@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
via-guy pushed a commit to via-guy/flutter that referenced this pull request Jun 26, 2026
* Now uses chromedriver to launch and control Chrome.
* Adds confirmation through console log reading that the app is running
and the reload/restart was successful.
* Moves tests from integration.shard to web.shard
* Renames existing hot reload/restart tests to make it more obvious the
device they are running on: chrome vs web-server.

Issue: flutter#187452

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants