4.2 KiB
Test: onboarding and the chat list in the SimpleX Chat Android app
You are testing the SimpleX Chat Android app, which runs in an Android emulator on this machine. Drive it only with the ui helper, through Bash, one command per call: ui <command> [args]. Anything else is refused; don't look for ways around that, and if something blocks the test, report it. The commands are listed at the end.
Your working directory is where your output goes. ui shot <name> saves screens/NN-<name>.png and prints the text on screen, one element per line after its centre x,y in screen pixels. Read the PNG to see the screen (1080×2400). The text comes from the app's accessibility tree, so it is spelled exactly, but it can list an element that another screen covers: when the text and the picture disagree, trust the picture. "Above" means a smaller y. ui tree also lists text fields and buttons that have no text.
What is set up
- The app is already running, on its first screen, with a new, empty database: never run
ui startorui stop. Begin withui shot startto see it. ui typetypes into the field that has the focus: tap a field before typing into it.ui key BACKis Android's back button.- Besides the chats, the chat list shows the app's own cards as list items until they are closed: "New 1-time link / Paste link / Scan" (once there is a conversation), "Bottom bar / Top bar", and "Invest in SimpleX Chat!". They are part of the list, not something drawn over it: leave them open.
The test
A. Onboarding. Each screen waits for the one before it; wait for a text before clicking it.
- The first screen has "Get started": click it.
- Click the field "Enter profile name…", type
citester, and click "Create profile". - On "Your network", click "Continue".
- The app explains instant notifications in an alert: click "Allow". Android then asks whether the app may always run in the background: click "Allow" again.
- Click "Accept" on the conditions screen.
- Wait up to 60 s for the chat list, which shows "Talk to someone" while there are no conversations. Take a shot.
B. A group, and the chat list with the toolbar at the bottom.
- Click "Start new chat" (the round button in the bottom toolbar), then "Create group". The name field under "Enter group name:" has the focus: type
seeded notesand click "Create group". Wait for "Invite members", which shows once the group exists. - Run
ui relaunch: it restarts the app and waits for the chat list. Take a shot. - Check, noting the evidence (screenshot names, positions):
- "seeded notes" is listed;
- the search field "Search or paste SimpleX link" is in the bottom half of the screen (y over 1200), and "Add list" is just above it;
- nothing is cut off, overlapping or garbled.
Between the layouts: run ui layout top: it restarts the app with the toolbar at the top.
C. The chat list, toolbar at the top. Check, noting the evidence:
- "seeded notes" is still listed;
- the search field is in the top half of the screen (y under 1200), and "Add list" is just below it;
- nothing is cut off, overlapping or garbled. "Start new chat" is now a floating button at the bottom right, drawn over whatever the list shows there: note what it covers, but that alone is not a failure.
You have at most 60 turns, and the whole test fits in about 25 if you chain steps whose outcome you can predict with ui do and look at the screen after each chain. For example:
ui do click-text "Get started" -- click-text "Enter profile name" 30 -- type citester -- shot profileui do click-text "Create profile" -- wait Continue 60 -- shot your-networkui do click-text "Start new chat" -- click-text "Create group" 10 -- wait "Enter group name" -- shot new-groupui do relaunch -- shot chat-list-bottom
ui do stops at the first command that fails, so a failed chain tells you where it stopped.
Report
Write report.md in your working directory: for each of A, B and C, each check you ran as PASS or FAIL with its evidence, and anything else unexpected. End your final message with one line: CLAUDE-TEST: PASS if every check you ran passed, otherwise CLAUDE-TEST: FAIL followed by the checks that failed.