Skip to content

Next SvelteKit Version #235

Next SvelteKit Version

Next SvelteKit Version #235

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/app-*/ci-stats.json'
- '!packages/app-*/stats/**'
- 'packages/starter-*/**'
- '!packages/starter-*/ci-stats.json'
- '!packages/starter-*/stats/**'
- '!packages/starter-*/install-stats.json'
- '!packages/starter-*/build-stats.json'
- '!packages/starter-*/corejs-stats.json'
- '!packages/starter-*/browser-baseline-stats.json'
- '!packages/starter-*/e18e-stats.json'
jobs:
validate:
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup pnpm
uses: pnpm/action-setup@8912a9102ac27614460f54aedde9e1e7f9aec20d # v6.0.5
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.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)
done
- name: Run all benchmarks and validate
run: |
set -e
echo "=== Running SSR request throughput benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app) | select(.app.measurements | map(.type) | contains(["ssrRequestThroughput"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
echo "Building $PKG..."
(cd packages/$PKG && pnpm build)
echo "Running SSR request throughput benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:ssr-request-throughput $PKG
done
echo ""
echo "=== Running SSR load benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app) | select(.app.measurements | map(.type) | contains(["ssrLoad"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
echo "Building $PKG..."
(cd packages/$PKG && pnpm build)
echo "Running SSR load benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:ssr-load $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 "=== Running browser baseline scans ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.starter) | select(.starter.measurements | map(.type) | contains(["browserBaseline"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.starter.package')
echo "Scanning browser baseline requirements for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:browser-baseline $PKG
done
echo ""
echo "=== Running client-side rendered benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app) | select(.app.measurements | map(.type) | contains(["clientSideRendered"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
echo "Building client-side rendered app for $PKG..."
(cd packages/$PKG && pnpm build)
echo "Running client-side rendered benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:client-side-rendered $PKG
done
echo ""
echo "=== Running server-side rendered benchmarks ==="
FRAMEWORKS=$(cat .github/frameworks.json)
echo "$FRAMEWORKS" | jq -c '.[] | select(.app) | select(.app.measurements | map(.type) | contains(["serverSideRendered"]))' | while read -r framework; do
PKG=$(echo "$framework" | jq -r '.app.package')
echo "Building server-side rendered app for $PKG..."
(cd packages/$PKG && pnpm build)
echo "Running server-side rendered benchmark for $PKG..."
pnpm --filter @framework-tracker/stats-generator run:server-side-rendered $PKG
done
echo ""
echo "=== Validating all outputs ==="
pnpm --filter @framework-tracker/stats-generator validate