feat(performance): enforce quality and homepage budgets - #107
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
👀 Human Input Needed → Pair Review Briefing |
🛰️ Verifier ReportTL;DR: Drove the homepage's new 50-row SSR + client-side "show more" batching, narrowed problem query, and success/failure cache policy end-to-end against a production build served on a 280-row fixture, and reran the full mocked desktop + mobile suites. 🔍 Walkthrough
📋 ScopeUnder test: PR #107 makes the homepage render an initial 50 rows via SSR and reveal the rest in bounded client-side batches (no post-hydration refetch), narrows the Not tested:
📦 Artifacts · initial 50 rows · show-more control · all 280 shown Don't like what you see? Add a verification skill so the next run tests this kind of change. Want another run? Comment 👍 / 👎 · View session |


Summary
Completes the quality/performance program: decomposes required CI into parallel self-contained jobs, enforces production TypeScript coverage and asset/HTML budgets, reduces initial homepage rendering to an accessible 50-row batch, narrows homepage database payloads, strengthens authorization/query/provider test seams, removes unused code/dependencies, and trims low-value comments while preserving security and accessibility rationale.
77 files changed, +6,168 / −2,737
Results
What Changed
CI and quality gates
buildaggregation job while retaining Node 26 as non-blocking compatibility coverage.src/**/*.tsmodules and excludes declarations only.Homepage performance
private, no-store.aria-controlslinkage.Architecture and code quality
Databasetyping across Supabase clients and query boundaries.src/lib/theme.js,dotenv, andglobdependencies.New files
e2e/homepage-pagination.spec.ts— verifies 50-row SSR, no hydration refetch, full-collection filtering/sorting, and accessible batching.scripts/coverage-hooks.mjs/scripts/coverage-scope.mjs— resolve SvelteKit virtual modules and discover runtime TypeScript modules.scripts/performance-budget.mjs/scripts/check-performance-budget.mjs— measure and enforce production budgets.src/lib/components/problemPagination.ts— pure bounded-batch calculations.tests/.Architecture
The server remains the owner of initial homepage data.
+page.server.tsreturns a typed query result and selects cache policy from explicit success/failure state. SvelteKit serializes that result into hydration;ProblemDisplayseeds its existing collection from it and limits only the rendered projection. Filters and sorting still operate on all loaded rows, and “show more” changes presentation state only.Coverage stays dependency-free by using Node 24's loader hooks and built-in test coverage. Performance enforcement reads the existing Vercel build output, so the dedicated build job does not rebuild. CI parallelizes isolated runners, not workers inside a shared mock process.
Testing
Validated on the final rebased commit:
python -m pip install --require-hashes -r scripts/requirements.txtPYTHONPATH=scripts python -m unittest scripts/test_classify_problems.pypnpm install --frozen-lockfilepnpm run lintpnpm run lint:espnpm run checkpnpm run test:coverage— 377 passed; 98.69 / 95.17 / 98.18pnpm run buildpnpm run check:performanceCI=1 pnpm exec playwright test --project=mocked-desktop --workers=1— 88 passed, 4 skippedCI=1 pnpm exec playwright test --project=mocked-mobile --workers=1— 91 passed, 1 skippedpnpm audit --audit-level low— no findingspip-audit -r scripts/requirements.txt— no findingsWhat's NOT Changed
MaxListenersExceededWarning,ObjectMultiplex, andcontentscript.jsmessages were reproduced as browser-extension output, not application output.Risk Analysis
🔴 P0 — Core authorization and writes
🟠 P1 — Homepage loading and interaction
private, no-store.🟡 P2 — CI and enforcement
🟢 P3 — Cleanup
Pull Request opened by Augment Code | View session