Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,26 @@ VITE_API_TIMEOUT_MS=10000
# Optional override for local Vite proxy target
VITE_DEV_PROXY_TARGET=http://localhost:8080

# Live backend and release-readiness defaults for Playwright runs
LIVE_API_BASE_URL=http://127.0.0.1:8080
LIVE_REGISTER_PASSWORD=LiveTest1!
LIVE_INVALID_PASSWORD=DefinitelyWrong1!
LIVE_RESET_TOKEN=
LIVE_RESET_PASSWORD=FreshLive1!
LIVE_LOGIN_EMAIL=
LIVE_LOGIN_PASSWORD=
LIVE_LOGIN_OTP=
LIVE_LOGIN_TOTP_SECRET=
LIVE_ADMIN_EMAIL=
LIVE_ADMIN_PASSWORD=
LIVE_ADMIN_OTP=
LIVE_ADMIN_TOTP_SECRET=
LIVE_CHANNEL_DB_CONTAINER=mysql
LIVE_CHANNEL_DB_USER=fix
LIVE_CHANNEL_DB_PASSWORD=fix
LIVE_CHANNEL_DB_NAME=channel_db
PLAYWRIGHT_FE_PORT=4173
Comment thread
yeomin4242 marked this conversation as resolved.

# Optional Grafana-backed admin monitoring descriptor.
# Generate a real local value after Prometheus and Grafana are up:
# node ../scripts/observability/generate-monitoring-panels.mjs --write-env-file .env.local
Expand Down
44 changes: 43 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@ Run the suite only when the live backend is already healthy:
pnpm run e2e:live:if-healthy
```

Run only the release-critical live journeys:

```bash
pnpm run e2e:release
```

Run the full FE release gate bundle:

```bash
pnpm run release:check
```

Optional variables:

- `LIVE_REGISTER_PASSWORD`: password used for the fresh-account register/login flow. Default: `LiveTest1!`
Expand Down Expand Up @@ -99,6 +111,32 @@ The suite covers:
- suite-local admin-monitoring fixtures are cleaned up through the local MySQL fixture after the live run completes
- live monitoring behavior driven by the active `VITE_ADMIN_MONITORING_PANELS_JSON` environment, or deterministic config-unavailable guidance when that env is absent

## Release readiness pack

Story 10.5 uses checked-in release-pack files so the same evidence path works for both developers and reviewers:

- `docs/release/web-readiness-checklist.md`: guide and scaffold entry point for versioned candidate checklists
- `docs/release/web-test-matrix.md`: critical FE release lanes and exact commands/specs
- `docs/release/web-release-notes.md`: guide and scaffold entry point for versioned candidate notes
- `docs/release/candidates/v<package-version>/web-readiness-checklist.md`: candidate-specific checklist, signoff, and evidence links
- `docs/release/candidates/v<package-version>/web-release-notes.md`: candidate-specific notes, risks, and linked proof
- `docs/release/candidates/v<package-version>/playwright-release-summary.md`: reviewer-stable summary of the release-critical Playwright run
- `docs/release/candidates/v<package-version>/upstream-story-10.1-evidence.md`: acceptance-CI evidence record slot for the exact candidate
- `docs/release/candidates/v<package-version>/upstream-story-10.4-evidence.md`: smoke/rehearsal evidence record slot for the exact candidate

Suggested flow:

```bash
cp .env.example .env.local
pnpm run e2e:live:install
pnpm run release:check
pnpm run release:notes
```

`playwright.config.ts` and `scripts/check-live-auth-contract.mjs` load `.env.local` automatically, so the copied `LIVE_*`, `PLAYWRIGHT_FE_PORT`, and `VITE_*` values are visible to `pnpm run release:check`, the live preflight step, and the candidate pack generator.

After the commands pass, update the generated candidate files under `docs/release/candidates/v<package-version>/` with the checked-in Playwright summary, CI run URL, README/local-setup verification notes, and upstream evidence records, then finalize the candidate release notes for the approved build.

## Email-first auth contract

- Login uses `email + password`.
Expand All @@ -118,9 +156,13 @@ When FE is pointed at `MOB/scripts/mock-auth-server.mjs` through `VITE_DEV_PROXY

## Environment variables

Copy `.env.example` to `.env.local` when needed.
Copy `.env.example` to `.env.local` when needed. The example file includes both Vite runtime variables and the `LIVE_*` values consumed by the release-readiness suite, and the FE live preflight plus Playwright config both load `.env.local` automatically.

- `VITE_API_BASE_URL`: absolute API URL (typically for deployed environments)
- `VITE_API_TIMEOUT_MS`: optional FE axios timeout override in milliseconds for slow live demos or diagnostics
- `VITE_DEV_PROXY_TARGET`: backend target for local Vite proxy (`/api`, `/actuator`)
- `LIVE_API_BASE_URL`: live backend used by release-critical Playwright runs
- `LIVE_REGISTER_PASSWORD`: password for the fresh-account registration/login lane in release validation
- `LIVE_LOGIN_EMAIL`, `LIVE_LOGIN_PASSWORD`: optional reusable live account for non-mutating portfolio parity checks
- `LIVE_LOGIN_OTP`, `LIVE_LOGIN_TOTP_SECRET`: MFA inputs for the reusable live account when it challenges during portfolio parity or notification smoke
- `VITE_ADMIN_MONITORING_PANELS_JSON`: Grafana-backed `/admin` monitoring descriptor generated by `../scripts/observability/generate-monitoring-panels.mjs --write-env-file .env.local`
29 changes: 29 additions & 0 deletions docs/release/candidates/v0.1.0/playwright-release-summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!-- Generated by scripts/generate-release-notes.mjs -->

# FE Release-Critical Playwright Evidence Summary

## Candidate

- Version: `0.1.0`
- Command: `pnpm run e2e:release`
- Validation date: `<YYYY-MM-DD>`
- Environment: `<fill-in-environment>`

## Covered Specs

- `e2e/live/auth-live.spec.ts`
- `e2e/live/order-session-live.spec.ts`
- `e2e/live/notification-center-live.spec.ts`
- `e2e/live/notification-stream-live.spec.ts`
- `e2e/live/portfolio-dashboard-live.spec.ts`

## Reviewer-Facing Evidence

- Result summary: `<fill-in-pass-fail-summary>`
- This markdown file is the checked-in, repository-stable evidence record for reviewers.
- External artifact URL or attachment path: `<fill-in-ci-artifact-or-attachment>`

## Notes

- Raw `playwright-report/` output is intentionally not tracked in git.
- Attach the CI artifact URL or an exported bundle in the candidate release notes when finalizing approval.
21 changes: 21 additions & 0 deletions docs/release/candidates/v0.1.0/upstream-story-10.1-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!-- Generated by scripts/generate-release-notes.mjs -->

# Story 10.1 Upstream Evidence Record

## Expected Evidence

- Acceptance CI gate run URL
- Scenario traceability artifact or report
- Owner acknowledgement for the exact FE candidate

## Current Status

- Status: `Pending upstream completion`
- This file is the candidate-specific evidence record linked from the FE release checklist.
- Replace the placeholders below with actual evidence links before final shipment.

## Evidence Links

- CI gate run URL: `<fill-in-ci-run-url>`
- Scenario traceability artifact: `<fill-in-traceability-link>`
- Reviewer note: `<fill-in-note>`
21 changes: 21 additions & 0 deletions docs/release/candidates/v0.1.0/upstream-story-10.4-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!-- Generated by scripts/generate-release-notes.mjs -->

# Story 10.4 Upstream Evidence Record

## Expected Evidence

- Smoke rehearsal execution record
- Rollback verification evidence
- Owner acknowledgement for the exact FE candidate

## Current Status

- Status: `Pending upstream completion`
- This file is the candidate-specific evidence record linked from the FE release checklist.
- Replace the placeholders below with actual evidence links before final shipment.

## Evidence Links

- Smoke rehearsal artifact: `<fill-in-smoke-artifact>`
- Rollback verification artifact: `<fill-in-rollback-link>`
- Reviewer note: `<fill-in-note>`
61 changes: 61 additions & 0 deletions docs/release/candidates/v0.1.0/web-readiness-checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!-- Generated by scripts/generate-release-notes.mjs -->

# Web Release Readiness Checklist

## Candidate Metadata

| Field | Value |
| --- | --- |
| Candidate version | `0.1.0` |
| Commit SHA | `<fill-in-fe-sha>` (FE), `<fill-in-repo-sha>` (repo) |
| Reviewer / release owner | `<fill-in-release-owner>` |
| Validation date | `<YYYY-MM-DD>` |
| Environment | `<fill-in-environment>` |

## Automated Release Gate

| Gate | Command | Evidence |
| --- | --- | --- |
| FE type-check | `pnpm run type-check` | `<fill-in-evidence>` |
| FE lint | `pnpm run lint` | `<fill-in-evidence>` |
| FE unit/integration | `pnpm run test` | `<fill-in-evidence>` |
| FE build | `pnpm run build` | `<fill-in-evidence>` |
| FE live preflight | `pnpm run e2e:live:preflight` | `<fill-in-evidence>` |
| FE release-critical Playwright | `pnpm run e2e:release` | See `./playwright-release-summary.md` |

