Accessibility
What we test, what passes, and what we know is not right yet.
Last reviewed 10 August 2026.
Where we stand
AffyLink aims to meet WCAG 2.2 Level AA across the marketing site and the application, and to meet the Level AAA contrast requirement (1.4.6 Contrast (Enhanced), 7:1 for body text) everywhere we control the colours.
We do not claim full Level AAA conformance, and we would be sceptical of anyone who did. Several AAA criteria are judgements about meaning rather than properties of a page — reading level, sign-language interpretation of prerecorded audio, avoiding unfamiliar words without a definition — and no tool decides them. Claiming AAA because a scanner reported zero errors would be claiming something we have not established.
How we test
Every change runs an automated audit before it can be released. We use axe-core driven through a real Chromium browser, with all Level A, AA and the machine-checkable AAA rules enabled, on:
- every public page, in both light and dark mode
- the dashboard, links, keywords, analytics, settings and billing screens, in both modes
- keyboard navigation — that every control can be reached by tab, and that the focused element is always visible
- that the cookie notice does not cover the controls beneath it (WCAG 2.2 · 2.4.11)
A build with a new violation does not ship. Both themes are audited separately because they are separate palettes; testing one and assuming the other is how a dark mode ends up at 3:1 contrast.
Worth being plain about the limits: automated testing catches roughly a third of accessibility problems. It reliably finds missing labels, poor contrast and broken structure. It cannot tell you whether a label is useful, whether an error message explains how to fix the error, or whether a screen reader announces a live update at a sensible moment. Those need people.
What we have done
- Colour is never the only way information is conveyed — the current settings tab is marked with
aria-current, not just an underline. - Every chart has an equivalent data table for screen readers, and a text description of what it shows.
- Every interactive control has a visible focus ring, specified separately for light and dark mode.
- The theme is chosen by you and remembered, and respects your operating system's preference until you choose.
- Settings tabs are ordinary links with real URLs, so they work with the back button and with assistive technology that navigates by link.
- Form fields have programmatically associated labels and help text.
Known gaps
Listed because a statement without them is marketing.
- No screen-reader testing by a screen-reader user. Our checks are automated and keyboard-based. We have not sat with somebody who uses NVDA or VoiceOver daily, and until we do there will be things we have not noticed.
-
The affiliate links we insert into your pages inherit your theme.
We add
rel="nofollow sponsored"and a disclosure, but the contrast of a link on your site is set by your stylesheet, not ours. - Third-party embeds. The Stripe billing portal and checkout are Stripe's pages; we do not control their markup.
- AAA criteria beyond contrast are unassessed. Reading level and plain-language criteria in particular.
- Six marketing pages still fail enhanced contrast in dark mode — the home page, pricing, FAQ, contact, sign-in and sign-up. The cause is worth being specific about: until August 2026 the dark-mode toggle did not actually reach every part of the page, so those sections had never been rendered dark. Fixing the toggle is what revealed them. They meet the standard in light mode, and the application itself meets it in both.
- The cookie notice is a third-party component (whitecube/laravel-cookie-consent) whose stylesheet has no dark-mode variant and loads after ours. We have overridden what we can. Its button labels are still low-contrast on a dark background.
Tell us
If any part of AffyLink is difficult or impossible for you to use, we want to know — including if it is something in the list above. Get in touch through the contact page and say what you were trying to do and what happened.
We will reply within five working days, and we will tell you plainly whether we are going to fix it and roughly when, rather than thanking you for the feedback and going quiet.