Skip to content

Building Test and Accessibility Gates with GitHub Actions

This is Part 17 of the “Frontend Testing, Done Right” series. Browse the full series · Glossary Tests have no power while they’re “something you run locally, sometimes.” They protect a team only once they become a checkpoint that runs on every PR. This article builds that checkpoint with GitHub Actions — a merge gate where unit tests, E2E, and accessibility checks must pass before code can merge — from a single workflow file. Never touched CI? Fine. Three minutes of vocabulary first. ...

Published date: 2026-08-03 · Reading time: 6 min · Word count: 1250 words · Author: Isaac

WCAG 3 Migration: Do You Need It Yet? Moving On from WCAG 2.2

Introduction This is the seventh post in the WCAG 3.0 series. The expanded scope post looked at how far WCAG 3.0 reaches “beyond the web.” This time, I want to answer a question a lot of people keep asking me. “Should we migrate to WCAG 3.0?” Short answer up front: not yet. But there’s an important nuance to that answer. “Conformance” and “improvement” are two different conversations. Source document: This post is based on the W3C Working Draft of March 3, 2026. Drafts are generally updated on a roughly six-month cycle, so details may have shifted by the time you’re reading this. ...

Published date: 2026-08-03 · Reading time: 9 min · Word count: 1785 words · Author: Isaac

The EU AI Act Is Now in Force — Where Accessibility Hooks In

AI regulation news usually sounds like someone else’s problem. Banned use cases, fines as a percentage of revenue — that reads like legal’s department, not ours. But a provision that takes effect on August 2 contains this sentence: Ensure that high-risk AI systems comply with the accessibility requirements in accordance with Directives (EU) 2016/2102 and (EU) 2019/882 Those two directives are the Web Accessibility Directive and the European Accessibility Act (EAA). In other words, an AI regulation has pulled accessibility standards into itself. Whether you’re building an AI system or deploying one, once it’s classified as high-risk, accessibility stops being “nice to have” and becomes a conformity assessment item. ...

Published date: 2026-07-30 · Reading time: 4 min · Word count: 1964 words · Author: Isaac

Visual Regression Testing — Screenshot Comparison

This is Part 16 of the “Frontend Testing, Done Right” series. Browse the full series · Glossary Ever had every test green while the screen was broken? Logic fine, one CSS rule collapsing the layout? Visual regression testing stores a reference screenshot (the baseline) and compares pixels, automatically catching “regressions only eyes can see.” It’s built into Playwright — one line to start — but there’s a knack to stable shots and an ambush called environment differences. All covered here. ...

Published date: 2026-07-29 · Reading time: 11 min · Word count: 2153 words · Author: Isaac

The World Works Better With Us — July Is Disability Pride Month

There’s a month that doesn’t show up on most calendars, yet is observed all over the world. July — Disability Pride Month. The pairing of “disability” and “pride” can feel unfamiliar at first. The emotional register we’re used to around disability observances tends to be “consideration” or “overcoming.” Pride Month tells a different story: disability isn’t something to overcome or to hide — it’s a natural part of who a person is. ...

Published date: 2026-07-28 · Reading time: 6 min · Word count: 1116 words · Author: Isaac

The Web Is Less Accessible Than a Year Ago — The WebAIM Million 2026 Report

WebAIM Million 2026 scanned the top million home pages: errors per page rose to 56.1, up 10.1% in a year, reversing years of progress. Covers the top 6 recurring errors and the ARIA paradox.

Published date: 2026-07-28 · Updated 2026-09-23 · Reading time: 8 min · Word count: 1618 words · Author: Isaac

Which Pages Do You Audit Out of Thousands?

Say you run an accessibility checker. You feed it a site’s URL, and the checker has to decide: which pages should it actually look at? Is the homepage enough? If so, you don’t have much basis for saying “this site is accessible” or “this site isn’t.” But checking every page isn’t realistic either — forums, blogs, and shopping sites can have hundreds or thousands of posts. Auditing all of them blows the time and cost budget. ...

Published date: 2026-07-28 · Reading time: 8 min · Word count: 3678 words · Author: Isaac

Accessibility E2E — Scanning with @axe-core/playwright

This is Part 15 of the “Frontend Testing, Done Right” series. Browse the full series · Glossary Whether a button has a name, you can tell by looking at that button. But whether its text contrasts enough with the background, whether the page declares a language, whether an id is duplicated — you can’t tell from one element. You have to look at the whole screen, and at the state it’s actually rendered in. That’s tiring to do by eye every time, which is exactly why you want an automated checking engine. ...

Published date: 2026-07-27 · Reading time: 11 min · Word count: 2248 words · Author: Isaac

Accessibility Evaluation Has a Standard Too — WCAG-EM 2.0, Twelve Years Later

W3C has published WCAG-EM 2.0, its accessibility evaluation methodology, twelve years after 1.0. What changed — from websites to apps, e-books and kiosks — the five-step procedure, sampling and random checks, and how it maps to Korea's certification.

Published date: 2026-07-24 · Updated 2026-08-12 · Reading time: 15 min · Word count: 2986 words · Author: Isaac

The Zombie Task Stuck in 'Scanning' — Vercel Deployment Protection Was the Culprit

There’s a moment when you’re idly scrolling a running service’s logs and your hand stops. That day, I hit that moment in the audit logs of A11y Check, a web accessibility auditing service. Two audits had been stuck “scanning” for hours. Not in progress, not failed — just stuck. This is what people call a zombie task: a job left in the queue, neither dead nor alive. This is the story of catching those two zombies, of two fixes I was sure of missing, and of finding the real cause only on the third try. To skip to the end: the culprit wasn’t my logic but Vercel’s Deployment Protection — or more precisely, my internal-call code that didn’t account for it. ...

Published date: 2026-07-24 · Reading time: 9 min · Word count: 1845 words · Author: Isaac
맨 위로