Skip to content

SPA Tests

SPA Tests #108

Workflow file for this run

name: Validate Stats Generation
on:
pull_request:
paths:
- 'packages/stats-generator/**'
- '.github/workflows/generate-stats.yml'
- '.github/workflows/measure-framework.yml'
- '.github/workflows/validate-stats.yml'
- '.github/frameworks.json'
- 'packages/app-*/**'
- 'packages/starter-*/**'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '24'
cache: 'pnpm'
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile
- name: Install all package dependencies
run: |
FRAMEWORKS=$(cat .github/frameworks.json)
for PKG in $(echo "$FRAMEWORKS" | jq -r '.[].starter.package // empty, .[].app.package // empty'); do
echo "Installing $PKG..."
(cd packages/$PKG && pnpm install --frozen-lockfile --ignore-workspace)
done
- name: Run all benchmarks and validate
run: |
set -e
echo "=== Running SSR benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app)' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
echo "Building $PKG..."
(cd packages/$PKG && pnpm build)
echo "Running SSR benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:ssr $PKG
done
echo ""
echo "=== Running starter benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.starter)' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.starter.package')
echo "Running install benchmark for $PKG (1 run)..."
pnpm --filter @framework-tracker/stats-generator run:install $PKG 1
echo "Running build benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:build $PKG
done
echo ""
echo "=== Running e18e dependency analysis ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.starter) | select(.starter.measurements | map(.type) | contains(["dependencies"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.starter.package')
echo "Running e18e analysis for $PKG..."
(cd packages/$PKG && npx @e18e/cli@0.5.0 analyze --json > e18e-stats.json || true)
done
echo ""
echo "=== Validating all outputs ==="
pnpm --filter @framework-tracker/stats-generator validate