Journeys the first scripts will cover (Phase 6) #
Source of the journey ids: docs/qa-journey-test-plan.md in the mallbucks repo (root/mallbucks); results in docs/qa-results/. The expected
texts below are strings the live app shows today (checked in the QA logs and the code on 2026-10-09). Selectors are not decided here: Phase 6
writes them against the live UI, preferring role+name, then text, and asks the app for data-testids where those are fragile.
Accounts: all scripts run as a dedicated test account (see PLAN.md section 9). Amounts are testnet MALLBUCKS.
send: J-09, J-13 (and the balance part of J-31) #
Pre-state: test account signed in, wallet holding at least 5 MALLBUCKS, recipient @distributed.camp registered with a wallet. Until P5-2 creates the throwaway recipient (its handle is listed in docs/accounts.md), the recipient is @distributed.camp; the scripts must switch to the throwaway one.
| Step (intent) | Action | Expected |
|---|---|---|
| remember the starting balance | capture the balance on the home screen | a number |
| open the send flow | click Send | search box appears |
| find the recipient | type "alex", pick @distributed.camp |
the row shows the handle and no "No wallet" label (J-12) |
| enter an amount | type 1 | |
| review before sending | click the button that opens the review | the review box reads 1 MALLBUCKS (never "1 MUCK", J-13) |
| send | click Send | a sending state, then the success screen |
| balance drops | read the balance | starting balance minus 1, within 5 s, without a refresh (#115) |
| shows in Activity | open Activity | a "Sent to" row for -1 MALLBUCKS with the wallet label (#117) |
gift: J-36, J-37, J-39, J-40 #
Pre-state: test account signed in with the posting permission (the "Posting to Bluesky is off for this sign-in" notice must not be showing).
| Step | Action | Expected |
|---|---|---|
| create a gift | Send a gift, amount 1, Create gift | "Your red envelope is ready" and a link |
| share to Bluesky | click Share to Bluesky | "Posted to your Bluesky feed!" |
| the post exists | open the account's posts on bsky.app | the newest post contains the gift link and the link is clickable (a link feature) |
| claim as another account | open the gift link in a second profile | the claim page says "A gift from @", not a DID (#132) |
| claim | click Claim gift | "on the way to your wallet"; the balance rises by 1 within 5 s |
| second claim | open the link again | "Someone already claimed this gift." and, when signed out, "You are not signed in on this device." |
Negative variant (run against a session without the permission): the notice with Allow posting shows on the form; the done screen offers Copy link and no Share button (#131).
shop: J-24 to J-28 #
Pre-state: a published listing with an uploaded file in the throwaway seller's shop (a fixed test listing, found by exact handle); test account signed in with at least 2 MALLBUCKS.
| Step | Action | Expected |
|---|---|---|
| the directory lists shops with items | open shops.malldao.xyz | the shop card shows, with an "N items" chip (stores#6) |
| open the shop | click the card | the listings show, prices in Mallbucks |
| buy now | click Buy now on one item | an "Opening checkout" spinner at once, then the checkout with the item name, the amount, status "Waiting for payment" (stores#15) |
| pay in the wallet pop-up | click Sign in with Mallbucks to pay; switchTab to the pay window |
seller, item and amount shown; click Pay |
| back to the checkout | the pop-up closes itself; switchTab back |
status "Payment received", then "Ready to download" within 2 minutes |
| download | click Download your file | a file is saved (J-28); name and size match the listing |
Negative variant: put a response-rewriting proxy in front of production that changes one named string (for example "1 MALLBUCKS" to "1 MUCK" in the review box; the string no longer exists in the app, so a proxy is the way to produce it) and confirm the report fails at the right step with the right "found" text.