name: E2E Tests on: schedule: - cron: "0 6 * * 1" # Weekly Monday 6 AM UTC workflow_dispatch: pull_request: paths: - "src/channels/web/**" - "tests/e2e/**" jobs: e2e: name: Browser E2E runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable - uses: actions/cache@v4 with: path: | target ~/.cargo/registry key: e2e-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} - name: Build ironclaw (libsql) run: cargo build --no-default-features --features libsql - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install E2E dependencies run: | cd tests/e2e pip install -e . playwright install --with-deps chromium - name: Run E2E tests run: pytest tests/e2e/ -v -x --timeout=120 - name: Upload screenshots on failure if: failure() uses: actions/upload-artifact@v4 with: name: e2e-screenshots path: tests/e2e/screenshots/ if-no-files-found: ignore