Skip to content
FlightStack Docs
Sign in Start free

ScreenStack Job | FlightStack

Runs your Flutter widget / integration tests in screenshot-capture mode and uploads the resulting images to ScreenStack for visual regression review. ScreenStack is VooStack’s companion product — see the ScreenStack integration guide.

Step ref: flightstack/screen-stack@1.0.0.

  • Any agent that can run flutter test / flutter drive.
  • A ScreenStack project linked to your FlightStack organization.
  • Tests instrumented with the screenstack package.
OptionDescriptionDefault
ProjectScreenStack project ID (or slug)from org default
Tests pathGlob pattern of test files to runtest/screens/**.dart
DevicesComma-separated device profile names (e.g. pixel-7,iphone-15)iphone-15
Theme variantslight,dark, or a list of theme nameslight,dark
Fail on regressionFail the job when ScreenStack reports a visual diff above thresholdtrue
Branch baselineBranch to diff againstrepo default branch
  1. Agent runs the Flutter tests under flutter test --machine with the ScreenStack capture harness enabled.
  2. Each captured screenshot is uploaded via POST /buildagent/{id}/screenstack/upload (or …/upload-by-target for canvas-aware captures).
  3. ScreenStack diffs against the baseline branch and posts results back.
  4. The job exits non-zero if Fail on regression is on and the diff exceeds the project’s threshold.
NameDescription
reviewUrlScreenStack review URL for this run
changedCountNumber of screens whose pixel diff exceeds the threshold
newCountNumber of new (not in baseline) screens
┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ On PR │───▶│ Tests │───▶│ Screen Stack │
└──────────┘ └──────────────┘ └──────────────┘
┌──────────────┐
│ Notification │
│ (Slack PR) │
└──────────────┘

Uploads fail with 401 The agent token didn’t pick up your org’s ScreenStack scope. Run flightstack agent doctor and re-register if needed.

Diffs everywhere on the first run The first run becomes the baseline. Approve it in ScreenStack to use it as the reference.