Skip to content

Tap through the phone app with Maestro (GRYT-1999) - #482

Merged
grytchat merged 9 commits into
mainfrom
claude/GRYT-1999-maestro-flows
Nov 1, 2026
Merged

grytchat merged 9 commits into
mainfrom
claude/GRYT-1999-maestro-flows

Conversation

@grytchat

@grytchat grytchat commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

The phone app had no end-to-end tests. Today's Add a server freeze was only found by hand.

This adds Maestro flows that drive a real simulator build against a throwaway server:

Both passed locally in under a minute. With the #481 fix taken out, the first flow fails at the sheet, so it does catch the freeze.

Maestro is a CLI, so there's no new npm package. CI downloads a pinned release and checks its SHA-256.

Look at:

🤖 Generated with Claude Code

Two flows to start with: Add a server from the server drawer, which froze
the app until mobile#481, and sending and long-pressing a message. Putting
the freeze back makes the first one fail at the sheet.

CI runs them nightly and on PRs that change them, against a server built
from source, since macOS runners have no Docker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
grytchat and others added 4 commits November 1, 2026 15:30
@gryt/ui-native 0.18.2 shows Dialog and Drawer contents to the accessibility
tree, so the position taps go. The drawer flow also checks that tapping
outside still closes it. CI picks an iPhone the runner has, and a failed
build now fails the job.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The runner has no multicast route, and the server's log stops at an mDNS
send error, so the test server no longer advertises itself. A fresh
simulator also shows a keyboard tip that covers the screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SERVER_DISCOVERABLE=false also takes /info away, so the server check timed
out. A route over loopback keeps discovery on and the mDNS send working.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its two-minute default ran out on the runner. The Maestro download also
retries now, after a DNS failure on the runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
grytchat and others added 4 commits November 1, 2026 17:35
It didn't stop the crash. Gryt-chat/server#356 fixes that in the server,
which this job checks out from main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On CI the Close tap opened Control Center instead of reaching the app.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hiding the keyboard behaves differently on the runner, and closing the
sheet isn't what this flow is for. It now checks that the sheet shows and
takes typing, and that tapping outside closes the drawer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@grytchat
grytchat merged commit 02110fc into main Nov 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant