test: reconcile frontend testing/CI backlog (#1424-#1427) - #1429
Open
zeekman wants to merge 1 commit into
Open
Conversation
…tions-plug#1427) Closes solutions-plug#1424, solutions-plug#1425, solutions-plug#1426, solutions-plug#1427. These four issues assumed a much larger frontend rebuild (Design System primitives, split public/admin API clients, multi-route app, six CI workflows) than what actually exists in this repo — a single-page landing site with one API client and one route. Scoped each issue down to the real codebase instead of fabricating the assumed components: - solutions-plug#1424: added isolated e2e coverage for the app's actual toast-equivalent (the aria-live status region) alongside the existing isolated form/CTA/nav interaction suite. No Modal/Table components exist to test. - solutions-plug#1425: axe-audit.js now enumerates an explicit ROUTES list (currently just `/`) instead of a single hardcoded URL, and gates pass/fail on critical violations per the issue's acceptance criteria. - solutions-plug#1426: added client.test.ts covering success-path parsing, error-message mapping (JSON body, non-JSON fallback, generic HTTP fallback), and 204/empty-body handling for the client, mocking global.fetch (no network/admin key needed). No separate public-client.ts exists, so no public-client.test.ts was added. - solutions-plug#1427: reconciled the six referenced workflow files against the real frontend/ structure: - generated the missing frontend/package-lock.json (accessibility.yml already relies on it for `npm ci`, but it never existed) - added a keyboard-navigation test file so accessibility.yml's `--testPathPattern="keyboard"` job has something to run - added the three missing workflow files (e2e-staging.yml, license-check.yml, dependency-scan.yml) and .github/dependabot.yml, scoped to frontend's actual npm/package-lock.json setup - fixed playwright.config.ts to skip booting a local dev server when BASE_URL points at a staging deployment - left test.yml untouched: it's pure Rust/contracts CI and does not reference frontend/ at all, contrary to the issue's premise Test suites were not executed for this change (skipped per request).
zeekman
force-pushed
the
testing/1424-1427-frontend-ci-reconciliation
branch
from
August 27, 2026 10:56
09a1b7e to
2d37b6f
Compare
|
@zeekman Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
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.
Closes #1424, closes #1425, closes #1426, closes #1427.
Context
These four issues are items 122-125 of a 125-issue "frontend rebuild backlog" that assumes a much larger app than what actually exists in
frontend/today: Design System primitives (Modal/Toast/Table), a split public/admin API client, a multi-route app, and six CI workflow files. The realfrontend/here is a single-page landing site with one API client (src/lib/api/client.ts) and one route. Per discussion, each issue was scoped down to the real codebase rather than fabricating the assumed components.#1424 — interactions e2e suite
frontend/e2e/interactions.spec.tsalready had isolated coverage for form validation, CTA, nav, scroll, and external links. Added a new isolatedStatus Announcementsblock covering the app's actual toast-equivalent — thearia-livestatus region announced on newsletter submit. No Modal or Table components exist in this app to test.#1425 — axe-audit script
frontend/scripts/axe-audit.jsnow loops over an explicitROUTESlist (currently['/'], with a note to source it from the router once there's more than one route) instead of a single hardcoded URL, and gates pass/fail on critical violations specifically, per the issue's acceptance criteria.#1426 — API client contract tests
Added
frontend/src/lib/api/__tests__/client.test.tscovering success-path parsing, error-message mapping (JSON error body, non-JSON fallback tostatusText, genericHTTP {status}fallback), and empty/204-body handling — all via a mockedglobal.fetch, no real network or admin key needed. There's no separatepublic-client.tsin this repo (one client module serves everything), so nopublic-client.test.tswas added.#1427 — wire CI back up
Reconciled the six referenced workflow files against the actual
frontend/structure:frontend/package-lock.json—accessibility.ymlalready assumed it fornpm ci, but it never existed, so that workflow was broken.frontend/src/components/__tests__/LandingPage.keyboard.test.tsxsoaccessibility.yml's--testPathPattern="keyboard"job has a matching test to run (previously zero matches).e2e-staging.yml,license-check.yml,dependency-scan.yml, plus.github/dependabot.yml— all scoped to frontend's actual npm/package-lock.jsonsetup.playwright.config.tsto skip booting a local dev server whenBASE_URLpoints at a staging deployment (needed fore2e-staging.ymlto make sense).test.ymluntouched — it's pure Rust/contracts CI and doesn't referencefrontend/at all, contrary to the issue's premise.Notes
npm install --package-lock-onlywas run to generate the lockfile; no dependency versions were otherwise changed.