## Critical Journey Evidence

| Journey | Primary specs | Evidence |
| --- | --- | --- |
| Auth register/login/reset guidance | `e2e/live/auth-live.spec.ts` | See `./playwright-release-summary.md` |
| Order create/execute/result | `e2e/live/order-session-live.spec.ts` | See `./playwright-release-summary.md` |
| Notification feed and mark-read | `e2e/live/notification-center-live.spec.ts` | See `./playwright-release-summary.md` |
| Notification stream reconnect | `e2e/live/notification-stream-live.spec.ts` | See `./playwright-release-summary.md` |
| Portfolio boundary and bootstrap | `e2e/live/portfolio-dashboard-live.spec.ts` | See `./playwright-release-summary.md` |

## Documentation Consistency

| Artifact | Check | Evidence |
| --- | --- | --- |
| `README.md` | Dual-audience path, Quick Start, Architecture Decisions, Environment Variables, and security narrative remain accurate | Verified by `tests/unit/release/web-release-readiness-pack.test.ts` and manual README pass |
| `BE/README.md` | Backend setup guidance still matches shipped runtime | `<fill-in-evidence>` |
| `FE/README.md` | FE local setup and release commands match actual scripts | Verified by `tests/unit/release/web-release-readiness-pack.test.ts` |
| `.env.example` | Root infra variables remain accurate | `<fill-in-evidence>` |
| `FE/.env.example` | FE runtime and `LIVE_*` release variables remain accurate | Verified by `tests/unit/release/web-release-readiness-pack.test.ts` |
| `BE/application-local.yml.template` | Reviewer-facing backend local profile guidance still matches service-local files | `<fill-in-evidence>` |

## Upstream Release Evidence

| Upstream story | Expected evidence | Link |
| --- | --- | --- |
| Story 10.1 | Acceptance CI gate report / scenario traceability | [upstream-story-10.1-evidence.md](./upstream-story-10.1-evidence.md) |
| Story 10.4 | Smoke rehearsal / rollback evidence | [upstream-story-10.4-evidence.md](./upstream-story-10.4-evidence.md) |

## Signoff

| Question | Result |
| --- | --- |
| Critical FE journeys pass? | `<fill-in-result>` |
| Core auth/order regressions block release? | `<fill-in-result>` |
| Documentation set mutually consistent? | `<fill-in-result>` |
| Candidate approved for release notes finalization? | `<fill-in-result>` |
41 changes: 41 additions & 0 deletions docs/release/candidates/v0.1.0/web-release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!-- Generated by scripts/generate-release-notes.mjs -->

# Web Release Notes

> Candidate-specific FE release notes for version `0.1.0`.
> Generated from `docs/release/web-release-notes.md`. Draft candidate files are safe to regenerate until the approval status changes from draft.

## Candidate

- Version: `0.1.0`
- FE commit SHA: `<fill-in-at-candidate-cut>`
- Repo commit SHA: `<fill-in-at-candidate-cut>`
- Release owner: `<fill-in-release-owner>`
- Validation date: `<YYYY-MM-DD>`

## Included Scope

- Story 10.5 web release readiness packaging
- README / local setup consistency verification
- FE live auth, order, and notification critical-journey validation
- FE live portfolio dashboard boundary and bootstrap validation
- Additional candidate-specific scope: `<fill-in-if-needed>`

## Evidence Summary

- Release checklist: `./web-readiness-checklist.md`
- Test matrix: `../../web-test-matrix.md`
- Playwright evidence summary: `./playwright-release-summary.md`
- CI run URL: `<fill-in-ci-run-url>`
- Story 10.1 upstream evidence: `./upstream-story-10.1-evidence.md`
- Story 10.4 upstream evidence: `./upstream-story-10.4-evidence.md`

## Known Risks / Follow-ups

- Final shipment still depends on upstream Story 10.1 and Story 10.4 evidence closing in the shared release gate.
- Candidate-specific residual risks: `<fill-in-if-needed>`

## Approval

- Approval status: `Draft - pending validation evidence`
- Reviewer notes: `<fill-in-review-summary>`
40 changes: 40 additions & 0 deletions docs/release/web-readiness-checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Web Release Readiness Checklist Guide

This file is the checked-in entry point for FE release checklists. Candidate-specific completed checklists must live under `docs/release/candidates/v<semver>/web-readiness-checklist.md` so release metadata and evidence stay scoped to the exact FE candidate.

