[E2E P1] Anonymous walk — every public route + primary actions #314

Closed
opened 2026-07-01 21:16:41 +00:00 by spikerj · 5 comments
Owner

Phase P1 of epic #307.

Scope: every public route loads with no uncaught page errors, primary nav works, key CTAs render, /tools + every named-outlet dev tool, 404 route. No backend mutations.

Status: route-load coverage DONE (25/25 in PR #90; found #308/#309/#310 on the first runs). Remaining:

  • Primary-action coverage per public page (click nav menus, open registration overlay, tool interactions)
  • Walk each /tools named-outlet tool (~25 tools) individually
  • 404 (/**) spec
  • Click-through coverage for id-dependent routes (/links/:id via list click, sponsor profile)
  • No-console-error assertion tightened once #311/#312 deploy (currently only pageerrors hard-fail)
Phase P1 of epic #307. **Scope:** every public route loads with no uncaught page errors, primary nav works, key CTAs render, `/tools` + every named-outlet dev tool, 404 route. No backend mutations. **Status: route-load coverage DONE** (25/25 in PR #90; found #308/#309/#310 on the first runs). Remaining: - [ ] Primary-action coverage per public page (click nav menus, open registration overlay, tool interactions) - [ ] Walk each `/tools` named-outlet tool (~25 tools) individually - [ ] 404 (`/**`) spec - [ ] Click-through coverage for id-dependent routes (`/links/:id` via list click, sponsor profile) - [ ] No-console-error assertion tightened once #311/#312 deploy (currently only pageerrors hard-fail)
spikerj added the enhancement label 2026-07-01 21:16:41 +00:00
Author
Owner

Progress — angular PR #104

Extends the anonymous walk past route-loads:

  • /tools named-outlet walk — all 16 pure dev utilities opened individually (mount + no pageerror + no login bounce). The 8 shared-LanguageRunner playgrounds are scoped out on purpose (RUNNER_TOOL_IDS in the manifest): core-five anon play is covered by anonymous-lesson.spec.ts (#332), and regex/sql-playground/x86-playground redirect signed-out visitors to login by design (only core languages have an anonymous curriculum — LanguageRunner.anonTrackLanguage). These belong to P4 (#316) with an authed fixture.
  • 404 (**) spec — catch-all renders the not-found page; home link routes back.
  • Primary-action coverage (backend-free) — runtime language switch + mobile nav drawer.

Bug found & fixed by the walk: the /tools diagram tool threw Cannot read properties of undefined (reading 'nativeElement') on load — ReteDiagramComponent's #reteContainer @ViewChild was static: true under a *transloco structural directive. Fixed (non-static query + guard). Same class as #308/#310.

Still open on P1:

  • Click-through coverage for id-dependent routes (/links/:id via list click, sponsor profile) — needs seeded data / backend, deferred with the target-environment call (P0).
  • Tighten the no-console-error assertion once #311/#312 deploy (still pageerror-only).

New test ids tools-shell / not-found added per the P2 (#315) convention. Full suite after the change: 48 passed, 2 skipped (backend-gated).

### Progress — angular PR #104 Extends the anonymous walk past route-loads: - [x] **`/tools` named-outlet walk** — all 16 pure dev utilities opened individually (mount + no pageerror + no login bounce). The 8 shared-`LanguageRunner` playgrounds are scoped out on purpose (`RUNNER_TOOL_IDS` in the manifest): core-five anon play is covered by `anonymous-lesson.spec.ts` (#332), and `regex`/`sql-playground`/`x86-playground` redirect signed-out visitors to login **by design** (only core languages have an anonymous curriculum — `LanguageRunner.anonTrackLanguage`). These belong to P4 (#316) with an authed fixture. - [x] **404 (`**`) spec** — catch-all renders the not-found page; home link routes back. - [x] **Primary-action coverage (backend-free)** — runtime language switch + mobile nav drawer. **Bug found & fixed by the walk:** the `/tools` **diagram** tool threw `Cannot read properties of undefined (reading 'nativeElement')` on load — `ReteDiagramComponent`'s `#reteContainer` `@ViewChild` was `static: true` under a `*transloco` structural directive. Fixed (non-static query + guard). Same class as #308/#310. **Still open on P1:** - [ ] Click-through coverage for id-dependent routes (`/links/:id` via list click, sponsor profile) — needs seeded data / backend, deferred with the target-environment call (P0). - [ ] Tighten the no-console-error assertion once #311/#312 deploy (still pageerror-only). New test ids `tools-shell` / `not-found` added per the P2 (#315) convention. Full suite after the change: 48 passed, 2 skipped (backend-gated).
Author
Owner

Console-error tightening landed: spikersoft-angular PR #106 (merged). All five anonymous specs hard-fail on unexpected console errors (narrow allowlist in e2e/support/fixtures.ts), and the tightened assertion caught + fixed two real bugs (#342, #343 — both closed).

Only one item remains on P1: click-through coverage for id-dependent routes (/links/:id via list click, sponsor profile, geography country/state) — needs seeded data in the live environment. Leaving open to track that.

Console-error tightening landed: spikersoft-angular PR #106 (merged). All five anonymous specs hard-fail on unexpected console errors (narrow allowlist in `e2e/support/fixtures.ts`), and the tightened assertion caught + fixed two real bugs (#342, #343 — both closed). Only one item remains on P1: **click-through coverage for id-dependent routes** (`/links/:id` via list click, sponsor profile, geography country/state) — needs seeded data in the live environment. Leaving open to track that.
Author
Owner

Last item has a PR: spikersoft-angular #110 — id-dependent click-throughs for /links/:id, /geography/:countryCode, and /sponsor/:profileId, driven through their live listing pages (each skips when the live list is empty). Full anonymous project: 56 passed / 2 skipped. P1 closes when #110 merges.

Last item has a PR: spikersoft-angular #110 — id-dependent click-throughs for `/links/:id`, `/geography/:countryCode`, and `/sponsor/:profileId`, driven through their live listing pages (each skips when the live list is empty). Full anonymous project: **56 passed / 2 skipped**. P1 closes when #110 merges.
Author
Owner

Resolved — final item landed in spikersoft-angular PR #110 (merged to master): click-through coverage for /links/:id, /geography/:countryCode, and /sponsor/:profileId via their live listing pages, with skip-on-empty semantics and new P2-convention test ids.

P1 complete. The anonymous surface is fully walked: 31 public routes + 16 utility tools + 404 + primary actions + 3 id click-throughs, hard-failing on unexpected console errors, blocking CI. Suite: 56 passed / 2 backend-gated skips. Closing.

Resolved — final item landed in spikersoft-angular PR #110 (merged to `master`): click-through coverage for `/links/:id`, `/geography/:countryCode`, and `/sponsor/:profileId` via their live listing pages, with skip-on-empty semantics and new P2-convention test ids. **P1 complete.** The anonymous surface is fully walked: 31 public routes + 16 utility tools + 404 + primary actions + 3 id click-throughs, hard-failing on unexpected console errors, blocking CI. Suite: 56 passed / 2 backend-gated skips. Closing.
Author
Owner

Board-sweep hygiene: the last comment already declared 'Resolved… P1 complete. Closing.' (PRs #104/#106/#110 merged) but the state was never flipped. Applying the close.

Board-sweep hygiene: the last comment already declared 'Resolved… P1 complete. Closing.' (PRs #104/#106/#110 merged) but the state was never flipped. Applying the close.
Sign in to join this conversation.