Invisible Button Text Passed Axe CI Checks Due to 'Incomplete' Classification Gap
A developer discovered that a button label rendered completely invisible in dark mode — with identical text and background colors — never triggered a CI failure because axe-core classified the 1:1 contrast issue as 'incomplete' rather than a 'violation'. Axe intentionally avoids flagging matching foreground-background colors as violations because identical values can be a legitimate technique for hiding elements, such as visually-hidden labels or decorative text. Most testing pipelines, however, only assert on violations and silently discard incomplete results, creating a blind spot where the most severe contrast defects are least likely to cause a build failure. The developer recommends surfacing incomplete findings separately, avoiding the resultTypes: ['violations'] config option that truncates incomplete results, and diffing findings across rendering states rather than relying on raw counts. They also released an open-source tool called a11y-matrix that runs axe across multiple states — including dark mode, reduced motion, and narrow viewports — and reports only what each state uniquely breaks.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in