# 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-testid`s 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.