name: TaxBaik Browser E2E on: push: branches: - master jobs: browser-e2e: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '22' cache: npm - name: Cache Playwright browsers uses: actions/cache@v4 with: path: | ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }} restore-keys: | ${{ runner.os }}-playwright- - name: Install Playwright dependencies run: | set -e npm ci npx playwright install chromium --with-deps - name: Wait for deployment env: DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} run: | set -e EXPECTED_VERSION="$(git rev-parse --short HEAD)" for i in $(seq 1 60); do # Suppress stderr and allow failures to handle transition/down periods cleanly VERSION_BODY="$(curl -fsS "http://${DEPLOY_HOST}/taxbaik/version.txt" 2>/dev/null || true)" BLOG_STATUS="$(curl -s -o /dev/null -w '%{http_code}' "http://${DEPLOY_HOST}/taxbaik/blog/accountant-mistakes-5" || true)" if echo "$VERSION_BODY" | grep -q "Version: ${EXPECTED_VERSION}" && [ "$BLOG_STATUS" = "200" ]; then echo "Deployment is ready for ${EXPECTED_VERSION}" exit 0 fi echo "Waiting for deployment ${EXPECTED_VERSION} (attempt $i/60); blog status=${BLOG_STATUS:-down}; version=${VERSION_BODY:-unknown}" sleep 10 done echo "Deployment did not publish expected version ${EXPECTED_VERSION} in time" >&2 exit 1 - name: Browser E2E verification env: E2E_BASE_URL: http://${{ secrets.DEPLOY_HOST }}/taxbaik E2E_ADMIN_USERNAME: admin E2E_ADMIN_PASSWORD: ${{ secrets.TAXBAIK_ADMIN_TEST_PASSWORD }} run: npm run test:e2e - name: Browser E2E summary if: always() run: | echo "Executed tests:" echo "- admin-login" echo "- admin-smoke" echo "- public-smoke" echo "- blog-seo" echo "- contact-submit" echo "- inquiry-detail" echo "- admin-password-change"