test: fix E2E base URL for green-blue deployment and use test account
TaxBaik CI/CD / build-and-deploy (push) Successful in 47s

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 <noreply@anthropic.com>
This commit is contained in:
2026-06-28 11:32:23 +09:00
parent 65241c453c
commit 700cdaed4f
4 changed files with 38 additions and 9 deletions
+4 -2
View File
@@ -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
+18 -5
View File
@@ -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 컬럼
+5 -1
View File
@@ -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'
+11 -1
View File
@@ -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를 통한 테스트 데이터 생성