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)
/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 /toolsdiagram 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).
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.
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.
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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:
/toolsnamed-outlet tool (~25 tools) individually/**) spec/links/:idvia list click, sponsor profile)Progress — angular PR #104
Extends the anonymous walk past route-loads:
/toolsnamed-outlet walk — all 16 pure dev utilities opened individually (mount + no pageerror + no login bounce). The 8 shared-LanguageRunnerplaygrounds are scoped out on purpose (RUNNER_TOOL_IDSin the manifest): core-five anon play is covered byanonymous-lesson.spec.ts(#332), andregex/sql-playground/x86-playgroundredirect 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.**) spec — catch-all renders the not-found page; home link routes back.Bug found & fixed by the walk: the
/toolsdiagram tool threwCannot read properties of undefined (reading 'nativeElement')on load —ReteDiagramComponent's#reteContainer@ViewChildwasstatic: trueunder a*translocostructural directive. Fixed (non-static query + guard). Same class as #308/#310.Still open on P1:
/links/:idvia list click, sponsor profile) — needs seeded data / backend, deferred with the target-environment call (P0).New test ids
tools-shell/not-foundadded per the P2 (#315) convention. Full suite after the change: 48 passed, 2 skipped (backend-gated).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/:idvia list click, sponsor profile, geography country/state) — needs seeded data in the live environment. Leaving open to track that.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.Resolved — final item landed in spikersoft-angular PR #110 (merged to
master): click-through coverage for/links/:id,/geography/:countryCode, and/sponsor/:profileIdvia 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.
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.