Seo Regression Coverage 2026 06 17
SEO regression coverage review
Date: 2026-06-17
Scope: static review of root scripts/tasks, Turborepo tasks, Playwright suites, repo tooling, and existing SEO primitives for regression coverage around link health, sitemap/robots validation, metadata assertions, e2e coverage, and the narrow root runtime proof contract. No runtime behavior or tests were changed.
Current coverage#
Link checks#
- Root package scripts expose Playwright link checks:
pnpm e2e:wwwandpnpm e2e:docsincludee2e/*/tests/link-health.spec.tsandon-page-links.spec.tswhere present.pnpm e2e:academyincludese2e/academy/tests/link-health.spec.ts.
- Mise has release-oriented link commands:
mise run check:linksrunstools/scripts/check-broken-links.shfor local docs by default or productionassistance.bg/www.assistance.bgwhen passed.mise run check:links:prodruns existing production-mode Playwright link specs forwww,docs, andacademy.mise run cf:buildchains Cloudflare app builds withmise run check:links:prod.
tools/scripts/check-broken-links.shsupports docs-only checks, production origins, base paths, parallelism, and curl timeouts.
Playwright coverage#
- Public-app e2e coverage exists for
www,docs,academy,design-system,ui-library, andmanagerundere2e/. - Hydration smoke specs exist for the Next.js public apps.
- Link health specs exist for
www,docs, andacademy;wwwanddocsalso have on-page link crawling specs. - Shared helpers centralize link route discovery, known broken link exceptions, web-server setup, hydration checks, and accessibility utilities.
Sitemap and robots generation#
apps/blog/app/robots.tsandapps/blog/app/sitemap.tsuse App Router metadata routes.apps/academy/app/robots.tsandapps/academy/app/sitemap.tsuse App Router metadata routes.apps/docsgeneratespublic/sitemap.xmlinpostbuildviapnpm run build:sitemap; it also ships a staticpublic/robots.txt.apps/wwwrunsapps/www/internals/generate-sitemap.mjsinpostbuildand ships staticpublic/robots.txt/sitemap assets.
Metadata assertions#
- There are app-level metadata implementations across public Next.js apps (
metadata,generateMetadata, canonicals, OpenGraph, Twitter, robots/noindex), but no dedicated SEO metadata assertion test suite was found. - Existing tests cover behavior and rendering, not page-head invariants such as canonical URL, meta description, OpenGraph URL/image, Twitter card, or robots tags.
Runtime proof constraints#
pnpm verify:root-runtime/mise run verify:root-runtimeis intentionally narrow and should not be treated as SEO, e2e, or deployment proof.- The current runtime proof validates root-level runtime assumptions only; SEO regression coverage must remain in dedicated scripts/tasks such as Playwright, sitemap checks, and link checks.
Gaps#
- No automated sitemap validation command verifies that generated sitemap XML is parseable, contains expected app roots, avoids localhost/preview URLs in production artifacts, and matches intended host/base-path conventions.
- No automated robots validation command verifies advertised sitemap URLs, disallow rules, or consistency between static robots files and App Router
robots.tsoutputs. - No metadata regression tests assert canonical URL, title/description, OpenGraph/Twitter tags, or noindex placement for representative public routes.
- Link coverage is strongest for
www,docs, andacademy; there are no release link-check tasks forblog,design-system, orui-librarydespite Cloudflare build/deploy tasks for them. cf:builddepends on production-mode link specs only after building; there is no cheaper preflight that statically checks SEO artifact correctness before expensive builds/deploys.- Known-broken link exceptions are centralized, but the review did not find an expiry/enforcement mechanism to keep exceptions from becoming permanent.
Recommended commands/tests to add later#
Add these as explicit tasks rather than expanding verify:root-runtime:
-
mise run seo:metadata- Run Playwright against production-mode local servers for representative routes.
- Assert
<title>,meta[name="description"],link[rel="canonical"],meta[property="og:url"],meta[property="og:image"],meta[name="twitter:card"], and route-specificrobots/noindexbehavior. - Suggested initial route set:
www /,www /pricing,docs /docs,docs /docs/guides,blog /blog,academy /academy.
-
mise run seo:sitemaps- Build or inspect generated sitemap artifacts for
wwwanddocsplus App Router sitemap endpoints forblogandacademy. - Validate XML parseability, absolute production URLs, expected sitemap index entries, and absence of
localhost,*.pages.dev, or*.vercel.appin production artifacts.
- Build or inspect generated sitemap artifacts for
-
mise run seo:robots- Validate static and dynamic robots outputs.
- Assert advertised sitemap URLs are reachable under the intended production host/base path and that preview/noindex controls are not accidentally applied to production hosts.
-
mise run check:links:prod:blog,mise run check:links:prod:ds, andmise run check:links:prod:ui- Add Playwright link-health specs for the remaining Cloudflare-deployed public apps.
- Include them in a broadened
mise run check:links:prodonly after the specs are stable.
-
Known-broken link expiry check
- Extend
e2e/shared/known-broken-links.tsentries with owner/date/reason/expiry metadata or add a static check that fails on stale exceptions.
- Extend
Narrow verification performed#
bash
1mise tasks | rg 'check:links|test:e2e|e2e|cf:build|cf:publish|verify:root-runtime|test:smoke|build:sitemap|robots|sitemap'bash
1find e2e tools docs .docs -maxdepth 3 -type f | sort | head -200bash
1find apps -maxdepth 3 \( -name 'sitemap.*' -o -name 'robots.*' \) -printbash
1rg -n "generate-sitemap|sitemap|robots|metadata|generateMetadata|canonical|openGraph|twitter" \2 package.json .mise.toml turbo.json e2e tools apps/{www,docs,blog,academy,design-system,ui-library,manager} -S