Skip to content

test: reconcile frontend testing/CI backlog (#1424-#1427) - #1429

Open
zeekman wants to merge 1 commit into
solutions-plug:mainfrom
zeekman:testing/1424-1427-frontend-ci-reconciliation
Open

test: reconcile frontend testing/CI backlog (#1424-#1427)#1429
zeekman wants to merge 1 commit into
solutions-plug:mainfrom
zeekman:testing/1424-1427-frontend-ci-reconciliation

Conversation

@zeekman

@zeekman zeekman commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

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 real frontend/ 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.ts already had isolated coverage for form validation, CTA, nav, scroll, and external links. Added a new isolated Status Announcements block covering the app's actual toast-equivalent — the aria-live status region announced on newsletter submit. No Modal or Table components exist in this app to test.

#1425 — axe-audit script

frontend/scripts/axe-audit.js now loops over an explicit ROUTES list (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.ts covering success-path parsing, error-message mapping (JSON error body, non-JSON fallback to statusText, generic HTTP {status} fallback), and empty/204-body handling — all via a mocked global.fetch, no real network or admin key needed. There's no separate public-client.ts in this repo (one client module serves everything), so no public-client.test.ts was added.

#1427 — wire CI back up

Reconciled the six referenced workflow files against the actual frontend/ structure:

  • Generated the missing frontend/package-lock.jsonaccessibility.yml already assumed it for npm ci, but it never existed, so that workflow was broken.
  • Added frontend/src/components/__tests__/LandingPage.keyboard.test.tsx so accessibility.yml's --testPathPattern="keyboard" job has a matching test to run (previously zero matches).
  • Added the three workflow files that didn't exist yet: e2e-staging.yml, license-check.yml, dependency-scan.yml, plus .github/dependabot.yml — all 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 (needed for e2e-staging.yml to make sense).
  • Left test.yml untouched — it's pure Rust/contracts CI and doesn't reference frontend/ at all, contrary to the issue's premise.

Notes

  • Test suites were not executed for this change (skipped per request).
  • npm install --package-lock-only was run to generate the lockfile; no dependency versions were otherwise changed.

…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
zeekman force-pushed the testing/1424-1427-frontend-ci-reconciliation branch from 09a1b7e to 2d37b6f Compare August 27, 2026 10:56
@drips-wave

drips-wave Bot commented Aug 27, 2026

Copy link
Copy Markdown

@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! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant