53 lines
3.2 KiB
Markdown
53 lines
3.2 KiB
Markdown
## 1. Baseline And Repro
|
|
|
|
- [x] 1.1 Add a repeatable Lighthouse run command (local) that outputs reports for mobile/desktop x light/dark/high-contrast
|
|
- [x] 1.2 Document the Lighthouse run environment requirements (clean profile / no extensions) and scoring rule (single vs median)
|
|
- [x] 1.3 Capture current failing audits in a checked-in note (from the provided JSON reports) to validate fixes one-by-one
|
|
|
|
## 2. SEO Correctness
|
|
|
|
- [x] 2.1 Update `site/public/robots.txt` to reference the sitemap with an absolute URL to `/sitemap-index.xml`
|
|
- [x] 2.2 Verify `site/astro.config.mjs` has `site` set correctly in production via `PUBLIC_SITE_URL` and that sitemap output is present after build
|
|
- [x] 2.3 Add/verify JSON-LD structured data on the all pages (valid JSON, recognized schema type)
|
|
|
|
## 3. Crawlable Anchors (Media Modal)
|
|
|
|
- [x] 3.1 Update `site/src/components/MediaModal.astro` so no modal anchors are rendered without `href` in the initial HTML
|
|
- [x] 3.2 Ensure modal CTAs that navigate are always `<a href="...">` and actions that do not navigate are `<button>`
|
|
- [x] 3.3 Re-run Lighthouse SEO audit to confirm `crawlable-anchors` passes
|
|
|
|
## 4. CSS Processing And Render Blocking
|
|
|
|
- [x] 4.1 Move `site/public/styles/global.css` into the Astro/Vite build pipeline (so production output is minified and cache-busted)
|
|
- [x] 4.2 Update `site/src/layouts/BaseLayout.astro` to load the built CSS output and remove any no-longer-needed manual cache-busting for CSS
|
|
- [x] 4.3 Adjust `site/public/sw.js` shell precache list to match the new CSS delivery strategy
|
|
- [x] 4.4 Confirm Lighthouse no longer reports `unminified-css` and materially reduces `unused-css-rules` for the primary pages
|
|
|
|
## 5. Fonts
|
|
|
|
- [x] 5.1 Replace render-blocking Google Fonts with a self-hosted font strategy (woff2 + `font-display`)
|
|
- [x] 5.2 Preload only the critical font files/weights needed for above-the-fold rendering
|
|
- [x] 5.3 Re-run Lighthouse to confirm improved `render-blocking` findings and LCP trend
|
|
|
|
## 6. Images
|
|
|
|
- [x] 6.1 Add explicit `width`/`height` for card thumbnail images (and any other frequently used images missing dimensions)
|
|
- [x] 6.2 Ensure above-the-fold imagery on gated pages is deterministic and does not rely on third-party delivery for a perfect Lighthouse gate
|
|
- [x] 6.3 Re-run Lighthouse to validate reduced CLS and improved image-related savings audits
|
|
|
|
## 7. Service Worker / Cache Robustness
|
|
|
|
- [x] 7.1 Verify critical asset cache-busting is effective across deploys (SW + global CSS) and does not pin stale styles
|
|
- [x] 7.2 Confirm nginx cache headers are correct for `/sw.js` (no-store) and any critical CSS entrypoint
|
|
|
|
## 8. Security Headers (Best Practices)
|
|
|
|
- [x] 8.1 Add baseline security headers in `deploy/nginx.conf` (CSP, nosniff, frame-ancestors / X-Frame-Options, referrer-policy, permissions-policy)
|
|
- [x] 8.2 Choose a CSP tier (moderate vs hash-based) and ensure the site functions with no CSP console violations in the normal path
|
|
- [x] 8.3 Re-run Lighthouse Best Practices to confirm CSP-related inspector issues are resolved
|
|
|
|
## 9. CI Quality Gate
|
|
|
|
- [x] 9.1 Add a CI job that runs the Lighthouse command and uploads reports as artifacts
|
|
- [x] 9.2 Make CI fail if any configured URL/variant scores below 100 in any category
|