test: #3621203 Name the colour contrast and top-level heading accessibility rules in the home page regression scenarios
Adds one scenario to tests/features/07-quality/07-01-accessibility.feature naming color-contrast and page-has-heading-one on the Home page, plus an explicit single-h1 assertion, in the file's own style and tag line. No other feature is touched and nothing is restructured.
Both rules regressed on a sibling Varbase site template (color-contrast fixed in #3621197, the missing front-page h1 addressed in #3621201 and #3621200). This suite already gates Home on impact level and on color-contrast through the pass the accessibility rules step, so this adds the named page-has-heading-one gate it did not have and states in the file what the contrast rule can and cannot see.
Closes #3621203.
What the new scenarios genuinely cover
page-has-heading-one and exactly one h1 are real gates. Measured against a Varbase 11 site built from Varbase Starter (drupal/varbase_starter 1.0.x-dev of 29 August 2026, drupal/vartheme_bs5 5.0.0-rc4), the home page renders zero h1 elements; its first heading is an h2 ("Varbase, better than ever"). axe reports page-has-heading-one [moderate] as the only violation on that page. Both new assertions fail on that build and pass once the heading fix lands, which is exactly what a regression guard should do.
color-contrast gates the rendered text of the page. It does not cover the footer social icons, and that is why the existing "no serious accessibility violations" scenario never reported the 4.27:1 defect. The links carry font-size: 0 on their label text and draw a Bootstrap Icons glyph from a ::before pseudo-element, so axe-core's color-contrast rule never evaluates them. Verified by forcing the pre-fix colour back on in the browser:
.block-system-menu-blocksocial-media-menu a { color: #0d6efd !important; }
=> axe color-contrast violations: 0 (2 nodes reported "incomplete")#0d6efd on the #f8f9fa footer background is 4.27:1, the exact figure in the report, and axe still says nothing. Any axe-based color-contrast scenario is therefore vacuous with respect to those icons. Real coverage needs an assertion on the icon colour itself rather than an axe rule; that is left for a follow-up rather than implied here.
AI policy
AI-Generated: Yes — authored with Claude, per the Policy on the use of AI when contributing to Drupal.
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release