Skip to content

ci(e2e): run expo native e2e flows with agent-device's maestro engine - #9443

Closed
wobsoriano wants to merge 2 commits into
mainfrom
rob/expo-e2e-agent-device
Closed

ci(e2e): run expo native e2e flows with agent-device's maestro engine#9443
wobsoriano wants to merge 2 commits into
mainfrom
rob/expo-e2e-agent-device

Conversation

@wobsoriano

Copy link
Copy Markdown
Member

Description

Replaces the Maestro CLI in the expo native e2e workflow with agent-device, whose test --maestro command runs our existing Maestro flow YAML through its own engine (XCTest on iOS, adb on Android) with a resident daemon instead of a fresh JVM per invocation. Unlike the Argent migration (#9440), the flows stay in the Maestro format, no port to a new flow language.

Flow changes are minimal and behavior-preserving: launchApp.clearKeychain is unsupported by the engine (fails loudly at parse), so the runner script resets the simulator keychain up front instead, and the typed-email visibility assert is dropped because the field's floating label plus value truncation make it unmatchable under this engine's Android accessibility tree (a mangled identifier is still caught by the next screen's wait inside the retry).

Runner scripts collapse into a single agent-device test 'flows/*.yaml' --maestro invocation per platform, with --retries 1 and --artifacts-dir replacing the hand-rolled per-flow retry loop and debug-output plumbing.

Validated locally against the built SDK 57 fixture: iOS passes 6/6 first-attempt in 5m15s (the platform where Argent is hard-blocked). Android validation is still iterating locally; this draft exists to compare CI behavior and runtime against both the Maestro baseline and #9440.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • other: CI / e2e tooling

Replaces the Maestro CLI with agent-device (callstack/agent-device), whose
test --maestro command runs the existing flow YAML through its own engine
(XCTest on iOS, adb on Android) with a resident daemon instead of a JVM
per invocation. Flow edits: launchApp.clearKeychain is unsupported (the
runner script resets the simulator keychain instead), and the typed-email
visibility assert is dropped because the field's floating label and value
truncation make it unmatchable under this engine's Android tree.
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clerk-js-sandbox Ready Ready Preview Aug 13, 2026 5:59pm
swingset Ready Ready Preview Aug 13, 2026 5:59pm

Request Review

@changeset-bot

changeset-bot Bot commented Aug 13, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2bdf3d4

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new

pkg-pr-new Bot commented Aug 13, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@9443

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@9443

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@9443

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@9443

@clerk/electron

npm i https://pkg.pr.new/@clerk/electron@9443

@clerk/electron-passkeys

npm i https://pkg.pr.new/@clerk/electron-passkeys@9443

@clerk/eslint-plugin

npm i https://pkg.pr.new/@clerk/eslint-plugin@9443

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@9443

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9443

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@9443

@clerk/express

npm i https://pkg.pr.new/@clerk/express@9443

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@9443

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@9443

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@9443

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@9443

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@9443

@clerk/react

npm i https://pkg.pr.new/@clerk/react@9443

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@9443

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@9443

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@9443

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@9443

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@9443

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@9443

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@9443

commit: 2bdf3d4

@wobsoriano wobsoriano closed this Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant