Skip to content

[Fix-95] FE 배포 관련 문서화#36

Merged
yeomin4242 merged 10 commits into
mainfrom
FIX-95-Story-10.5-FE-Web-Release-Readiness-Pack
Mar 25, 2026
Merged

[Fix-95] FE 배포 관련 문서화#36
yeomin4242 merged 10 commits into
mainfrom
FIX-95-Story-10.5-FE-Web-Release-Readiness-Pack

Conversation

@yeomin4242

@yeomin4242 yeomin4242 commented Mar 25, 2026

Copy link
Copy Markdown
Contributor

목적

Story 10.5 [FE] Web Release Readiness Pack의 release gate, README/env 계약, candidate evidence 패키지를 실제 동작하는 형태로 정리했습니다.
문서, 스크립트, release checklist가 서로 다른 계약을 가리키지 않도록 맞추고 reviewer-facing evidence 경로를 고정했습니다.

변경 요약

  • playwright.config.ts에서 .env.local을 실제로 로드하도록 수정
  • e2e:releaseportfolio-dashboard-live.spec.ts를 포함해 portfolio/dashboard lane을 release gate에 편입
  • notification-center-live.spec.ts를 확장해 live notification hydrate + mark-read까지 실제 검증
  • generate-release-notes.mjs를 수정해 draft candidate pack을 refresh 가능하게 정리
  • README.md, FE/.env.example, release guide/test matrix, release-pack guardrail test 갱신
  • docs/release/candidates/v0.1.0/* candidate pack을 draft placeholder 기준으로 재생성

관련 이슈

Closes #

Related: #

리뷰 포인트

  • .env.local 로딩 계약이 FE/README.md와 실제 Playwright 실행 흐름에 맞는지
  • notification-center-live.spec.ts가 live notification + mark-read까지 release evidence로 보기 충분한지
  • release:notes가 draft candidate는 refresh하고 approved candidate는 보존하는 정책이 적절한지
  • e2e:release에 portfolio/dashboard lane을 포함한 뒤 matrix/notes 표현이 과장되지 않는지

테스트 결과

  • 로컬 테스트 통과

  • CI 통과

  • 수동 검증 완료

일반 PR 전용 체크리스트

  • self-review를 완료했습니다.

  • 머지 전 필수 작업이 모두 완료되었습니다.

  • 필요한 문서(README/API/주석)를 업데이트했습니다.

  • 브레이킹 체인지 여부를 확인했고 필요 시 명시했습니다.

Summary by CodeRabbit

  • New Features

    • Added release validation commands: comprehensive pre-release check, targeted release E2E run, and automated release‑notes generation.
  • Documentation

    • Added release readiness guides, test matrix, candidate pack templates, and expanded README environment & release instructions.
    • Checked‑in release evidence/template documents for candidate workflows.
  • Tests

    • Expanded live E2E flows with improved auth/MFA handling and new release readiness unit tests.
  • Chores

    • Added default LIVE_* environment placeholders to example env file.

@yeomin4242 yeomin4242 changed the title Fix 95 story 10.5 fe web release readiness pack [Fix-95] FE 배포 관련 문서화 Mar 25, 2026
@coderabbitai

coderabbitai Bot commented Mar 25, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds a release-readiness workflow: new LIVE_* env placeholders, Playwright release test suite and config env loading, release-note generation script producing candidate packs, new release documentation/checklists, and unit tests validating the candidate pack contents.

Changes

Cohort / File(s) Summary
Environment example
\.env.example
Added LIVE_* variables, channel DB defaults, and PLAYWRIGHT_FE_PORT for Playwright live/release runs.
Playwright config & scripts
playwright.config.ts, package.json, scripts/check-live-auth-contract.mjs
Playwright now loads env via Vite's loadEnv merged with process.env; added robust port/CI parsing. Added npm scripts: e2e:release, release:notes, release:check. Live-auth script reads merged env.
Release notes generator
scripts/generate-release-notes.mjs
New CLI script that scaffolds versioned candidate pack files under docs/release/candidates/v${version} and avoids regenerating an already-drafted candidate.
Release docs & templates
docs/release/..., docs/release/candidates/v0.1.0/*
Added entry-point docs (web-readiness-checklist.md, web-release-notes.md, web-test-matrix.md) and generated candidate templates (playwright summary, web readiness checklist, release notes, upstream evidence files).
Playwright live specs
e2e/live/notification-center-live.spec.ts, e2e/live/portfolio-dashboard-live.spec.ts
Expanded notification-center to full end-to-end auth/TOTP registration, order creation, notification assertions; added portfolio unauthenticated-redirect test and protected-status assertions.
Release pack validation tests
tests/unit/release/web-release-readiness-pack.test.ts
New Jest suite validating README entries, .env.example LIVE_* placeholders, presence/structure of generated candidate files, and that generated artifacts are not inlined in docs.
README updates
README.md
Added release-readiness pack section, commands (e2e:release, release:check, release:notes) and expanded LIVE_* env documentation.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer/CI
  participant Runner as pnpm / release:check
  participant Playwright as Playwright tests
  participant FE as Frontend (dev server)
  participant BE as Backend API
  participant DB as Channel DB
  participant Docs as Docs filesystem

  Dev->>Runner: pnpm run release:check
  Runner->>Runner: run type-check, lint, test, build, e2e:live:preflight
  Runner->>Playwright: pnpm run e2e:release
  Playwright->>FE: start or reuse dev server (env via loadEnv)
  FE->>BE: frontend requests -> LIVE_API_BASE_URL
  Playwright->>BE: auth flows (login/register/TOTP), create order
  BE->>DB: read/write channel DB seeded/test accounts
  BE-->>Playwright: API responses (notifications, protected statuses)
  Playwright->>Docs: emit/playwright-report artifact (not checked into git)
  Runner->>Docs: scripts/generate-release-notes.mjs writes candidate files under docs/release/candidates/vX
  Runner-->>Dev: aggregate exit status and artifacts URL
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Poem

🐰 I hopped through docs and tests so queer,

LIVE_* seeds snug, Playwright near.
Generate notes, spin up the run,
Auths and orders, checks all done.
A carrot-toast to release-day cheer!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[Fix-95] FE 배포 관련 문서화' clearly describes the main objective—organizing and documenting the FE release readiness pack (Story 10.5)—which aligns with the core changes of adding release documentation, environment variable setup, Playwright test enhancements, and release automation infrastructure.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch FIX-95-Story-10.5-FE-Web-Release-Readiness-Pack

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ff9cec2d-af0b-40bd-bce9-6fd3015e30a5

📥 Commits

Reviewing files that changed from the base of the PR and between d66e029 and f8654ad.

📒 Files selected for processing (16)
  • .env.example
  • README.md
  • docs/release/candidates/v0.1.0/playwright-release-summary.md
  • docs/release/candidates/v0.1.0/upstream-story-10.1-evidence.md
  • docs/release/candidates/v0.1.0/upstream-story-10.4-evidence.md
  • docs/release/candidates/v0.1.0/web-readiness-checklist.md
  • docs/release/candidates/v0.1.0/web-release-notes.md
  • docs/release/web-readiness-checklist.md
  • docs/release/web-release-notes.md
  • docs/release/web-test-matrix.md
  • e2e/live/notification-center-live.spec.ts
  • e2e/live/portfolio-dashboard-live.spec.ts
  • package.json
  • playwright.config.ts
  • scripts/generate-release-notes.mjs
  • tests/unit/release/web-release-readiness-pack.test.ts
📜 Review details
🧰 Additional context used
🪛 dotenv-linter (4.0.0)
.env.example

[warning] 14-14: [UnorderedKey] The LIVE_INVALID_PASSWORD key should go before the LIVE_REGISTER_PASSWORD key

(UnorderedKey)


[warning] 16-16: [UnorderedKey] The LIVE_RESET_PASSWORD key should go before the LIVE_RESET_TOKEN key

(UnorderedKey)


[warning] 17-17: [UnorderedKey] The LIVE_LOGIN_EMAIL key should go before the LIVE_REGISTER_PASSWORD key

(UnorderedKey)


[warning] 18-18: [UnorderedKey] The LIVE_LOGIN_PASSWORD key should go before the LIVE_REGISTER_PASSWORD key

(UnorderedKey)


[warning] 19-19: [UnorderedKey] The LIVE_LOGIN_OTP key should go before the LIVE_LOGIN_PASSWORD key

(UnorderedKey)


[warning] 20-20: [UnorderedKey] The LIVE_LOGIN_TOTP_SECRET key should go before the LIVE_REGISTER_PASSWORD key

(UnorderedKey)


[warning] 21-21: [UnorderedKey] The LIVE_ADMIN_EMAIL key should go before the LIVE_API_BASE_URL key

(UnorderedKey)


[warning] 22-22: [UnorderedKey] The LIVE_ADMIN_PASSWORD key should go before the LIVE_API_BASE_URL key

(UnorderedKey)


[warning] 23-23: [UnorderedKey] The LIVE_ADMIN_OTP key should go before the LIVE_ADMIN_PASSWORD key

(UnorderedKey)


[warning] 24-24: [UnorderedKey] The LIVE_ADMIN_TOTP_SECRET key should go before the LIVE_API_BASE_URL key

(UnorderedKey)


[warning] 25-25: [UnorderedKey] The LIVE_CHANNEL_DB_CONTAINER key should go before the LIVE_INVALID_PASSWORD key

(UnorderedKey)


[warning] 26-26: [UnorderedKey] The LIVE_CHANNEL_DB_USER key should go before the LIVE_INVALID_PASSWORD key

(UnorderedKey)


[warning] 27-27: [UnorderedKey] The LIVE_CHANNEL_DB_PASSWORD key should go before the LIVE_CHANNEL_DB_USER key

(UnorderedKey)


[warning] 28-28: [UnorderedKey] The LIVE_CHANNEL_DB_NAME key should go before the LIVE_CHANNEL_DB_PASSWORD key

(UnorderedKey)

🪛 GitHub Actions: ci-frontend
tests/unit/release/web-release-readiness-pack.test.ts

[error] 13-13: Test failed due to missing repository README. Error: ENOENT: no such file or directory, open '/home/runner/work/FIXYZ-FE/README.md' (thrown by readRepoText -> readFileSync(resolve(repoRoot, relativePath), 'utf8')).


[error] 65-65: web release readiness pack > defines the release matrix and checklist links for the critical FE journeys failed with ENOENT opening '/home/runner/work/FIXYZ-FE/README.md'.


[error] 116-116: web release readiness pack > guards the root README reviewer contract required by AC5 failed with ENOENT opening '/home/runner/work/FIXYZ-FE/README.md'.

🪛 GitHub Check: ci-frontend
tests/unit/release/web-release-readiness-pack.test.ts

[failure] 13-13: tests/unit/release/web-release-readiness-pack.test.ts > web release readiness pack > guards the root README reviewer contract required by AC5
Error: ENOENT: no such file or directory, open '/home/runner/work/FIXYZ-FE/README.md'
❯ readRepoText tests/unit/release/web-release-readiness-pack.test.ts:13:3
❯ tests/unit/release/web-release-readiness-pack.test.ts:116:24

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/FIXYZ-FE/README.md' }


[failure] 13-13: tests/unit/release/web-release-readiness-pack.test.ts > web release readiness pack > defines the release matrix and checklist links for the critical FE journeys
Error: ENOENT: no such file or directory, open '/home/runner/work/FIXYZ-FE/README.md'
❯ readRepoText tests/unit/release/web-release-readiness-pack.test.ts:13:3
❯ tests/unit/release/web-release-readiness-pack.test.ts:65:24

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/FIXYZ-FE/README.md' }

🔇 Additional comments (15)
e2e/live/portfolio-dashboard-live.spec.ts (1)

20-20: Strong boundary coverage for anonymous portfolio access.

This is a solid release-critical addition: it validates UI redirect behavior and directly asserts backend protection status codes for unauthenticated access.

Also applies to: 634-648

docs/release/candidates/v0.1.0/upstream-story-10.4-evidence.md (1)

1-21: Template structure and pending-state messaging look correct.

The document is clear about required evidence and explicitly marks completion as pending, which is appropriate for candidate scaffolding.

docs/release/candidates/v0.1.0/upstream-story-10.1-evidence.md (1)

1-21: Looks good as a candidate evidence scaffold.

Sections and placeholders are clear, and pending status is correctly explicit for pre-approval state.

docs/release/candidates/v0.1.0/playwright-release-summary.md (1)

1-29: Release-evidence summary template is clear and audit-friendly.

The scope list and reviewer evidence expectations are well defined for candidate sign-off.

docs/release/web-release-notes.md (1)

1-37: Guide contract and generation workflow are well specified.

This provides a clear boundary between reusable guide content and candidate-specific evidence state.

docs/release/candidates/v0.1.0/web-release-notes.md (1)

1-41: Candidate release-notes scaffold is complete and consistent.

The file includes the expected contract sections and evidence-link placeholders needed for finalization.

README.md (2)

68-78: LGTM!

The new release-focused command documentation is clear and aligns with the corresponding scripts added in package.json. The commands e2e:release and release:check are properly documented with their purposes.


114-139: LGTM!

The release readiness pack section provides comprehensive documentation of the release artifacts structure, expected workflow, and generated candidate files. The suggested flow aligns with the scripts and the documented environment loading behavior via playwright.config.ts.

docs/release/web-readiness-checklist.md (1)

1-40: LGTM!

The checklist guide establishes a clear separation between the guide/scaffold and candidate-specific artifacts. The checklist contract with required sections ensures consistency across releases, and the candidate directory structure is well-documented.

docs/release/candidates/v0.1.0/web-readiness-checklist.md (1)

1-61: LGTM!

The generated candidate checklist follows the defined contract structure with all required sections. Evidence links use proper relative paths, and placeholder fields are clearly marked for manual completion. The automated release gate table correctly references the Playwright summary for evidence.

docs/release/web-test-matrix.md (1)

1-27: LGTM overall!

The test matrix clearly defines the release-critical lanes with their corresponding specs, pass rules, and supporting quality gates. The structure aligns well with the e2e:release script and the release readiness documentation.

scripts/generate-release-notes.mjs (2)

36-42: LGTM!

The draft preservation logic correctly prevents overwriting approved candidate files. Files without the draft marker are preserved, while draft files or missing files trigger regeneration.


44-251: LGTM!

The template generation is comprehensive and creates all necessary candidate artifacts with consistent structure, proper placeholders, and the generated marker. The sequential file writes with mkdir ensure the directory structure is created before writing.

e2e/live/notification-center-live.spec.ts (1)

278-343: LGTM!

The test suite properly enforces auth boundaries and validates the full notification lifecycle including hydration and mark-read functionality. The beforeEach health check ensures tests only run when the live backend is available, and the serial execution prevents race conditions.

tests/unit/release/web-release-readiness-pack.test.ts (1)

15-41: LGTM!

The FE-scoped tests for README and .env.example are well-structured and validate the release readiness documentation contract. These tests correctly read from feRoot and will work in both monorepo and standalone checkout scenarios.

Comment thread .env.example
Comment thread docs/release/web-test-matrix.md Outdated
Comment thread e2e/live/notification-center-live.spec.ts
Comment thread e2e/live/notification-center-live.spec.ts
Comment thread package.json
Comment thread playwright.config.ts Outdated
Comment thread scripts/generate-release-notes.mjs
Comment thread tests/unit/release/web-release-readiness-pack.test.ts
Comment thread tests/unit/release/web-release-readiness-pack.test.ts Outdated
Comment thread tests/unit/release/web-release-readiness-pack.test.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: bceb7d7d-f1ce-41cd-9e2d-da1c1bf3e1fd

📥 Commits

Reviewing files that changed from the base of the PR and between f8654ad and 6cd20db.

📒 Files selected for processing (5)
  • README.md
  • docs/release/web-test-matrix.md
  • playwright.config.ts
  • scripts/check-live-auth-contract.mjs
  • tests/unit/release/web-release-readiness-pack.test.ts
📜 Review details
🔇 Additional comments (7)
scripts/check-live-auth-contract.mjs (1)

1-13: Env resolution change looks correct and consistent with release preflight intent.

Using loadEnv(..., '',) plus process.env precedence keeps local .env.local support while preserving explicit shell overrides.

docs/release/web-test-matrix.md (1)

5-27: Release matrix/doc contract is clear and aligned with the new gate flow.

The lane coverage, gate commands, and reviewer-facing notes are consistent and actionable.

README.md (3)

68-79: Release-gate command additions are clear and well placed.


114-139: Release readiness pack section is structured well for reviewer-facing evidence paths.


159-168: Env contract documentation update is consistent with the live-release workflow.

tests/unit/release/web-release-readiness-pack.test.ts (2)

5-10: Root README guard handling is a good fix for standalone FE CI execution.

Also applies to: 112-123, 120-126


45-110: Release-pack contract assertions are comprehensive and valuable for preventing doc drift.

Comment thread playwright.config.ts
@yeomin4242 yeomin4242 merged commit 0df73df into main Mar 25, 2026
4 checks passed
@yeomin4242 yeomin4242 deleted the FIX-95-Story-10.5-FE-Web-Release-Readiness-Pack branch March 25, 2026 08:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant