종합부동산웹앱 워치리스트 브라우저 E2E 검증
질의 원문
다음 단계 진행해줘.
수집 경로와 시점
- 수집시점: 2026-08-11 11:26 KST
- 기준 맥락:
docs/CONTEXT_HANDOFF.md의 다음 추천 작업 중 “Playwright 기반 실제 브라우저 E2E로 필터·정렬·비교 상호작용 검증” - 수집 경로: 로컬 저장소 코드, 임시 테스트 프로젝트 루트, Playwright Chromium headless 브라우저
데이터 등급
- 내부 구현 데이터: A
- 테스트 시드 데이터: C
- 외부 부동산 원본 데이터: 수집하지 않음
가정
- 이번 단계의 목적은 신규 투자 결론 도출이 아니라 워치리스트 화면의 실제 브라우저 상호작용 회귀 검증이다.
uvicorn,playwright, Chromium 브라우저가 설치된 환경에서는 E2E를 실행하고, 없으면 해당 테스트는 skip한다.- 테스트 데이터는 임시 디렉터리에 생성하며
data/webapp_watchlist.json같은 실제 런타임 파일을 건드리지 않는다.
구현 결과
tests/test_webapp_watchlist_e2e.py를 추가했다.- 테스트는 임시 프로젝트 루트에 분석 문서, 워치리스트 후보, 파이프라인 상태를 시드한다.
- FastAPI 앱을
uvicorn으로 로컬 free port에 띄운다. - 서버 시작 이후 대기 또는 테스트가 실패해도
finally에서 종료 신호를 보내고 스레드 종료를 확인한다. - Playwright Chromium headless로
/watchlist를 열어 다음 상호작용을 검증한다. - 상태 필터
- 파이프라인 필터
- 검색어 필터
- 목표가 오름차순 정렬
- 비교 체크박스와 비교 패널 표시
검증
python -m pytest tests/test_webapp_watchlist_e2e.py -q --tb=short→ 1 passedpython -m pytest tests/test_webapp_watchlist_e2e.py tests/test_webapp_static_js.py tests/test_webapp_watchlist.py tests/test_webapp_pipeline.py -q→ 50 passedpython -m pytest -q→ 232 passednode --test tests/webapp_watchlist_logic.test.js→ 3 passednode --check src/realestate/webapp/static/app.js→ 통과node --check src/realestate/webapp/static/watchlist_logic.js→ 통과python -m realestate.cli invest-board→reports/investment_board.html재생성git diff --check→ whitespace error 없음(LF→CRLF 안내만 출력)
한계
- 이 테스트는 로컬 임시 데이터 기반 검증이다. 실제 네이버·국토부·경매 원본 데이터를 수집하거나 확인하지 않는다.
- Playwright 또는 Chromium이 없는 환경에서는 skip되므로, CI에서 강제 실행하려면 브라우저 설치 절차가 별도로 필요하다.
- 브라우저 E2E 범위는 필터·정렬·비교 표시까지이며, 파이프라인 상태 변경 POST 흐름이나 리포트 내보내기 UI는 별도 E2E 범위로 남긴다.
다음 결정
- 워치리스트 비교 패널에 현재가, 목표가 대비 괴리, 총투입금, 전세가율, 예상 분담금 같은 투자 지표를 붙이는 기능을 다음 후보 작업으로 둔다.
- 파이프라인 보드에서 워치리스트 후보가 연결된 문서만 필터링하거나
/watchlist에source_doc_id필터를 넘기는 흐름도 후속 검토한다.
원문 Markdown: docs/analysis/2026-08-11-종합부동산웹앱-워치리스트-브라우저-e2e검증.md