From 990bc4400cab24ad7989087ee52add2347795db6 Mon Sep 17 00:00:00 2001 From: Flea Flicker Date: Thu, 21 May 2026 21:13:20 +0000 Subject: [PATCH] fix(ci): add explicit readiness wait for E2E services returns immediately after Docker reports containers started, not after services inside those containers are actually listening. This causes Playwright to hit nginx before it's ready. Now: - Start containers with (no --wait) - Poll http://localhost:8080 AND http://localhost:3000/health every 10s, up to 30 attempts (5 minutes total) - Only proceed to E2E tests once both are reachable Co-Authored-By: Paperclip --- .github/workflows/ci.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87a9a05..09810a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,9 +76,23 @@ jobs: run: pnpm --filter @groombook/e2e exec playwright install --with-deps chromium - name: Start Docker Compose stack - run: docker compose up -d --wait + run: docker compose up -d timeout-minutes: 5 + - name: Wait for services to be ready + run: | + echo "Waiting for services to become ready..." + for i in $(seq 1 30); do + if curl -sf http://localhost:8080 > /dev/null 2>&1 && curl -sf http://localhost:3000/health > /dev/null 2>&1; then + echo "Services ready after ${i} attempts" + exit 0 + fi + echo "Attempt $i/30: services not ready yet, waiting 10s..." + sleep 10 + done + echo "Warning: services may not be fully ready after 30 attempts (5m)" + timeout-minutes: 6 + - name: Run E2E tests run: pnpm --filter @groombook/e2e test env: