Skip to main content

Evidence · the latest runs

What our own scan found

We scan both Setsquare sites with the same SDK you can install, at WCAG 2.2 AA and at AAA, in both themes, at every width the suite runs, and publish everything it found, including what it couldn’t decide. The figures are read from the runs, not typed in, and a test fails if they stop matching.

You are reading the AA results, because that is the level this site is showing you. Switch the level in the footer to read the other run.

www.setsquare.dev

Assessed
3 October 2026, 09:23 UTC
Against
WCAG 2.2 AA
Engine
axe-core 4.13.0, with the Setsquare rule pack
Cookies set
None, and no third-party request
rules failing
0
None detected
elements that need a person
180
Across six rules, in section 03
scans
36
six pages at three widths
criteria with no automated result
33
Section 04 says why

docs.setsquare.dev

Assessed
3 October 2026, 09:49 UTC
Against
WCAG 2.2 AA
Engine
axe-core 4.13.0, with the Setsquare rule pack
Cookies set
None, and no third-party request
rules failing
0
None detected
elements that need a person
32
Across seven rules, in section 03
scans
366
61 pages at three widths
criteria with no automated result
33
Section 04 says why

01Against the standard

All 86 criteria of WCAG 2.2

Every criterion, by what this run could say about it. Held means every automated rule mapped to it held on every page, which is a smaller statement than passed.

Results by WCAG level for each site at AA. The bar in each row draws that row’s figures.
LevelHeldFailingNeeds a personNo automated resultNothing to checkTotalShare, drawn
www.setsquare.dev
Level A120321431
Level AA11022924
Level AAA00129131
docs.setsquare.dev
Level A120421331
Level AA11022924
Level AAA00129131

02What failed

No rule failed at AA.

Which is evidence that the automated rules held, not a claim that the site is accessible.

03Needs a person

What the engine couldn’t decide

Neither a pass nor a failure, so it’s stated rather than folded into either. Each rule links to the criterion it reports on.

Rules that returned needs a person, by site, at AA.
RuleCriterionLevelElementsScans
www.setsquare.dev
setsquare-meaningful-sequence1.3.2Level A12012
setsquare-headings-and-labels2.4.6Level AA606
setsquare-dragging-movements2.5.7Level AA036
setsquare-keyboard-no-exception2.1.3Level AAA036
setsquare-pointer-cancellation2.5.2Level A036
setsquare-pointer-gestures2.5.1Level A036
docs.setsquare.dev
setsquare-keyboard-trap2.1.2Level A204
setsquare-headings-and-labels2.4.6Level AA124
setsquare-dragging-movements2.5.7Level AA0366
setsquare-focus-order2.4.3Level A04
setsquare-keyboard-no-exception2.1.3Level AAA0366
setsquare-pointer-cancellation2.5.2Level A0366
setsquare-pointer-gestures2.5.1Level A0366

04No automated result

33 criteria no rule could answer on www.setsquare.dev

