# Milestone: Flutter Web 알림 Smoke 보완 ## 위치 - Roadmap: `agent-roadmap/ROADMAP.md` - Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md` ## 목표 Flutter Web foreground browser notification이 실제 브라우저 환경에서 반복 검증될 수 있게 한다. 기존 API와 fake interop 단위 테스트 근거만으로 완료 처리된 gap을 보완하고, 원격 runner에서 열린 Flutter Web server를 사용자가 forwarded localhost URL로 접근해 permission, display, click/open routing을 확인할 수 있는 smoke 기준을 만든다. ## 상태 [검토중] ## 승격 조건 - 없음 ## 구현 잠금 - 상태: 해제 - 결정 필요: 없음 ## 범위 - `apps/flutter-test`를 Flutter Web build/run 대상 host scaffold로 구성한다. - `packages/messaging_flutter`의 VM 단위 테스트와 Chrome/web 테스트를 분리해 각 platform expectation이 충돌하지 않게 정리한다. - 원격 runner의 Flutter Web server와 사용자가 여는 forwarded localhost URL을 전제로 browser notification permission, display, click/open routing smoke 절차를 만든다. - `bin/test`, `bin/lint`, `bin/build` 또는 별도 opt-in 명령에서 web smoke/build 검증이 누락되지 않도록 workspace helper와 테스트 기준을 보강한다. ## 기능 ### Epic: [web-host] Web 테스트 Host Flutter Web 알림 smoke가 실제 브라우저에서 열릴 수 있도록 test host와 실행 경계를 만든다. - [x] [web-scaffold] `apps/flutter-test`에 Flutter Web scaffold를 추가하고 web build가 통과하도록 구성한다. 검증: 원격 runner에서 `apps/flutter-test` web build가 성공해야 한다. - [x] [web-runtime] 원격 Flutter Web server와 forwarded localhost URL 기반 수동 smoke 절차를 정리한다. 검증: 사용자가 forwarded URL에서 permission 요청, notification display, click/open routing 상태를 확인할 수 있어야 한다. ### Epic: [web-tests] Web 검증 분리 VM 단위 테스트와 Chrome/web 테스트가 서로 다른 platform expectation을 올바르게 검증하도록 나눈다. - [x] [chrome-tests] `packages/messaging_flutter`의 Chrome/web 테스트가 web runtime에서는 browser notification support를 기대하고, VM 테스트는 non-web unsupported를 기대하도록 분리한다. 검증: 원격 runner에서 package Chrome 테스트가 통과해야 한다. - [x] [helper-route] workspace helper 또는 테스트 규칙에 web build/smoke opt-in 경로를 추가해 `bin/test`만으로 web smoke가 완료된 것처럼 보이지 않게 한다. 검증: web 검증을 생략한 경우 skip 또는 미실행 사유가 명확히 보고되어야 한다. ### Epic: [evidence] 완료 Evidence 완료 판정이 fake interop 단위 테스트에만 기대지 않도록 browser evidence 기준을 남긴다. - [x] [manual-evidence] browser notification permission/display/click 수동 smoke evidence 기준을 민감값 없이 정리한다. 검증: 완료 리뷰에 원격 실행 명령, 사용자 확인 결과, 생략된 Full Web Push 범위가 함께 남아야 한다. ## 완료 리뷰 - 상태: 요청됨 - 요청일: 2026-06-08 - 완료 근거: - `agent-task/archive/2026/06/m-flutter-web-notification-smoke/01_web_scaffold/complete.log` - `agent-task/archive/2026/06/m-flutter-web-notification-smoke/02+01_web_runtime/complete.log` - `agent-task/archive/2026/06/m-flutter-web-notification-smoke/03_chrome_tests/complete.log` - `agent-task/archive/2026/06/m-flutter-web-notification-smoke/04+03_manual_evidence_closeout/complete.log` - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 - 리뷰 코멘트: 없음 ## 범위 제외 - 브라우저가 닫힌 상태에서도 수신되는 Full Web Push 구현 - service worker, VAPID, `web_rn-v2` server device-token 등록, core/push-proxy web target 구현 - Mattermost webapp UI/Redux 알림 구현 복제 - 제품 앱 UI 또는 앱별 메시징 화면 구현 ## 작업 컨텍스트 - 관련 경로: `packages/messaging_flutter/`, `apps/flutter-test/`, `bin/`, `agent-test/local/` - 표준선(선택): 실제 host, port, credential, 포워딩 명령 원문은 tracked roadmap/docs에 쓰지 않고 ignored local test environment 문서 또는 사용자 제공 환경 기준에서 확인한다. - 선행 작업: Flutter Web 알림 - 후속 작업: Full Web Push platform 계약 - 확인 필요: `web-scaffold`, `web-runtime`, `helper-route` evidence는 완료됐다. 남은 확인은 Chrome/web test 분리와 수동 evidence 기준 closeout이다.