Release: develop -> main - #146
Merged
Merged
Conversation
Adds src/__tests__/components/Onboarding-create.test.tsx (10 tests). Onboarding.tsx is 869 LOC; SetPassword.test.tsx (password stage) and Onboarding-restore.test.tsx (restore path) leave the SeedFlow create path + Welcome routing uncovered. Coverage on Onboarding.tsx rises from ~57 % to ~80 %+ on lines. Covers: - Welcome render: heading + three benefit cards + both CTAs - Welcome → SeedFlow routing on CREATE WALLET (PRD bundle); Back via StepHeader returns to Welcome - SeedFlow stages: blurred grid + Tap-to-reveal overlay → revealed mnemonic + "I've written it down" → "Continue" confirm → password stage - Full create happy path: account written, authMethod='seed', balance fetched - Non-fatal balance error: restore still completes, balance null - create() error rollback: createAccountFromMnemonic throws → stage rolls back to password, seed-error visible, no store writes
…direct (#106) Adds src/__tests__/app/receive.test.tsx (7 tests). ReceivePage was at 0 % unit coverage — e2e/08-receive.spec.ts locks in the styled output but not the copy-feedback timer or the 100 ms grace window on the no-account redirect. Covers: - funded render: heading, QR, address card, copy button; back link routes to / - copy feedback: button flips to "Copied" + data-copied="true"; zk-form address actually lands in happy-dom's clipboard - revert: 1.5 s setTimeout collapsed → button reverts to "Copy address" (targeted setTimeout stub preserves other timers) - no-account redirect: placeholder render; router.replace('/') after 100 ms grace; suppressed when account lands inside grace
…107) Adds src/__tests__/app/settings.test.tsx (13 tests). SettingsPage was at 0 % unit coverage. e2e/05-disconnect.spec.ts covers the styled output but cannot inspect Zustand stores from Playwright, so the store-side effects of the disconnect flow were unverified — and the authMethod → recovery-copy mapping was a build-time output not asserted anywhere. Covers: - header + sections: heading, network badge, three always-on sections; badge hidden when networkName is empty; Privacy section gated by ADDRESS_ROTATION OR TOR_ROUTING - recovery copy: seed → 12-word phrase text; passkey → passkey-derived text; null → "Not configured" - disconnect flow: accept → wallet + auth stores wiped; dismiss → stores untouched; button hidden when no account - no-account redirect: router.replace('/') after 100 ms grace; suppressed when account lands inside - Toggle interaction (Auto-lock card): defaultOn + disabled → click is a no-op
…148) The staging → develop flow introduced in #138 left every staging-bound PR without CI: `ci.yaml` and `audit-button-coverage.yml` both filtered `pull_request.branches: [develop]`, which silently skipped any PR opened against a non-develop base. The bootstrap PR #138 only exercised the develop-bound trigger so the gap stayed invisible until the first staging-bound PR (#147, rebased E2E toast pipeline) tried to run. Both workflows now use the node-side trigger shape: pull_request: types: [opened, synchronize, reopened, ready_for_review] — no `branches:` filter, so CI runs against every PR regardless of target branch. Stacked-PR shapes (feature/* → staging → develop, or deeper) all get a pre-merge gate at every layer. `push: develop` is preserved as the authoritative post-merge gate; the audit workflow keeps its `paths:` scope so unrelated file changes still skip cleanly. Targets develop directly because this is a bootstrap fix for the new staging flow — there is currently no way to land it through staging without CI silently skipping it.
* Add E2E specs for ApiError → German toast pipeline Three screenshot baselines for the 4xx/5xx error paths introduced by server PR #31 and surfaced by issue #99: - 422 Insufficient funds → 'Nicht genug Guthaben…' - 404 Unknown account → 'Dieser Account ist auf dem Server…' - 500 prove failed → 'Beweisgenerierung fehlgeschlagen…' Plus a text-only assertion for the 'Serverfehler <status>: <raw>' fallback so an unmapped server string can never regress into a raw Error.message blob. The mocks use page.route() to return a deterministic structured body, which avoids the unmount-on-Confirm race that retired the old err-banner snapshot in 07-send.spec.ts. New spec is staged behind E2E_REGENERATING in playwright.config.ts; once the regenerate-visual- baselines workflow commits the linux PNGs, the testIgnore line for 13-send-server-errors.spec.ts must be removed in a follow-up commit. * fix: block service worker + context-level route for /api/send mock First regen run timed-out on all four 13-server-error tests with 'Serverfehler 200: legacy: success false with no error string' — the PWA service worker was passing /api/send through to DEV before page.route() could intercept, so the real response (200 with no error field) leaked into the legacy-normalisation path. - test.use({ serviceWorkers: 'block' }) takes the SW out of the request path entirely - page.context().route(/\/api\/send$/, ...) registers the mock at the context level with a regex match — bullet-proof against cross-origin URL composition and any future SW edge case. * Land regenerated baselines, activate 13-send-server-errors - Pull 3 chromium-linux baselines from bot branch e2e/regen-baselines-26058684086 (regen run 26058684086): the new 13-server-error-insufficient-funds / unknown-account / prove-failed PNGs are now committed alongside the spec. - Remove 13-send-server-errors.spec.ts from playwright.config.ts testIgnore so the regular CI run executes it against the committed baselines. - Revert the temporary --grep 'issue #99' narrow in regenerate-visual-baselines.yml back to the full --grep-invert Accessibility scope. The narrow was a workaround for a pre- existing DEV FEATURES.FAUCET regression that broke 06-balance::balance-zero-empty-banner; that test is unrelated to this PR and should be reconciled separately. * docs(handbook): add SPEC 13 section for ApiError toast tests scripts/sync-handbook-baselines.mjs fails the prebuild if any e2e chromium-linux baseline isn't referenced from public/handbook/. Adds a spec-13 section to both index.html and de/index.html describing the four new tests (3 visual + 1 no-shot text assertion) and pointing to the freshly generated PNGs.
Promote: staging -> develop
Contributor
Author
[OK] Button-Inventory-Audit — all clearChecked 72 testid(s) in |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automatic Release PR
Commits: 1 new commit(s)