15 criterions need a kind of analysis no test run does yet, and each says what would have to change. One criterion is about a set of pages this run could not compare. 17 others have no rule yet.

  • 2.3.1

    Three Flashes or Below Threshold Level A

    Because counting flashes means analysing rendered frames for luminance change over area and time.It would change if frame capture and analysis became affordable in a test run; the algorithm is published and is not the obstacle.
  • 1.4.5

    Images of Text Level AA

    Because finding text inside an image needs OCR, and then deciding whether that text is essential to the image — a logo, a diagram label — is a judgement OCR cannot make.It would change if OCR were paired with a defensible rule for what counts as essential; the first half is available today and the second is the reason this has not been built.
  • 1.2.6

    Sign Language (Prerecorded) Level AAA

    Because deciding that a video IS sign language, and of which language, needs to watch it.It would change if sign-language recognition became reliable, which is an active research area.
  • 1.2.7

    Extended Audio Description (Prerecorded) Level AAA

    Because the criterion applies only "where pauses in foreground audio are insufficient to allow audio descriptions to convey the sense of the video", which is a judgement about the soundtrack that nothing in markup answers. Its one sufficient technique is a movie with extended descriptions built in; the track element appears under its ADVISORY techniques, so even finding one would not establish the criterion.It would change if audio analysis could measure whether the pauses in a soundtrack are long enough to carry the description the video needs, which is the question the criterion is defined by.
  • 1.2.8

    Media Alternative (Prerecorded) Level AAA

    Because the sufficient technique is a link to an alternative placed next to the media, and which link on a page IS that alternative is a judgement about its text — in whatever language the page is written. A transcript, an alternative version and a marketing page look the same to a rule, and whether the alternative is EQUIVALENT to the media is a second judgement on top of the first.It would change if a page could declare which link is the alternative for a given media element, which no markup provides; a suite that tests its own transcript link can say so through `setsquare.covers()`.
  • 1.2.9

    Audio-only (Live) Level AAA

    Because the criterion is about LIVE audio-only content, and a page does not say whether its media is live — an `<audio>` element streaming now and one playing a recording are the same markup. Whether an alternative presents EQUIVALENT information is a judgement on top of that.It would change if a page declared its media as live, which no markup does; a suite that knows its own content is live can say so through `setsquare.covers()`.
  • 1.4.7

    Low or No Background Audio Level AAA

    Because separating foreground speech from background audio needs to analyse the audio.It would change if audio source separation ran cheaply enough to be part of a test run.
  • 1.4.9

    Images of Text (No Exception) Level AAA

    Because finding text inside an image needs OCR, and at AAA almost no image of text is permitted at all — so the judgement becomes whether the image is one of the narrow exceptions.It would change if OCR were paired with a defensible rule for what counts as essential.
  • 2.2.3

    No Timing Level AAA

    Because proving that no part of a page has a time limit means proving a negative about behaviour nobody triggered.It would change if a suite declared which of its tests exercise timed content — which is what `setsquare.covers()` is for.
  • 2.2.6

    Timeouts Level AAA

    Because it needs a timeout to exist and a warning about it, and a page declares neither. How long a session lasts is a server’s judgement about risk and nothing on the page states it.It would change if a suite declared a test that waits out a timeout, which is what `setsquare.covers()` is for; a page could also state its own timeout, and none does.
  • 2.3.2

    Three Flashes Level AAA

    Because counting flashes means analysing rendered frames for luminance change over area and time, and at AAA there is no exception for a small area.It would change if frame capture and analysis became affordable in a test run.
  • 2.3.3

    Animation from Interactions Level AAA

    Because deciding that an animation is decorative rather than essential is a judgement about what the animation is for.It would change if nothing plausible; whether motion is essential is a question about intent, though a suite can declare it with `setsquare.covers()`.
  • 2.5.6

    Concurrent Input Mechanisms Level AAA

    Because this needs two real input devices used at once, which a browser cannot simulate.It would change if a driver could present touch and pointer simultaneously as real devices.
  • 3.1.3

    Unusual Words Level AAA

    Because an unusual word is unusual RELATIVE TO AN AUDIENCE, and no tool knows who is reading.It would change if nothing plausible; the criterion is defined against a readership the page does not declare.
  • 3.1.6

    Pronunciation Level AAA

    Because knowing that a word needs a pronunciation guide means knowing that it is ambiguous to the reader in this context.It would change if nothing plausible; the same audience problem as 3.1.3.
  • 3.2.6

    Consistent Help Level A

    About a set of pages: this run could not compare them.

33 criteria no rule could answer on docs.setsquare.dev

15 criterions need a kind of analysis no test run does yet, and each says what would have to change. One criterion is about a set of pages this run could not compare. 17 others have no rule yet.

  • 2.3.1

    Three Flashes or Below Threshold Level A

    Because counting flashes means analysing rendered frames for luminance change over area and time.It would change if frame capture and analysis became affordable in a test run; the algorithm is published and is not the obstacle.
  • 1.4.5

    Images of Text Level AA

    Because finding text inside an image needs OCR, and then deciding whether that text is essential to the image — a logo, a diagram label — is a judgement OCR cannot make.It would change if OCR were paired with a defensible rule for what counts as essential; the first half is available today and the second is the reason this has not been built.
  • 1.2.6

    Sign Language (Prerecorded) Level AAA

    Because deciding that a video IS sign language, and of which language, needs to watch it.It would change if sign-language recognition became reliable, which is an active research area.
  • 1.2.7

    Extended Audio Description (Prerecorded) Level AAA

    Because the criterion applies only "where pauses in foreground audio are insufficient to allow audio descriptions to convey the sense of the video", which is a judgement about the soundtrack that nothing in markup answers. Its one sufficient technique is a movie with extended descriptions built in; the track element appears under its ADVISORY techniques, so even finding one would not establish the criterion.It would change if audio analysis could measure whether the pauses in a soundtrack are long enough to carry the description the video needs, which is the question the criterion is defined by.
  • 1.2.8

    Media Alternative (Prerecorded) Level AAA

    Because the sufficient technique is a link to an alternative placed next to the media, and which link on a page IS that alternative is a judgement about its text — in whatever language the page is written. A transcript, an alternative version and a marketing page look the same to a rule, and whether the alternative is EQUIVALENT to the media is a second judgement on top of the first.It would change if a page could declare which link is the alternative for a given media element, which no markup provides; a suite that tests its own transcript link can say so through `setsquare.covers()`.
  • 1.2.9

    Audio-only (Live) Level AAA

    Because the criterion is about LIVE audio-only content, and a page does not say whether its media is live — an `<audio>` element streaming now and one playing a recording are the same markup. Whether an alternative presents EQUIVALENT information is a judgement on top of that.It would change if a page declared its media as live, which no markup does; a suite that knows its own content is live can say so through `setsquare.covers()`.
  • 1.4.7

    Low or No Background Audio Level AAA

    Because separating foreground speech from background audio needs to analyse the audio.It would change if audio source separation ran cheaply enough to be part of a test run.
  • 1.4.9

    Images of Text (No Exception) Level AAA

    Because finding text inside an image needs OCR, and at AAA almost no image of text is permitted at all — so the judgement becomes whether the image is one of the narrow exceptions.It would change if OCR were paired with a defensible rule for what counts as essential.
  • 2.2.3

    No Timing Level AAA

    Because proving that no part of a page has a time limit means proving a negative about behaviour nobody triggered.It would change if a suite declared which of its tests exercise timed content — which is what `setsquare.covers()` is for.
  • 2.2.6

    Timeouts Level AAA

    Because it needs a timeout to exist and a warning about it, and a page declares neither. How long a session lasts is a server’s judgement about risk and nothing on the page states it.It would change if a suite declared a test that waits out a timeout, which is what `setsquare.covers()` is for; a page could also state its own timeout, and none does.
  • 2.3.2

    Three Flashes Level AAA

    Because counting flashes means analysing rendered frames for luminance change over area and time, and at AAA there is no exception for a small area.It would change if frame capture and analysis became affordable in a test run.
  • 2.3.3

    Animation from Interactions Level AAA

    Because deciding that an animation is decorative rather than essential is a judgement about what the animation is for.It would change if nothing plausible; whether motion is essential is a question about intent, though a suite can declare it with `setsquare.covers()`.
  • 2.5.6

    Concurrent Input Mechanisms Level AAA

    Because this needs two real input devices used at once, which a browser cannot simulate.It would change if a driver could present touch and pointer simultaneously as real devices.
  • 3.1.3

    Unusual Words Level AAA

    Because an unusual word is unusual RELATIVE TO AN AUDIENCE, and no tool knows who is reading.It would change if nothing plausible; the criterion is defined against a readership the page does not declare.
  • 3.1.6

    Pronunciation Level AAA

    Because knowing that a word needs a pronunciation guide means knowing that it is ambiguous to the reader in this context.It would change if nothing plausible; the same audience problem as 3.1.3.
  • 3.2.6

    Consistent Help Level A

    About a set of pages: this run could not compare them.

05Every surface

Every page, in both themes, at every width

These name a width, not a device. Nothing here detects what a page was opened on — a 640px viewport is in the mobile band whether it is a phone or a desktop browser with text at 200%. The exact size is always shown beside the name.

Each page’s scans at AA: the themes scanned at each width, and how many scans in all.
PageLaptop · 1280 × 720Tablet · 768 × 1024Mobile · 390 × 844Scans
www.setsquare.dev
/LightDarkLightDarkLightDark6
/evidence/LightDarkLightDarkLightDark6
/accessibility/LightDarkLightDarkLightDark6
/glossary/LightDarkLightDarkLightDark6
/sitemap/LightDarkLightDarkLightDark6
/report/LightDarkLightDarkLightDark6
All pages12121236
docs.setsquare.dev
/LightDarkLightDarkLightDark6
/:id/LightDarkLightDarkLightDark6
/components/LightDarkLightDarkLightDark6
/configuration/LightDarkLightDarkLightDark6
/coverage/LightDarkLightDarkLightDark6
/how-it-decides/LightDarkLightDarkLightDark6
/lanes/LightDarkLightDarkLightDark6
/naming/LightDarkLightDarkLightDark6
/recipes/LightDarkLightDarkLightDark6
/reference/LightDarkLightDarkLightDark6
/rules/LightDarkLightDarkLightDark6
/rules/setsquare-abbreviations/LightDarkLightDarkLightDark6
/rules/setsquare-audio-description-or-media-alternative/LightDarkLightDarkLightDark6
/rules/setsquare-audio-description/LightDarkLightDarkLightDark6
/rules/setsquare-authentication-enhanced/LightDarkLightDarkLightDark6
/rules/setsquare-authentication-minimum/LightDarkLightDarkLightDark6
/rules/setsquare-captions-aa/LightDarkLightDarkLightDark6
/rules/setsquare-captions-aaa/LightDarkLightDarkLightDark6
/rules/setsquare-captions/LightDarkLightDarkLightDark6
/rules/setsquare-change-on-request/LightDarkLightDarkLightDark6
/rules/setsquare-context-help/LightDarkLightDarkLightDark6
/rules/setsquare-dragging-movements/LightDarkLightDarkLightDark6
/rules/setsquare-error-prevention-all/LightDarkLightDarkLightDark6
/rules/setsquare-error-prevention-legal/LightDarkLightDarkLightDark6
/rules/setsquare-error-suggestion/LightDarkLightDarkLightDark6
/rules/setsquare-focus-appearance/LightDarkLightDarkLightDark6
/rules/setsquare-focus-obscured-enhanced/LightDarkLightDarkLightDark6
/rules/setsquare-focus-obscured/LightDarkLightDarkLightDark6
/rules/setsquare-focus-order/LightDarkLightDarkLightDark6
/rules/setsquare-focus-visible/LightDarkLightDarkLightDark6
/rules/setsquare-headings-and-labels/LightDarkLightDarkLightDark6
/rules/setsquare-hover-content/LightDarkLightDarkLightDark6
/rules/setsquare-identify-purpose/LightDarkLightDarkLightDark6
/rules/setsquare-key-shortcuts/LightDarkLightDarkLightDark6
/rules/setsquare-keyboard-no-exception/LightDarkLightDarkLightDark6
/rules/setsquare-keyboard-trap/LightDarkLightDarkLightDark6
/rules/setsquare-link-purpose/LightDarkLightDarkLightDark6
/rules/setsquare-location/LightDarkLightDarkLightDark6
/rules/setsquare-meaningful-sequence/LightDarkLightDarkLightDark6
/rules/setsquare-motion-actuation/LightDarkLightDarkLightDark6
/rules/setsquare-non-text-contrast/LightDarkLightDarkLightDark6
/rules/setsquare-on-focus/LightDarkLightDarkLightDark6
/rules/setsquare-on-input/LightDarkLightDarkLightDark6
/rules/setsquare-pointer-cancellation/LightDarkLightDarkLightDark6
/rules/setsquare-pointer-gestures/LightDarkLightDarkLightDark6
/rules/setsquare-reading-level/LightDarkLightDarkLightDark6
/rules/setsquare-reauthentication/LightDarkLightDarkLightDark6
/rules/setsquare-redundant-entry/LightDarkLightDarkLightDark6
/rules/setsquare-reflow/LightDarkLightDarkLightDark6
/rules/setsquare-section-headings/LightDarkLightDarkLightDark6
/rules/setsquare-sensory-characteristics/LightDarkLightDarkLightDark6
/rules/setsquare-status-messages/LightDarkLightDarkLightDark6
/rules/setsquare-target-size-aaa/LightDarkLightDarkLightDark6
/rules/setsquare-target-size-delegated/LightDarkLightDarkLightDark6
/rules/setsquare-target-size-revealed/LightDarkLightDarkLightDark6
/rules/setsquare-text-spacing/LightDarkLightDarkLightDark6
/rules/setsquare-visual-headings/LightDarkLightDarkLightDark6
/rules/setsquare-visual-presentation/LightDarkLightDarkLightDark6
/sitemap/LightDarkLightDarkLightDark6
/widths-themes-personas/LightDarkLightDarkLightDark6
/your-tests/LightDarkLightDarkLightDark6
All pages122122122366

06The runs

Which runs these were

Enough to reproduce each one: the commit of the build that was scanned, its branch and the exact ruleset. A run outside the system of record says so.

www.setsquare.dev, 3 October 2026

Commit
7f8a130fd9d218ba39868c7724ea47eb2f623657
Branch
marketing-on-setsquare-ui
Ruleset digest
sha256:d47a52e6d1b83aa5c4397836c7f83c642ed570186d9d9e7e3f16eab9ef752327
Status
Local, not canonical

docs.setsquare.dev, 3 October 2026

Commit
7f8a130fd9d218ba39868c7724ea47eb2f623657
Branch
marketing-on-setsquare-ui
Ruleset digest
sha256:d47a52e6d1b83aa5c4397836c7f83c642ed570186d9d9e7e3f16eab9ef752327
Status
Local, not canonical

07What this is not

Read this as a lab result, not a badge

  • It isn’t a conformance claim

    Deque measured automated tests finding 57% of issues in first audits. No rules failing is evidence that the automated rules held, which is a smaller statement than this site is accessible.

  • The undecided checks aren’t passes

    Needs a person is neither a pass nor a failure: it is stated, rather than absorbed into either.

  • It’s one run per level, not a trend

    A local run keeps no history and no baselines, so there is nothing here to compare it against.

  • There’s no percentage

    A percentage needs a denominator we would have to invent. You get the whole table instead.

Run the same scan on your own suite.

The SDK that produced this page is the one you install, and it has no network client: nothing leaves your machine.

Read the quick start
The SDK
npm i -D @setsquare/review-sdknpx setsquare initnpx playwright test