[Fix-95] FE 배포 관련 문서화#36
Conversation
… version 0.1.0 FIX-95
… redirection for anonymous users FIX-95
…t for versioning FIX-95
…for live backend integration FIX-95
📝 WalkthroughWalkthroughAdds 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
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
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 10
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: ff9cec2d-af0b-40bd-bce9-6fd3015e30a5
📒 Files selected for processing (16)
.env.exampleREADME.mddocs/release/candidates/v0.1.0/playwright-release-summary.mddocs/release/candidates/v0.1.0/upstream-story-10.1-evidence.mddocs/release/candidates/v0.1.0/upstream-story-10.4-evidence.mddocs/release/candidates/v0.1.0/web-readiness-checklist.mddocs/release/candidates/v0.1.0/web-release-notes.mddocs/release/web-readiness-checklist.mddocs/release/web-release-notes.mddocs/release/web-test-matrix.mde2e/live/notification-center-live.spec.tse2e/live/portfolio-dashboard-live.spec.tspackage.jsonplaywright.config.tsscripts/generate-release-notes.mjstests/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 commandse2e:releaseandrelease:checkare 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:releasescript 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
beforeEachhealth 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.exampleare well-structured and validate the release readiness documentation contract. These tests correctly read fromfeRootand will work in both monorepo and standalone checkout scenarios.
…n and README for release readiness FIX-95
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: bceb7d7d-f1ce-41cd-9e2d-da1c1bf3e1fd
📒 Files selected for processing (5)
README.mddocs/release/web-test-matrix.mdplaywright.config.tsscripts/check-live-auth-contract.mjstests/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(..., '',)plusprocess.envprecedence keeps local.env.localsupport 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.
목적
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:release에portfolio-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
Documentation
Tests
Chores