73da1859fe
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m1s
**Changes:** 1. **Blazor Prerendering** (App.razor) - prerender: false → true - Eliminates white screen on page load - Initial HTML rendered immediately 2. **Deployment Health Check** (.gitea/workflows/deploy.yml) - Timeout: 120s → 60s (ATTEMPTS: 40 → 20) - Fail fast on deployment issues 3. **E2E Deployment Wait** (.gitea/workflows/browser-e2e.yml) - Timeout: 150s → 60s (retries: 30 → 20) - Interval: 5s → 3s between checks - Desktop Chrome only (skip mobile projects in CI) 4. **Playwright Optimization** (playwright.config.ts) - CI parallel: fullyParallel: false → true - Disable retries: CI retries: 1 → 0 (fail fast) - Allow immediate failure detection **Expected Impact:** - Total CI time: 60+ min → 15-25 min (-75%) - Health check: 2 min → 1 min - E2E tests: 4 projects → 1 project - Explicit timeout rules at all levels **Files:** - playwright.config.ts: Parallel mode + no retries - deploy.yml: 20 health check attempts (60s max) - browser-e2e.yml: 20 deployment wait retries (60s max) - CLAUDE.md: CI/CD optimization documented Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test';
|
|
|
|
export default defineConfig({
|
|
testDir: './tests/e2e',
|
|
timeout: 30_000,
|
|
expect: {
|
|
timeout: 10_000
|
|
},
|
|
fullyParallel: !!process.env.CI,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: 0,
|
|
reporter: process.env.CI ? [['list'], ['html', { open: 'never' }]] : 'list',
|
|
use: {
|
|
// 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'
|
|
},
|
|
projects: [
|
|
{
|
|
name: 'Desktop Chrome',
|
|
use: { ...devices['Desktop Chrome'] }
|
|
},
|
|
{
|
|
name: 'iPhone 12',
|
|
use: { ...devices['iPhone 12'] }
|
|
},
|
|
{
|
|
name: 'iPad Pro',
|
|
use: { ...devices['iPad Pro'] }
|
|
},
|
|
{
|
|
name: 'Galaxy S9+',
|
|
use: { ...devices['Galaxy S9+'] }
|
|
}
|
|
]
|
|
});
|