Engine · MPL-2.0 dependency, unmodified

axe-core does the measuring. The rest is the product.

We use the same open rule engine most credible scanners use, and we say so. What separates a report you can send from a report you cannot is everything we build around it.

Licence
MPL-2.0, used as a dependency
Modified
No. Wrapper only
Injection
Playwright, chromium, per page
Attribution
Published on /legal/attributions

Why we use an open engine and name it

Rule engines are commodity infrastructure. Writing a private one would mean re-deriving hundreds of checks, and a client would still have to take our word for what a finding means. An open engine can be audited by the developer who has to fix the code.

The trade is that the engine is not a moat, and we do not pretend it is. Our work sits in the layers a procurement reviewer actually reads: the clause mapping, the regression history, the manual sign-off and the sealed pack that ties them together.

What rules catch, and what they cannot

The first eight rows are machine-checkable. The last three are in every serious audit and no engine can decide them.

Rules the engine can decide, their typical impact, and the checks that need a person
RuleWhat it detectsTypical impactDecided by
image-altImages without a text alternativecriticalautomated
color-contrastText below the contrast ratioseriousautomated
labelForm fields without a programmatic labelcriticalautomated
link-nameLinks with no discernible nameseriousautomated
target-sizeTargets under 24 by 24 CSS pixelsseriousautomated
html-has-langMissing or wrong language attributeseriousautomated
heading-orderHeading levels skippedmoderateautomated
aria-*Invalid roles, states and propertiescriticalautomated
focus orderWhether the order makes sense—manual
keyboard trapsWhether a user can leave a widget—manual
screen reader flowWhether the page reads coherently—manual

What Conforma adds on top of the engine

Raw rule output is a list. What a client needs is a chain of custody with a history and a name attached to the judgement calls.

96
rules mapped to an EN 301 549 clause and a WCAG success criterion, with our own repair copy
3
signals per finding: fingerprint for diffing, status for workflow, and a note thread for the argument
12
manual criteria that no rule engine can judge, recorded with video and a named tester

Automated testing covers a subset of accessibility barriers. Manual verification is required for a complete assessment.

How it runs inside the pipeline

  • Playwright opens each page in chromium, waits for the network to settle, injects the engine and runs the configured rule set at the level and version the site is monitored against.
  • Unmodified engine output is archived per page, so any claim can be traced back to the exact measurement that produced it.
  • Each violation becomes a finding with a fingerprint of rule, selector and path, which is how a fix that returns after a deploy is reported as a regression.
  • Our own short description and repair suggestion are attached per rule, in place of copied standard text, so a developer gets a next step rather than a quotation.

Licence, attribution and trademark

axe-core is published by Deque Systems under the Mozilla Public License 2.0. We consume it as an unmodified dependency: the library is installed from its published package, injected into the page at runtime by Playwright, and never edited. Because no MPL-covered file is changed, no file-level copyleft obligation is triggered on our own source; the licence text and the copyright notice travel with the dependency and are reproduced on our attributions page.

We do not use the “axe” trademark in our product name, our domain, our logo or our marketing claims. Conforma is not affiliated with or endorsed by Deque Systems. Naming the engine is a statement of provenance so a developer can verify a finding against the upstream rule, not a borrowed endorsement.

If the engine is upgraded, the version used for a scan is recorded in the run metadata and travels inside the evidence pack, so a finding from March can still be traced to the exact rule set that produced it.

Library
axe-core, by Deque Systems
Licence
Mozilla Public License 2.0
Use
Unmodified dependency, wrapped
Trademark
Not used in our name or marketing

Questions we get on this

Do you modify axe-core?

No. It is a dependency under MPL-2.0, injected at runtime, wrapped rather than edited. Attribution is published, and the axe trademark is not used in our product name or marketing.

So is Conforma just a wrapper?

The engine is one stage. Crawling, clause mapping, regression diffing, manual workflow, statement generation and the sealed evidence pack are ours, and they are what gets read in a tender.

Which impact levels are reported?

Critical, serious, moderate and minor. We keep those labels, weight them into a score, and always show the raw counts next to it so the weighting is visible.

See engine output turned into a report

Ten pages, mapped findings, and the raw output archived behind them. No account needed.