Skip to content

fix: stabilize E2E tests and add parallel CI workflow #5

fix: stabilize E2E tests and add parallel CI workflow

fix: stabilize E2E tests and add parallel CI workflow #5

Workflow file for this run

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 }}