From ab0604cac2cf2099fc83f8da8d786d64c624566e Mon Sep 17 00:00:00 2001 From: Trezy Date: Tue, 23 Jun 2026 19:55:38 -0500 Subject: [PATCH] ci: prevent tests from hitting ci time limits Signed-off-by: Trezy --- .dockerignore | 1 + .github/workflows/ci.yml | 31 ++++++++++++++++++++++++++++--- docker-compose.e2e.ci.yml | 5 +++++ web/playwright.config.ts | 3 +++ 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 docker-compose.e2e.ci.yml diff --git a/.dockerignore b/.dockerignore index d034916..1d45979 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,4 +4,5 @@ tests/ .github/ .claude/ .env +.builder-override/ docker-compose*.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c00a0b..e32fdf4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,6 +87,7 @@ jobs: needs: changes if: always() && (needs.changes.outputs.server == 'true' || (github.event_name == 'workflow_dispatch' && inputs.server)) runs-on: depot-ubuntu-24.04 + timeout-minutes: 15 steps: - name: Checkout repository uses: actions/checkout@v6 @@ -109,6 +110,7 @@ jobs: needs: changes if: always() && (needs.changes.outputs.server == 'true' || (github.event_name == 'workflow_dispatch' && inputs.server)) runs-on: depot-ubuntu-24.04 + timeout-minutes: 15 services: postgres: image: postgres:16-alpine @@ -211,11 +213,34 @@ jobs: working-directory: web run: npx playwright install chromium --with-deps + - name: Cache cargo + uses: actions/cache@v5 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + key: cargo-release-amd64-${{ hashFiles('Cargo.lock') }} + restore-keys: | + cargo-release-amd64- + + - name: Build server binary + run: | + docker run --rm \ + -v "$PWD:/app" \ + -v "$HOME/.cargo/registry:/usr/local/cargo/registry" \ + -v "$HOME/.cargo/git:/usr/local/cargo/git" \ + -w /app \ + -e SQLX_OFFLINE=true \ + rust:1.93-bookworm \ + cargo build --release + mkdir -p .builder-override/app/target/release + cp target/release/happyview .builder-override/app/target/release/happyview + - name: Log in to ATCR run: echo "${{ secrets.ATCR_PASSWORD }}" | docker login atcr.io -u "${{ secrets.ATCR_USERNAME }}" --password-stdin - name: Start E2E services - run: docker compose -f docker-compose.e2e.yml up -d --build --wait + run: docker compose -f docker-compose.e2e.yml -f docker-compose.e2e.ci.yml up -d --build --wait timeout-minutes: 10 - name: Run Playwright tests @@ -226,7 +251,7 @@ jobs: - name: Dump container logs if: failure() - run: docker compose -f docker-compose.e2e.yml logs + run: docker compose -f docker-compose.e2e.yml -f docker-compose.e2e.ci.yml logs - name: Upload Playwright report if: failure() @@ -238,7 +263,7 @@ jobs: - name: Stop E2E services if: always() - run: docker compose -f docker-compose.e2e.yml down -v + run: docker compose -f docker-compose.e2e.yml -f docker-compose.e2e.ci.yml down -v # --------------------------------------------------------------------------- # PR builds — compile + Docker on every PR push so reviewers can test diff --git a/docker-compose.e2e.ci.yml b/docker-compose.e2e.ci.yml new file mode 100644 index 0000000..077bda3 --- /dev/null +++ b/docker-compose.e2e.ci.yml @@ -0,0 +1,5 @@ +services: + happyview: + build: + additional_contexts: + builder: .builder-override diff --git a/web/playwright.config.ts b/web/playwright.config.ts index 81de866..805d3d8 100644 --- a/web/playwright.config.ts +++ b/web/playwright.config.ts @@ -28,6 +28,9 @@ export default defineConfig({ testMatch: [ "service-identity-settings.spec.ts", "lexicon-services.spec.ts", + "lexicon-delete.spec.ts", + "script-delete.spec.ts", + "record-delete.spec.ts", "proxy-config.spec.ts", ], dependencies: ["setup"], -- 2.51.2