From ddf6104749ebe0c175a28a56e630cdb2eedd6ed3 Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Tue, 5 May 2026 01:30:25 +0200 Subject: [PATCH] chore(e2e-test): fix snapshot pixel ratio + try to reuse cargo build to reduce cpu consumption --- .github/workflows/playwright.yml | 20 ++++++++++++++++---- tests/e2e/playwright.config.ts | 5 ++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index e7bd7859..999950f5 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -16,29 +16,41 @@ jobs: test: timeout-minutes: 60 runs-on: ubuntu-latest - defaults: - run: - working-directory: tests/e2e steps: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - - name: Cache Rust build + - name: Cache compiled binary + id: binary-cache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/target/debug/oxicloud + key: ${{ runner.os }}-oxicloud-binary-${{ hashFiles('src/**', 'Cargo.toml', 'Cargo.lock') }} + + - name: Cache Rust dependencies + if: steps.binary-cache.outputs.cache-hit != 'true' uses: Swatinem/rust-cache@v2 + - name: Build server + if: steps.binary-cache.outputs.cache-hit != 'true' + run: cargo build + - uses: actions/setup-node@v4 with: node-version: lts/* - name: Install Node dependencies + working-directory: tests/e2e run: npm ci - name: Install Playwright browsers + working-directory: tests/e2e run: npx playwright install --with-deps - name: Run Playwright tests (spawns DB via pretest hook) + working-directory: tests/e2e run: npm test - uses: actions/upload-artifact@v4 diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts index d841a849..ebb5974c 100644 --- a/tests/e2e/playwright.config.ts +++ b/tests/e2e/playwright.config.ts @@ -13,6 +13,9 @@ export default defineConfig({ use: { baseURL: 'http://localhost:8087', trace: 'on-first-retry', + }, + + expect: { toHaveScreenshot: { maxDiffPixelRatio: 0.02 }, }, @@ -28,7 +31,7 @@ export default defineConfig({ ], webServer: { - command: 'cargo run', + command: process.env.CI ? `${process.env.GITHUB_WORKSPACE}/target/debug/oxicloud` : 'cargo run', url: 'http://localhost:8087', timeout: 600_000, reuseExistingServer: false,