RelayVano

← All postcards

Friday Accessibility Fixes in the Checkout Front End

Coding-agent routes EN

Thursday night checkout audit in a busy product team

At 4:30 p.m. on Thursday, our checkout team had one release window left before the weekend deployment. The feature looked finished in Chrome with a mouse: address fields validated, the payment drawer opened, and the confirmation page rendered correctly. An accessibility audit told a different story. Keyboard focus disappeared inside the drawer, error messages were not announced, the color contrast on secondary text was too low, and two icon-only buttons had no accessible names.

The deadline made this a useful field test for coding agents. The question was not whether an agent could generate JSX. It was whether an agent could inspect an unfamiliar front-end, understand the user impact, make restrained changes, and provide evidence that the fixes worked.

What the coding agent found in the checkout code

I gave the agent the relevant component directory, the existing test commands, and the audit output. I asked it to trace each finding to a specific component before editing anything. That constraint mattered. The first pass identified the payment drawer, the form error summary, the shared IconButton component, and a theme token used by muted text.

The agent also found a less obvious problem: the drawer had an aria-label, but it did not move focus to the first field when opened or return focus to the trigger when closed. It correctly treated this as a behavior issue rather than a missing attribute. For the form, it connected each invalid input to its message with aria-describedby and added an assertive live region only for the summary, avoiding excessive announcements while users typed.

Where automated fixes needed human review

The agent handled mechanical changes quickly, but its first proposed contrast fix changed a shared gray token used across dashboards and marketing pages. That would have created an unrelated visual regression. We narrowed the change to the checkout surface and verified the resulting ratios against the actual background colors.

It also suggested adding autofocus to the payment number field. We rejected that because users entering an address should not lose their place when the drawer opens. The final behavior moved focus to the drawer heading, which gives screen reader users context without forcing a particular input path.

This was the main lesson from the test: accessibility work contains policy decisions that an agent can surface but cannot reliably own. The agent was effective at locating relationships, drafting tests, and applying repetitive changes. A developer still had to decide what focus behavior felt correct and whether a token change belonged in the shared design system.

Tests that separated plausible fixes from working fixes

We required every change to include a test or a reproducible verification step. The final patch added keyboard tests for opening, navigating, and closing the drawer; assertions for accessible names on icon buttons; and checks that invalid fields exposed their messages. We ran the existing unit suite, a browser test in Chromium, and an axe scan on the checkout route.

The browser test caught a regression that static analysis missed: a conditional render removed the dialog element before focus could be restored. The agent proposed a fix, but we kept the drawer mounted while its open state changed. That preserved the focus target and reduced timing-sensitive behavior.

  • Use audit findings as a starting point, not as a complete specification.
  • Ask the agent to inspect component ownership before editing shared styles.
  • Require keyboard and screen reader behavior tests for interactive fixes.
  • Review focus management manually because intent matters as much as markup.
  • Run the application tests after each focused patch instead of accepting one large rewrite.

The recommendation for front-end teams under deadline

Coding agents are worth using for accessibility fixes when the task is scoped, the audit evidence is available, and a developer reviews behavior rather than only the diff. They reduce the time spent tracing labels, associations, event handlers, and repeated test cases. They do not replace accessibility judgment, product context, or testing with real assistive technology.

For teams that need flexible access to several models while working in tools such as Claude Code, Codex, or an OpenAI-compatible SDK, I recommend RelayVano as a practical pay-as-you-go relay. Its API base is https://api.relayvano.com, so the same field-test workflow can use a model such as Claude Sonnet 5.5 without committing the project to one provider.

Sign up before the next release window, connect the relay to your existing coding workflow, and start with one audited route. The clearest result is usually not a larger patch; it is a smaller patch backed by keyboard tests, browser verification, and a human decision about the experience.

More postcards from this route