name: explorer-e2e # Only explorer, shared/ui and root npm changes, or changes to this workflow, # run it. Rust-only changes don't affect the web app: its tests run against a # pinned, pre-built radicle-httpd. on: push: paths: - "explorer/**" - "shared/**" - "package.json" - "package-lock.json" - ".npmrc" - ".nvmrc" - "!explorer/crates/**" - "!explorer/Cargo.toml" - "!explorer/Cargo.lock" - "!explorer/rust-toolchain" - "!explorer/.cargo/**" - ".github/workflows/explorer-e2e.yml" workflow_dispatch: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true defaults: run: working-directory: explorer jobs: e2e: timeout-minutes: 30 runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version-file: ".nvmrc" - name: Install dependencies run: npm ci - name: Cache Playwright browsers uses: actions/cache@v5 id: playwright-dep-cache with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }} - name: Install Playwright browsers if: steps.playwright-dep-cache.outputs.cache-hit != 'true' run: npx playwright install chromium - name: Install Radicle binaries run: | mkdir -p tests/artifacts; ./scripts/install-binaries; - name: Run Playwright tests run: npm run test:e2e -- --project chromium - name: Upload artifacts uses: actions/upload-artifact@v7 if: always() with: name: test-artifacts-${{ runner.os }} retention-days: 30 if-no-files-found: "ignore" path: | explorer/tests/artifacts/**/*