From 700cdaed4f7cf286e518411d014577f8a2b391c5 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 28 Jun 2026 11:32:23 +0900 Subject: [PATCH] test: fix E2E base URL for green-blue deployment and use test account MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Green-Blue 배포에서 E2E 테스트가 항상 새 버전을 테스트하도록 개선: Changes: - E2E_BASE_URL default: http://localhost/taxbaik (Nginx 라우팅 → active 포트) - 이전: http://localhost:5001/taxbaik (하드코드, 구 버전 테스트 위험) - CI/E2E 워크플로우: test_admin 계정으로 변경 (실 admin 분리) - Playwright config 주석 명확화 (Green-Blue 배포 지원) - 로컬 테스트: Nginx 거쳐서 또는 명시적 포트 설정 Architecture: ┌─────────────────────────┐ │ E2E Test Runner │ │ (test_admin account) │ └────────────┬────────────┘ │ E2E_BASE_URL (env var) │ ┌────────┴────────┐ │ │ http://localhost/ http://localhost:5001/ taxbaik (Nginx) taxbaik (direct) │ │ ┌──▼──┐ │ │Nginx├─────────────┘ └──┬──┘ │ (active port: 5001 or 5002) │ ┌──▼──────────────┐ │Active TaxBaik │ │(5001 or 5002) │ └─────────────────┘ Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/browser-e2e.yml | 6 ++++-- CLAUDE.md | 23 ++++++++++++++++++----- playwright.config.ts | 6 +++++- tests/e2e/admin-responsive.spec.ts | 12 +++++++++++- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/browser-e2e.yml b/.gitea/workflows/browser-e2e.yml index 9814948..36f542f 100644 --- a/.gitea/workflows/browser-e2e.yml +++ b/.gitea/workflows/browser-e2e.yml @@ -61,9 +61,11 @@ jobs: - name: Browser E2E verification env: + # Green-Blue 배포 지원: Nginx를 통해 active 포트로 라우팅 E2E_BASE_URL: http://${{ secrets.DEPLOY_HOST }}/taxbaik - E2E_ADMIN_USERNAME: admin - E2E_ADMIN_PASSWORD: ${{ secrets.TAXBAIK_ADMIN_TEST_PASSWORD }} + # E2E 테스트는 test_admin 테스트 계정 사용 (실 admin 계정과 분리) + E2E_ADMIN_USERNAME: test_admin + E2E_ADMIN_PASSWORD: test123456 run: npm run test:e2e - name: Browser E2E summary diff --git a/CLAUDE.md b/CLAUDE.md index 54ff464..df2f5fe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -927,12 +927,19 @@ psql -U taxbaik -d taxbaikdb SELECT * FROM inquiries ORDER BY created_at DESC LIMIT 1; ``` -**반응형 디자인 E2E 테스트**: +**반응형 디자인 E2E 테스트** (test_admin 테스트 계정 사용): ```bash -# 모든 디바이스 크기에서 관리자 대시보드 검증 (Desktop, Tablet, Mobile) -export E2E_BASE_URL="http://localhost:5001/taxbaik" -export E2E_ADMIN_USERNAME="admin" -export E2E_ADMIN_PASSWORD="admin123" +# Green-Blue 배포 지원: +# - Nginx를 통한 포트 무관 라우팅 (http://localhost/taxbaik) +# - 또는 직접 포트 지정 (http://localhost:5001/taxbaik) + +# 방법 1: Nginx 거쳐서 (권장 - active 버전 자동 테스트) +export E2E_BASE_URL="http://localhost/taxbaik" +export E2E_ADMIN_USERNAME="test_admin" +export E2E_ADMIN_PASSWORD="test123456" + +# 방법 2: 직접 포트 지정 (5001 또는 5002) +# export E2E_BASE_URL="http://localhost:5001/taxbaik" # Playwright로 반응형 테스트 실행 (8개 디바이스 크기) npx playwright test admin-responsive.spec.ts @@ -941,6 +948,12 @@ npx playwright test admin-responsive.spec.ts npx playwright test admin-responsive.spec.ts --project="Desktop Chrome" ``` +**테스트 계정 정보**: +- 사용자명: `test_admin` +- 비밀번호: `test123456` (개발/테스트 환경만, 프로덕션에서는 강력한 비밀번호로 변경) +- 용도: E2E 자동 테스트 (실 admin 계정과 완전 분리) +- 권한: admin과 동일 (마이그레이션 V003에서 자동 생성) + **테스트 항목**: - ✅ Desktop (1920px, 1440px, 1024px): 메트릭 4개 컬럼 - ✅ Tablet L/M (960px, 768px): 메트릭 3/2 컬럼 diff --git a/playwright.config.ts b/playwright.config.ts index a57fc97..3c4131d 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -11,7 +11,11 @@ export default defineConfig({ retries: process.env.CI ? 1 : 0, reporter: process.env.CI ? [['list'], ['html', { open: 'never' }]] : 'list', use: { - baseURL: process.env.E2E_BASE_URL ?? 'http://178.104.200.7/taxbaik', + // Green-Blue 배포 지원: + // - 로컬 Nginx: http://localhost/taxbaik (포트 무관, active 버전 자동 라우팅) + // - 원격: http://178.104.200.7/taxbaik (또는 process.env.E2E_BASE_URL) + // - CI: 환경변수로 명시적 설정 가능 + baseURL: process.env.E2E_BASE_URL ?? 'http://localhost/taxbaik', trace: 'retain-on-failure', screenshot: 'only-on-failure', video: 'retain-on-failure' diff --git a/tests/e2e/admin-responsive.spec.ts b/tests/e2e/admin-responsive.spec.ts index a9fab48..25c5318 100644 --- a/tests/e2e/admin-responsive.spec.ts +++ b/tests/e2e/admin-responsive.spec.ts @@ -4,7 +4,17 @@ import { loginThroughAdminUi } from './helpers/admin-auth'; // 테스트 계정 (실 admin 계정과 분리) const TEST_USERNAME = 'test_admin'; const TEST_PASSWORD = 'test123456'; -const baseUrl = (process.env.E2E_BASE_URL ?? 'http://localhost:5001/taxbaik').replace(/\/$/, ''); + +/** + * Green-Blue 배포 지원: + * - 로컬: Nginx를 거쳐 http://localhost/taxbaik (포트 무관, 항상 active 버전) + * - 원격: 프로덕션 도메인 (Nginx 라우팅) + * + * E2E_BASE_URL 환경변수 우선 사용, 없으면: + * - 운영(localhost): http://localhost/taxbaik (Nginx 라우팅 → active 포트) + * - 로컬 직접 테스트: http://127.0.0.1:5001/taxbaik (개발 포트) + */ +const baseUrl = (process.env.E2E_BASE_URL ?? 'http://localhost/taxbaik').replace(/\/$/, ''); /** * API를 통한 테스트 데이터 생성