Skip to content

[A11Y-196] Restore the V0 link text label association - #554

Merged
dancormier merged 1 commit into
v0from
A11Y-196/backport-v0-link-text-label
Oct 8, 2026
Merged

dancormier merged 1 commit into
v0from
A11Y-196/backport-v0-link-text-label

Conversation

@dancormier

@dancormier dancormier commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

https://stackoverflow.atlassian.net/browse/A11Y-196

Summary

Restore the link-text label fix from #530 to the V0 release line. It shipped in 0.15.5 but was missing from the branch used to release 0.16.0, causing an accessibility regression. This patch retains WebP support and prepares a 0.16.1 release.

Changes

  • Match the Link text input ID to its visible label’s for attribute, restoring the native label association required by WCAG 1.3.1.
  • Backport regression coverage for both link-dialog labels and verify their associated controls.
  • Add browser coverage for accessible field names, keyboard focus, and saved link text/destination.
  • Add a patch changeset; no dependency or styling changes.

This is a focused backport of the SO_49 label fix, not a reimplementation of the broader A11Y-196 toolbar work.

How to test

Using Node 24 LTS:

  1. Run npm ci, then npm start -- --port 8080.
  2. Open http://localhost:8080/, select rich-text mode, and open the Link dialog.
  3. With a screen reader enabled, confirm the fields are announced as Link URL and Link text. Tab from the URL field to Link text; focus should remain visible.
  4. Enter a URL and link text, then save. Confirm the destination and displayed text are preserved.
  5. Run npm run test:unit -- --runInBand, npm run test:e2e, npm run test:release-config, npm run lint, npx tsc --noEmit, and npm run prepublishOnly.

Locally, 1,094 unit tests, all 198 browser tests across Chromium/Firefox/WebKit, and 8 release-config tests passed. Lint, type-check, and packaging build passed with existing warnings. Browser tests used an isolated server on port 8082.

The new unit test reproduced the failure before the fix. Compiled source/type comparison against published 0.15.5 showed only the intended WebP default difference after restoration.

Manual screen-reader checks and verification in consuming applications remain pending.

Preview: Open deploy preview.

Success criteria

From A11Y-196; unchecked items remain outside this focused backport or require downstream verification:

  • The Link text input has a programmatic label matching its visible label.
  • Toolbar actions expose valid button semantics and useful accessible names.
  • Every toolbar action is operable without a mouse.
  • Toolbar focus order is logical and focus remains visible.
  • Tooltip/help content needed to understand a control is available on keyboard focus.
  • The fix is verified in question, article, and tag-history editors.
  • Existing editor shortcuts and formatting behavior continue to work.

@netlify

netlify Bot commented Oct 8, 2026

Copy link
Copy Markdown

✅ Deploy Preview for stacks-editor ready!

Name Link
🔨 Latest commit 4febead
🔍 Latest deploy log https://app.netlify.com/projects/stacks-editor/deploys/6ac8143501463600080efcfa
😎 Deploy Preview https://deploy-preview-554--stacks-editor.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@dancormier
dancormier marked this pull request as ready for review October 8, 2026 22:09
@dancormier
dancormier requested a review from a team as a code owner October 8, 2026 22:09
@dancormier
dancormier merged commit 87f49b4 into v0 Oct 8, 2026
10 checks passed
@dancormier
dancormier deleted the A11Y-196/backport-v0-link-text-label branch October 8, 2026 22:11
@stacks-tooling stacks-tooling mentioned this pull request Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant