Skip to content

[Web Tools] Automated runner and tooling for Web integration tests #191315

Open

Description

@harryterkelsen

Part of #191313

Problem

Running `package:integration_test` on Flutter Web requires manual `chromedriver` daemon management on port 4444 and complex `flutter drive` scripts. `flutter test integration_test -d chrome` is currently unsupported.

Solution

  1. Provide a single-command CLI to run web integration tests headlessly in Chrome.
  2. Automate `chromedriver` startup, port allocation, and process cleanup.
  3. Support web renderers (`--web-renderer=canvaskit|skwasm`) and wasm compilation flags.
  4. Capture browser console logs and failure screenshots on error.

Critical Edge Cases & Implementation Gotchas

Related Issues & Historical Context

Activity

  1. added
    P1High-priority issues at the top of the work list
    triaged-webTriaged by Web platform team
    on Aug 19, 2026
  2. harryterkelsen commented on Oct 29, 2026

    @harryterkelsen
    ContributorAuthor

    Status update:

    With the first three initiatives of umbrella #191313 landed (Web Engine local goldens in #191314, Framework web goldens and DPR alignment in #191371, and standalone local web benchmarks in #191316), this automated web integration test runner is the final remaining focus for the Flutter Web feedback loop project.

    We are currently formalizing the technical design to address:

    1. Zero-Daemon Lifecycle: Automated spawning, dynamic port allocation, and clean process teardown for ChromeDriver.
    2. Headless Execution: Resolving the headless flag dropping bug in flutter_tools's web_driver_service.dart (--web-run-headless does not take effect when using flutter drive for flutter web integration_test #95085) so headless runs are reliable out of the box.
    3. Hermetic Binary Resolution: Respecting CHROMEDRIVER_EXECUTABLE and CHROME_EXECUTABLE overrides (Formalize how to launch chrome and chromedriver in tests #187756) to ensure predictable CI and local developer execution.
    4. Command Surface: Standardizing on -d chrome invocation (flutter drive options -d and --browser-name have confusing behavior #67090) and diagnostic artifact capture (console logs, JS errors, failure screenshots).

    Related historical issues #97519 and #66264 will be closed upon landing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

P1High-priority issues at the top of the work listplatform-webWeb applications specificallyteam-webOwned by Web platform teamtriaged-webTriaged by Web platform team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions