Welcome back

Opening shared build

Preparing your Mach workspace…

Preparing your secure download…

Documentation
Blog
Open dashboard
Mach Docs

E2E Tests

Managed mobile and local web E2E history for your project.
Central E2E test variables
Choose Secrets → E2E test variables, select an environment, and use Add variable to save test-only values under Global or your profile’s environment. Use the exact variable names from your test files; no Maestro-specific prefix is required. Newly saved variables are used automatically, with no portal profile mapping or enablement form. Managed iOS runners need MACH CLI 2.13.0 or later for private test output handling.
Managed CI run using centrally stored test values
mach maestro --latest --platform ios --profile e2e --wait
Precedence is explicit --maestro-env values, then the selected profile’s environment secrets, then Global E2E secrets. The CLI resolves inheritance and platform-specific environment overrides from mach.config.json; when environment is omitted, it uses the same profile-name scope fallback as builds. Dashboard runs use the environment recorded with the build. Older builds can use their existing legacy mapping or be tested from the linked CLI project. Scoped secrets are never resolved by guessing when context is missing. Requested variable names are checked before runner launch or billing. Automatic attempts keep one encrypted snapshot; a newly queued rerun resolves current values.
Test values are encrypted and isolated from application build variables, mach env pull and environment exports. Developers see resolved names and their environment; only administrators can change values. There is no reveal or export action. Change history records actors, names and times without values. Existing legacy configurations and explicit pauses remain unchanged until an administrator saves variables with the new workflow or chooses Use automatically. Queued and running tests are unchanged.
Updated runners scrub known values and common encodings from streamed logs, errors and textual reports. An incompatible runner cannot retrieve central values. Screenshots and recordings cannot be reliably redacted; authenticated-run evidence requires developer or higher project access and uses expiring file links. Use sample test accounts and avoid logging secrets or placing them in screenshots. Local --local runs continue to use local variables and do not download stored test credentials. No new scheduler or publishing permission is created by this feature.
E2E Tests brings together mobile and web test runs. Managed Maestro executions validate a mobile build on a Mach runner. Local Playwright executions validate a web app in the browser on your machine or existing CI runner, then save a tenant-scoped outcome summary in the same list.
Both are useful for smoke tests, checkout flows, login flows, onboarding, and other critical UI journeys. They do not replace unit tests, API tests, backend checks, or pixel-perfect visual regression testing.
What The Dashboard Shows
Run Status
Queued, running, passed, failed, cancelled, and interrupted states for each run.
Runner Context
Engine, platform, target, and build context for managed tests; browser and local-runner context for Playwright.
Billing
Managed runner charges and duration when applicable; local Playwright runs are explicitly no-charge.
Logs & Artifacts
Managed runs can publish logs and artifacts. Playwright output remains on the local runner by design.
Cancel Active Runs
Developers can stop queued or running Maestro tests. Cancelling Playwright securely signals the local or CI Mach CLI; Mach never reaches into your machine directly.
Open an active test from E2E Tests and choose Cancel test. Android Maestro runners are terminated, and iOS runners are cancelled through their managed GitLab pipeline. A local Playwright command checks Mach every two seconds and stops its own browser process tree when it sees the cancellation request. Queued runs have no charge; a managed run that already started is billed only through its stop time.
Run From A Build
Add Maestro flows under `.maestro`, then ask Mach to queue tests after a successful build. Android emulator runs need an APK that includes emulator support.
Build and queue Maestro
mach build --platform android --profile staging --maestro --maestro-flows .maestro
Queue against latest matching build
mach maestro --latest --platform android --profile staging --maestro-flows .maestro
Queue against a specific build
mach maestro --build-id <buildId> --maestro-flows .maestro --maestro-retries 1
iOS session persistence
If your simulator app stores authentication tokens or encryption keys in Keychain, see Configuration → Simulator Keychain and encrypted sessions for the optional ios.simulatorSigning profile setting. Rebuild before testing. After login, stop and relaunch without clearing app data and assert the authenticated screen remains visible before any flow logs in again. This verifies session restoration instead of hiding a failure with a second login.
Local Or CI Usage
Run locally on a connected emulator
mach maestro --local --build-id <buildId> --maestro-flows .maestro
Run authenticated local flows
mach maestro --platform ios --local --maestro-flows .maestro-authenticated --maestro-env MAESTRO_TEST_EMAIL --maestro-env MAESTRO_TEST_PASSWORD
Wait for pass/fail in CI
mach maestro --build-id <buildId> --maestro-flows .maestro --wait --wait-timeout 60
Use `--wait` when a pipeline should fail immediately if the UI smoke test fails. Without `--wait`, Mach queues the run and the dashboard continues updating as the runner reports progress.
Run web E2E locally or in existing CI
mach web test --project chromium --trace on-first-retry
`mach web test` automatically provisions the project's local Playwright dependency and Chromium when needed. It creates a test run in E2E Tests, but the browser, code, test output, screenshots, videos, traces, reports, and environment values never leave the local runner. Use `--no-setup` on a CI image that already has Playwright and its browser installed.
Common Fields
Engine
The test engine used for the run: Maestro for managed mobile UI automation or Playwright for local web E2E.
Test definition
Maestro shows the uploaded flow folder or files, usually .maestro. Playwright shows its configuration filename and a count of explicitly selected test files, never their source.
Target
Maestro shows the managed emulator or simulator selected for the run. Playwright shows the configured browser project and local target origin when supplied.
Billing
Managed Maestro runs are billed by runner time after completion. Local Playwright runs use no Mach runner and have no Mach charge.
Previous
Store submission
Next
Configuration