fix: stabilize E2E tests and add parallel CI workflow #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E Tests | |
| on: | |
| pull_request: | |
| branches: [main] | |
| types: [opened, synchronize, reopened] | |
| # Only one E2E workflow runs at a time to avoid LLM API rate limits. | |
| # New runs queue behind the current one; stale pending runs are auto-cancelled. | |
| concurrency: | |
| group: e2e-tests | |
| cancel-in-progress: false | |
| env: | |
| PNPM_VERSION: '10.10.0' | |
| NODE_VERSION: '22' | |
| jobs: | |
| e2e: | |
| name: E2E / ${{ matrix.suite }} | |
| runs-on: ubuntu-24.04 | |
| # Only run on changeset release PRs (skipped checks count as passing for other PRs) | |
| if: startsWith(github.head_ref, 'changeset-release/') | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - suite: cli-core | |
| # All CLI tests except reasoning-budget and streaming (~130s) | |
| files: >- | |
| e2e/perstack-cli/run.test.ts | |
| e2e/perstack-cli/options.test.ts | |
| e2e/perstack-cli/skills.test.ts | |
| e2e/perstack-cli/limits.test.ts | |
| e2e/perstack-cli/lockfile.test.ts | |
| e2e/perstack-cli/providers.test.ts | |
| e2e/perstack-cli/error-handling.test.ts | |
| e2e/perstack-cli/interactive.test.ts | |
| e2e/perstack-cli/runtime-interactive.test.ts | |
| e2e/perstack-cli/lazy-init.test.ts | |
| e2e/perstack-cli/bundled-base.test.ts | |
| e2e/perstack-cli/versioned-base.test.ts | |
| e2e/perstack-cli/runtime-version.test.ts | |
| e2e/perstack-cli/validation.test.ts | |
| e2e/perstack-cli/log.test.ts | |
| e2e/perstack-cli/delegate.test.ts | |
| e2e/perstack-cli/continue.test.ts | |
| e2e/perstack-cli/published-expert.test.ts | |
| - suite: cli-reasoning | |
| # Reasoning budget tests are the slowest (~163s) | |
| files: e2e/perstack-cli/reasoning-budget.test.ts | |
| - suite: cli-streaming | |
| # Streaming event tests (~50s) | |
| files: e2e/perstack-cli/streaming.test.ts | |
| - suite: create-expert | |
| files: e2e/create-expert | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: ${{ env.PNPM_VERSION }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'pnpm' | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| run: pnpm run build | |
| - name: Run E2E tests | |
| run: pnpm vitest run --project e2e ${{ matrix.files }} | |
| env: | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| EXA_API_KEY: ${{ secrets.EXA_API_KEY }} |