From 9e73048bd518e216fa558a1803620d555e5ef827 Mon Sep 17 00:00:00 2001 From: master <> Date: Sat, 7 Mar 2026 00:57:32 +0200 Subject: [PATCH] Keep trust-signing flows under setup routes --- ...E_playwright_setup_reset_iteration_loop.md | 3 + src/Web/StellaOps.Web/src/app/app.routes.ts | 2 +- .../evidence-audit-overview.component.ts | 6 +- .../context-chips.component.spec.ts | 2 +- .../evidence-mode-chip.component.ts | 3 +- .../src/app/routes/setup.routes.ts | 6 +- .../e2e/prealpha-canonical-full-sweep.spec.ts | 128 ++++++++++++++++++ 7 files changed, 141 insertions(+), 9 deletions(-) diff --git a/docs/implplan/SPRINT_20260306_003_FE_playwright_setup_reset_iteration_loop.md b/docs/implplan/SPRINT_20260306_003_FE_playwright_setup_reset_iteration_loop.md index b6365b8cc..257902964 100644 --- a/docs/implplan/SPRINT_20260306_003_FE_playwright_setup_reset_iteration_loop.md +++ b/docs/implplan/SPRINT_20260306_003_FE_playwright_setup_reset_iteration_loop.md @@ -79,6 +79,9 @@ Completion criteria: | 2026-03-06 | Follow-up mission-board QA found a semantic navigation defect: Playwright DOM capture showed both Reachability card actions (`View reachability`, `Deep analysis`) pointing at `/security/findings` even though the working canonical reachability surface is `/security/reachability`. | QA | | 2026-03-06 | Updated the mission-board Reachability card actions to target `/security/reachability` and added focused Playwright coverage for the canonical reachability route plus the mission-board click-through. | Developer (FE) | | 2026-03-06 | Verification: targeted Playwright slice passed locally (`npx playwright test tests/e2e/prealpha-canonical-full-sweep.spec.ts --grep \"route works: /security/reachability|mission board reachability card opens Reachability Center\"` -> 2/2 pass). Frontend bundle rebuilt, synced into `compose_console-dist`, and live authenticated Playwright confirmed the mission-board Reachability action now lands on `https://stella-ops.local/security/reachability` with `Reachability Center` visible. | QA | +| 2026-03-07 | Setup-surface QA found a canonical drift defect inside Trust & Signing: from `/setup/trust-signing`, Playwright showed in-page tabs rendering `/administration/trust-signing/*` hrefs, and clicking `Signing Keys` navigated to the retired administration tree instead of staying under setup. | QA | +| 2026-03-07 | Fixed Trust & Signing to load directly under `setup.routes.ts`, repointed evidence-related setup/trust links to `/setup/trust-signing`, and added Playwright coverage for the canonical setup trust route and tab navigation. | Developer (FE) | +| 2026-03-07 | Verification: the new setup trust-signing Playwright slice initially exposed a harness gap in trust API fixtures; added deterministic trust dashboard/key stubs to `prealpha-canonical-full-sweep.spec.ts`, then reran the slice successfully (`npx playwright test tests/e2e/prealpha-canonical-full-sweep.spec.ts --grep \"route works: /setup/trust-signing|setup trust-signing tabs stay under setup routes\"` -> 2/2 pass). Frontend bundle was synced into `compose_console-dist`, and live authenticated Playwright confirmed `Signing Keys` now keeps users on `https://stella-ops.local/setup/trust-signing/keys`. | QA | ## Decisions & Risks - Decision: this sprint stays inside `src/Web/StellaOps.Web` plus required sprint/doc updates only. diff --git a/src/Web/StellaOps.Web/src/app/app.routes.ts b/src/Web/StellaOps.Web/src/app/app.routes.ts index 727296e63..5299b99bf 100644 --- a/src/Web/StellaOps.Web/src/app/app.routes.ts +++ b/src/Web/StellaOps.Web/src/app/app.routes.ts @@ -202,7 +202,7 @@ export const routes: Routes = [ { path: 'bundles', redirectTo: '/releases/bundles', pathMatch: 'full' }, { path: 'replay', redirectTo: '/evidence/verify-replay', pathMatch: 'full' }, { path: 'proofs', redirectTo: '/evidence/capsules', pathMatch: 'full' }, - { path: 'trust-signing', redirectTo: '/administration/trust-signing', pathMatch: 'full' }, + { path: 'trust-signing', redirectTo: '/setup/trust-signing', pathMatch: 'full' }, { path: '**', redirectTo: '/evidence/overview' }, ], }, diff --git a/src/Web/StellaOps.Web/src/app/features/evidence-audit/evidence-audit-overview.component.ts b/src/Web/StellaOps.Web/src/app/features/evidence-audit/evidence-audit-overview.component.ts index 531a1f17e..0b40ba390 100644 --- a/src/Web/StellaOps.Web/src/app/features/evidence-audit/evidence-audit-overview.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/evidence-audit/evidence-audit-overview.component.ts @@ -120,7 +120,7 @@ type EvidenceHomeMode = 'normal' | 'degraded' | 'empty'; Evidence Bundles Replay & Verify Proof Chains - Trust & Signing + Trust & Signing @@ -158,7 +158,7 @@ type EvidenceHomeMode = 'normal' | 'degraded' | 'empty'; - + diff --git a/src/Web/StellaOps.Web/src/app/layout/context-chips/context-chips.component.spec.ts b/src/Web/StellaOps.Web/src/app/layout/context-chips/context-chips.component.spec.ts index 12847325e..a021eaa06 100644 --- a/src/Web/StellaOps.Web/src/app/layout/context-chips/context-chips.component.spec.ts +++ b/src/Web/StellaOps.Web/src/app/layout/context-chips/context-chips.component.spec.ts @@ -89,6 +89,6 @@ describe('ContextChipsComponent', () => { ); expect(evidenceLink).toBeTruthy(); - expect(evidenceLink?.getAttribute('href')).toContain('/administration/trust-signing'); + expect(evidenceLink?.getAttribute('href')).toContain('/setup/trust-signing'); }); }); diff --git a/src/Web/StellaOps.Web/src/app/layout/context-chips/evidence-mode-chip.component.ts b/src/Web/StellaOps.Web/src/app/layout/context-chips/evidence-mode-chip.component.ts index fc2e407f3..2132e3528 100644 --- a/src/Web/StellaOps.Web/src/app/layout/context-chips/evidence-mode-chip.component.ts +++ b/src/Web/StellaOps.Web/src/app/layout/context-chips/evidence-mode-chip.component.ts @@ -20,7 +20,7 @@ import { AUTH_SERVICE, AuthService, StellaOpsScopes } from '../../core/auth'; class="chip" [class.chip--on]="isEnabled()" [class.chip--off]="!isEnabled()" - routerLink="/administration/trust-signing" + routerLink="/setup/trust-signing" [attr.title]="tooltip()" >