Lighthouse: raise a11y/SEO floors to 0.95 (closes #125) - #161
Merged
Conversation
Three audits held content pages at 0.91-0.94 accessibility: - list: wp:navigation had no inner links, so core fell back to the Page List block, nesting <ul class="wp-block-page-list"> directly inside the navigation <ul> (invalid list children). Header and footer navs now declare explicit navigation-link inner blocks. - heading-order: product grids used h3 titles straight after the h1 (archive + taxonomy templates), the footer column headings were h3 with no h2 before them on functional pages, and the USP strip used h3 after the shop-landing hero h1. All normalized to h2; the explicit fontSize presets keep the rendered size identical. - The archive/taxonomy h1 also mis-rendered the first product's title via wp:post-title outside the loop; replaced with wp:query-title (showPrefix:false) so /shop/ renders "Shop" and category pages render the term name. Verified against the seeded Docker stack: a11y 0.96 (/), 0.96 (/shop/), 0.97 (/product/test-hoodie/), 1.0 (/cart/) across 3 runs each. The only remaining ding is WooCommerce's mini-cart drawer aria-hidden-focus (pre-hydration markup), documented in tests/lighthouse/README.md. Refs #125 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Closes the calibration follow-up from PR #124: - categories:accessibility -> 0.95 on both assertMatrix entries and categories:seo -> 0.95 on content pages. The theme's own SEO layer (inc/seo.php, PR #116, merged after the #124 calibration run) already brought content SEO to 1.0, and the theme a11y fixes brought scores to 0.96-1.0, so the floors now bind just below observed headroom. - Upload .lighthouseci/ (LHR JSON + HTML reports) as a lighthouse-reports build artifact (30-day retention) so the specific failing audits are readable after the ~7-day temporary-public-storage link expires. - Document the residual WooCommerce-owned audit (mini-cart drawer aria-hidden-focus on pre-hydration markup) and refresh the floor tables and calibration history in tests/lighthouse/README.md and CONTRIBUTING.md. Verified green locally against the seeded Docker stack: lhci assert passes all 4 URLs x 3 runs at the new floors. Closes #125 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #125 — raises the Lighthouse accessibility and SEO category floors from the 0.90 calibration value to 0.95, after fixing the theme-controlled audits that were holding scores down.
Theme a11y fixes (
themes/flavian-shop/)listaudit (all pages): the header/footerwp:navigationblocks had no inner links, so core's Page List fallback nested<ul class="wp-block-page-list">directly inside the navigation<ul>— invalid list children. Both navs now declare explicitwp:navigation-linkinner blocks.heading-orderaudit (/shop/,/cart/): product-grid titles wereh3directly after the pageh1, and the footer column headings wereh3with no precedingh2. Normalized toh2(explicitfontSizepresets keep rendering identical). Same fix applied to the USP strip on the shop-landing template.h1usedwp:post-titleoutside the loop, which rendered the first product's title ("Test Beanie") as the page title on/shop/. Replaced withwp:query-title(showPrefix:false) →/shop/renders "Shop", category pages render the term name.SEO
No new work needed: the theme SEO layer (
inc/seo.php, #116) merged after the #124 calibration run and already closed themeta-descriptiongap — content SEO now measures 1.0 on all three content pages. That's option (b) from the issue, already shipped.CI
categories:accessibility→ 0.95 (bothassertMatrixentries),categories:seo→ 0.95 (content entry; functional pages stay unasserted — WooCommercenoindex).lighthouse-reportsbuild artifact (raw.lighthouseci/LHR JSON + HTML, 30-day retention) so specific failing audits stay readable after the temporary-public-storage link expires (~7 days).aria-hidden-focus(pre-hydration Interactivity API markup), which the theme can't fix without dropping the mini-cart.Verification
Ran the exact CI sequence locally (Docker stack + WooCommerce installer +
tests/visual/seed.sh, thenlhci collect/assert), 3 runs per URL, deterministic://shop//product/test-hoodie//cart/pnpm lighthouse:assertpasses all 4 URLs × 3 runs at the new floors.🤖 Generated with Claude Code