Do not record candidate-specific SHAs, dates, or approval state in this guide. Put those details in the candidate file instead.

## Generate Candidate Pack

Run the scaffold command after the FE release gate passes:

```bash
pnpm run release:notes
```

The command reads the FE version from `package.json`, creates the candidate directory under `docs/release/candidates/v<package-version>/`, and refreshes the draft candidate pack until the generated release notes are finalized with a non-draft approval status.

Current FE package version path:

- `docs/release/candidates/v0.1.0/web-readiness-checklist.md`

## Candidate Companion Files

Each candidate directory should keep these reviewer-facing evidence records together:

- `web-readiness-checklist.md`
- `web-release-notes.md`
- `playwright-release-summary.md`
- `upstream-story-10.1-evidence.md`
- `upstream-story-10.4-evidence.md`

## Checklist Contract

Every candidate checklist should include these sections:

- `## Candidate Metadata`
- `## Automated Release Gate`
- `## Critical Journey Evidence`
- `## Documentation Consistency`
- `## Upstream Release Evidence`
- `## Signoff`
37 changes: 37 additions & 0 deletions docs/release/web-release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Web Release Notes Guide

This file is the checked-in entry point for FE release notes. Candidate-specific notes must live under `docs/release/candidates/v<semver>/web-release-notes.md` so each FE candidate keeps its own immutable evidence trail.

Do not record candidate-specific approval state, dates, or commit SHAs in this file. Put those details in the generated candidate file instead.

## Generate Candidate Notes

Run the scaffold command after the FE release gate passes:

```bash
pnpm run release:notes
```

The command reads the FE version from `package.json`, creates the candidate directory under `docs/release/candidates/v<package-version>/`, and refreshes the draft candidate pack until the release notes are finalized with a non-draft approval status.

Current FE package version path:

- `docs/release/candidates/v0.1.0/web-release-notes.md`

## What Belongs In The Generated File

- candidate metadata for the exact FE candidate under review
- links to the candidate checklist and shared test matrix
- links to CI and Playwright evidence for that candidate
- links to candidate-specific upstream Story 10.1 and Story 10.4 evidence records
- approval outcome and reviewer notes for that version only

## Template Contract

Every generated candidate file should include these sections:

- `## Candidate`
- `## Included Scope`
- `## Evidence Summary`
- `## Known Risks / Follow-ups`
- `## Approval`
27 changes: 27 additions & 0 deletions docs/release/web-test-matrix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Web Release Test Matrix

## Target Lanes

| Lane | Purpose | Command / Spec Set | Pass Rule |
| --- | --- | --- | --- |
| `live-auth` | Register, login, password-recovery, and correlation-id behavior against live backend | `pnpm run e2e:release` (`e2e/live/auth-live.spec.ts`) | All auth scenarios pass with no uncaught browser errors |
| `live-order` | Order session create/execute/result against live backend | `pnpm run e2e:release` (`e2e/live/order-session-live.spec.ts`) | Order flow reaches deterministic success or documented guarded result |
| `live-notification-center` | Notification list hydration and mark-read UX | `pnpm run e2e:release` (`e2e/live/notification-center-live.spec.ts`) | Feed renders, updates, and mark-read completes |
| `live-notification-stream` | Reconnect and SSE hydration behavior | `pnpm run e2e:release` (`e2e/live/notification-stream-live.spec.ts`) | Stream reconnect path restores live state without manual browser repair |
| `live-portfolio-dashboard` | Portfolio boundary, bootstrap, and dashboard history rendering against live backend | `pnpm run e2e:release` (`e2e/live/portfolio-dashboard-live.spec.ts`) | Anonymous access is blocked and a live authenticated portfolio session renders summary/history without UI contract drift |

## Supporting Quality Gates

| Gate | Command | Purpose |
| --- | --- | --- |
| Type check | `pnpm run type-check` | TS contract integrity |
| Lint | `pnpm run lint` | Static code quality |
| Unit and integration | `pnpm run test` | FE behavior regression coverage |
| Build | `pnpm run build` | Production bundle validity |
| Live preflight | `pnpm run e2e:live:preflight` | Backend auth contract readiness |

## Notes

- `pnpm run release:check` is the canonical FE release gate command for Story 10.5.
- `.env.example` is the checked-in source for the `LIVE_*` variables consumed by the FE release gate, and both the Playwright config and live preflight script load `.env.local` automatically.
- Final release approval should attach the checked-in `playwright-release-summary.md` record and CI artifact URL to the candidate checklist under `docs/release/candidates/v<semver>/`.
Loading
Loading