console plans: guardrails from a real run (2026-10-21): health none label and Sign in details Yes/No + Add details (old labels as altLabels, verify accepts both), finance boxes on step 1, App Privacy Additional Setup Required OK, verify from DOM input states (verify.capture, --from), Save + confirm before every Next on Play pages, IARC Digital purchases boxes and an exact-label in-page helper that refuses patterns and blanket answers; review contact found in parent folders, the profile and more key shapes with the files checked listed; one-line errors for missing required values (Args.required); pitfalls 86-87, tests
This commit is contained in:
parent
a6dab8f3aa
commit
335a4124ab
23 changed files with 486 additions and 74 deletions
|
|
@ -117,8 +117,9 @@ the UI shows. This is the primary mode.
|
|||
the Category dropdown's `[role=option]` with exactly the category name (`play.category`) > Save.
|
||||
- **Play App content** (2026-10-12): `/app-content/overview`; each card has a button aria-label="Start <Name>
|
||||
declaration". Pages: privacy-policy, ads-declaration, testing-credentials (Sign in details), ad-id-declaration,
|
||||
government-apps, finance (2 steps; the last has "My app doesn't provide any financial features"; Next, Save),
|
||||
health (2 steps; the last step's "Other" box was the no-features answer on that run; Next, Save),
|
||||
government-apps, finance (2 steps, 2026-10-21: the checkboxes, "My app doesn't provide any financial features"
|
||||
among them, are on step 1; step 2 is an information page only), health (2 steps; 2026-10-21: the last step offers
|
||||
"My app does not have any health features", tick that; only an older page without it took "Other"),
|
||||
target-audience-content (age checkboxes; with 13+ only it went straight to the Summary, no appeal question; Save),
|
||||
content-rating-overview > "Start questionnaire" > content-rating-iarc-questionnaire. Each card's Save is yours
|
||||
(2026-10-13: nothing goes to Google before the owner's "Send changes for review").
|
||||
|
|
@ -131,6 +132,21 @@ the UI shows. This is the primary mode.
|
|||
terrorism, crimes). The answers come from `console.contentRating.answers` and `.details`, `products[].randomRewards`
|
||||
and `social`. Save, then Next to the Summary with per-authority ratings; its button is **Save**, not Submit: yours
|
||||
(a declaration save). Example: PEGI 7, ESRB E10+, USK 12, ClassInd 18 (paid random items), Google Play 7+.
|
||||
- **Save after every page** (Play, 2026-10-21): on a multi-step Play form with a Save next to Next (the IARC
|
||||
questionnaire, finance, target audience), answer the page, press **Save**, wait for "Your changes have been saved",
|
||||
and only then press Next. The plan steps and the rule line say so on every such step.
|
||||
- **IARC Digital purchases** (2026-10-21): Yes on "Digital purchases" reveals checkboxes ("Purchases of digital goods"
|
||||
and others); tick them first, the loot-box and trading follow-ups show only after that. Answer every IARC question
|
||||
by its exact console label: a keyword helper answered this one No because its text also mentions "cash rewards". The
|
||||
in-page helper refuses patterns, radios without their exact question (`within`) and blanket group answers.
|
||||
- **Sign in details** (2026-10-21): the first question reads "Is any part of your app restricted?" with Yes / No; the
|
||||
dialog button is "Add details" (older pages: the long radio labels and "Add instructions"; the plan keeps both).
|
||||
- **App Privacy "Additional Setup Required"** (2026-10-21): after saving the data types this message appears; its OK
|
||||
sometimes opens the first type's setup dialog by itself. That dialog IS the first type's setup: carry on from step 1
|
||||
there, do not press its Set Up again.
|
||||
- **Verify reads input states** (2026-10-21): Yes / No radios and unticked boxes are not in page text. Run the plan's
|
||||
`verify.capture` snippet (it returns every radio / checkbox with aria-checked, checked or aria-selected as JSON) and
|
||||
pipe it to `storebound console verify <form> --from -`; the page-text path stays for text answers.
|
||||
- **App Privacy Publish** (2026-10-12): a `<dialog>` "Publish Your App Privacy Responses?" with Cancel / Publish (the
|
||||
owner's); afterwards the page shows "Published a few seconds ago by …", which `console verify` reads.
|
||||
- **Play first production release** (2026-10-12): countries are console-only (`edits.countryAvailability` is
|
||||
|
|
|
|||
|
|
@ -1049,3 +1049,30 @@ that fails without the fix (see CONTRIBUTING.md).
|
|||
smaller than asked, point `STOREBOUND_CHROME` at a current Chromium or record with `--source folder`.
|
||||
- **Guard:** `recordSize` / `captureShortfall` in `cli/shots/devices.ts` (first frame size checked per clip, plus a
|
||||
frames-per-second warning under 20); `tests/video.test.ts`.
|
||||
|
||||
## 86. Console plans behind the live pages (Play App content, IARC, App Privacy; 2026-10-21)
|
||||
- **Symptom:** on a real run the health card offered "My app does not have any health features" while the sheet said
|
||||
"Other" and verify said "not found"; Sign in details asked "Is any part of your app restricted? Yes / No" with an
|
||||
"Add details" button; finance had its boxes on step 1 (step 2 is information only); App Privacy's "Additional Setup
|
||||
Required" OK opened the first type's setup by itself; verify could not read Yes / No radios from text; a page
|
||||
answered and then left with Next lost its answers; a keyword helper answered IARC "Digital purchases" No because its
|
||||
text mentions "cash rewards", so the digital goods boxes and the loot-box / trading follow-ups never showed.
|
||||
- **Do:** follow the plan's labels (new label first, `altLabels` as the fallback). On every Play page with a Save next
|
||||
to Next: Save, wait for "Your changes have been saved", then Next. In App Privacy, a setup dialog that opened by
|
||||
itself after the OK is the first type's: carry on there. Verify with the plan's `verify.capture` JSON
|
||||
(`console verify <form> --from -`). Answer IARC by exact console labels only, never keyword sweeps over unanswered
|
||||
groups; tick "Purchases of digital goods" after Yes on "Digital purchases".
|
||||
- **Guard:** `cli/lib/console-play-plans.ts` (labels, step order, `INPUT_STATES_CAPTURE`), `saveBeforeNext` and the
|
||||
exact-label `IN_PAGE_LOOP` in `cli/lib/console-plan.ts`, `parseStates` in `cli/lib/console-verify.ts`;
|
||||
`tests/console-guardrails-1021.test.ts`.
|
||||
|
||||
## 87. "no review contact" with a reviewContact in the credentials file; whole help for a missing --version
|
||||
- **Symptom:** `apple review-details` said "no review contact" while `.storebound/credentials.json` had
|
||||
`reviewContact { firstName, lastName, phone, email }` (only the project folder's own file was read, under one key);
|
||||
`apple listing` without `--version` (or with `--version` and no value) printed usage text or went on with "true".
|
||||
- **Do:** update storebound. The contact is read from the project's file, the same file in parent folders up to the
|
||||
repository root and the credential profile, under `reviewContact` (also `apple.reviewContact`, `appReview.contact`,
|
||||
ASC field names); when none is found the error lists every file and key checked. Missing required values are one
|
||||
line: "--version <x.y.z> is required (storebound apple status shows the editable version)".
|
||||
- **Guard:** `findReviewContact` / `noContactMessage` in `cli/lib/credentials.ts`, `Args.required` in
|
||||
`cli/lib/args.ts` (listing, privacy-manifest, adhoc export, edit, resubmit); `tests/console-guardrails-1021.test.ts`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue