PHPackages                             priebera/typo3-a11y-quality-gate - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. priebera/typo3-a11y-quality-gate

ActiveTypo3-cms-extension[Testing &amp; Quality](/categories/testing)

priebera/typo3-a11y-quality-gate
================================

TYPO3 accessibility checker and quality gate with CKEditor feedback, WCAG issue management, rendered page checks and editor workflows.

v1.6.0(1mo ago)01GPL-2.0-or-laterPHPPHP ^8.2

Since Mar 12Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/priebera1/typo3-a11y-quality-gate)[ Packagist](https://packagist.org/packages/priebera/typo3-a11y-quality-gate)[ Docs](https://typo3.priebera.sk/products/accessibility-quality-gate)[ RSS](/packages/priebera-typo3-a11y-quality-gate/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (8)Dependencies (15)Versions (10)Used By (0)

TYPO3 Extension `a11y_quality_gate`
===================================

[](#typo3-extension-a11y_quality_gate)

[![TYPO3 13.4 LTS | 14](https://camo.githubusercontent.com/c8af5181eed924a6679f522cb0bf946465d5d39873ec0d58ac8d758a69d37002/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31332e342532304c545325323025374325323031342d6f72616e67652e737667)](https://camo.githubusercontent.com/c8af5181eed924a6679f522cb0bf946465d5d39873ec0d58ac8d758a69d37002/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31332e342532304c545325323025374325323031342d6f72616e67652e737667)[![PHP 8.2+](https://camo.githubusercontent.com/5fe05c705bf034839bda7651781e4d0a9d42f4a840478ca5e343873a0361bb89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322b2d626c75652e737667)](https://camo.githubusercontent.com/5fe05c705bf034839bda7651781e4d0a9d42f4a840478ca5e343873a0361bb89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322b2d626c75652e737667)[![License](https://camo.githubusercontent.com/d865d3f061b5bdb93940bfc940d9e431166c9a28b20e625622a9d77854d1e3c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d677265656e2e737667)](https://camo.githubusercontent.com/d865d3f061b5bdb93940bfc940d9e431166c9a28b20e625622a9d77854d1e3c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d677265656e2e737667)[![State](https://camo.githubusercontent.com/70d01ea4ff32fa365696f304429fcbc9fc8aa95a3a73481969838e0c9af45470/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53746174652d737461626c652d627269676874677265656e2e737667)](https://camo.githubusercontent.com/70d01ea4ff32fa365696f304429fcbc9fc8aa95a3a73481969838e0c9af45470/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53746174652d737461626c652d627269676874677265656e2e737667)

Accessibility Quality Gate brings accessibility checks directly into the TYPO3 editorial workflow.

It combines CKEditor inline feedback, backend issue management, manual and automated scans, a rendered HTML check and configurable quality gate rules to help editors and integrators catch common accessibility issues before content goes live.

More information, pricing, documentation and portal access are available on the project website:

****

---

Features
--------

[](#features)

### Free — no licence key required

[](#free--no-licence-key-required)

- CKEditor 5 inline highlighting for accessibility issues
- Backend overview and page detail modules
- Issue tracking with ignore / unignore workflow and expiry dates
- Stable issue fingerprints across rescans
- Batch ignore workflow with required reason confirmation
- Per-rule enable / disable in Settings
- Manual scans via backend module and CLI
- Automated local scans via TYPO3 Scheduler
- Changed-only scan mode for incremental rescans
- Quality gate warning mode on page publish / unhide; editors can continue after reviewing the warning
- FREE rendered page check — inspects the live server-rendered HTML of the current page
- CSV export
- TCA-based field discovery for `tt_content` RTE and file fields
- Settings module for enabling and disabling scanned fields
- Built-in rules that help identify common WCAG 2.1 AA-related accessibility issues in RTE content, structured fields and rendered HTML

### Trial / PRO / Agency

[](#trial--pro--agency)

- Remote browser accessibility scans via Playwright + axe-core
- Remote browser scan results with issue breakdown and screenshot preview
- PDF export for overview and page detail reports
- Remote CSV export
- Per-site quality gate configuration
- Quality gate blocking mode on publish / unhide
- Diff tracking for new and resolved issues across scans
- Multi-site support for agencies

Plan details, trial access and pricing:

- Trial: ****
- Pricing: ****

---

Requirements
------------

[](#requirements)

- TYPO3 13.4 LTS or TYPO3 14
- PHP 8.2 or higher
- No additional services required for the Free version

---

Screenshots
-----------

[](#screenshots)

### Overview

[](#overview)

[![Overview module](Documentation/Images/overview.png)](Documentation/Images/overview.png)

### Page detail

[](#page-detail)

[![Page detail](Documentation/Images/page-detail.png)](Documentation/Images/page-detail.png)

### CKEditor inline highlighting

[](#ckeditor-inline-highlighting)

[![CKEditor highlighting](Documentation/Images/ckeditor-inline-highlighting.png)](Documentation/Images/ckeditor-inline-highlighting.png)

---

Links
-----

[](#links)

**Website****Documentation****Trial****Pricing****Portal****Repository****TER**[https://extensions.typo3.org/extension/a11y\_quality\_gate/](https://extensions.typo3.org/extension/a11y_quality_gate/)---

Compatibility
-------------

[](#compatibility)

VersionTYPO3PHPSupport1.4+13.4 LTS / 14.3+8.2+Features and bugfixes1.3.x13.4 LTS8.2+Security and bugfixes---

Built-in rules
--------------

[](#built-in-rules)

AQG includes rules across three categories. For the full reference with WCAG mappings and fix guidance see the documentation: ****

### RTE rules — CKEditor and RTE HTML content

[](#rte-rules--ckeditor-and-rte-html-content)

Rule IDSeverityWCAG`rte.img_alt_missing`Critical1.1.1`rte.img_alt_is_filename`Warning1.1.1`rte.img_alt_too_long`Warning1.1.1`rte.img_alt_redundant_phrase`Warning1.1.1`rte.empty_heading`Critical1.3.1`rte.empty_link`Critical2.4.4 / 4.1.2`rte.button_label_missing`Critical4.1.2`rte.table_missing_header`Warning1.3.1`rte.table_th_missing_scope`Warning1.3.1`rte.table_missing_caption`Info1.3.1`rte.duplicate_id`Warning1.3.1`rte.svg_missing_title`Warning1.1.1`rte.iframe_missing_title`Critical4.1.2`rte.image_in_link_missing_alt`Critical1.1.1 / 2.4.4`rte.marquee_or_blink`Critical2.2.2`rte.non_descriptive_link`Warning2.4.4`rte.heading_hierarchy_jump`Warning1.3.1`rte.link_new_window_no_warning`Warning3.2.2`rte.link_text_is_url_or_filename`Warning2.4.4`rte.link_to_document`Needs review2.4.4`rte.link_to_document_missing_notice`Info2.4.4`rte.link_text_duplicate_different_targets`Warning2.4.4### Structured rules — TCA field values

[](#structured-rules--tca-field-values)

Rule IDSeverityWCAG`structured.file_reference_alt`Critical1.1.1`structured.file_reference_alt_quality`Warning1.1.1`structured.header_ctype_empty`Warning1.3.1`structured.header_link_no_text`Critical2.4.4 / 4.1.2`structured.header_level_is_h1`Needs review1.3.1`structured.uploads_file_missing_description`Warning2.4.4`structured.table_missing_caption`Info1.3.1`structured.form_placeholder_as_label`Warning1.3.1 / 3.3.2`structured.form_field_label_missing`Critical1.3.1 / 3.3.2`structured.form_autocomplete_missing`Warning1.3.5`structured.media_no_transcript_hint`Needs review1.2.1Some structured rules may adjust severity depending on the detected case, for example missing alternative text versus title-only fallback.

### Rendered HTML rules — FREE, manual, server-rendered HTML only

[](#rendered-html-rules--free-manual-server-rendered-html-only)

Rendered checks run during **Scan this page** only. They inspect the final server-rendered HTML returned by TYPO3 and do not execute JavaScript, AJAX or lazy-loaded content.

Rule IDSeverityWCAG`rendered.img_missing_alt`Critical1.1.1`rendered.empty_link`Critical2.4.4`rendered.empty_button`Critical4.1.2`rendered.empty_heading`Critical1.3.1`rendered.iframe_missing_title`Critical4.1.2`rendered.form_control_missing_label`Critical1.3.1 / 3.3.2`rendered.duplicate_id`Warning1.3.1`rendered.table_missing_header`Warning1.3.1`rendered.table_empty_header`Warning1.3.1`rendered.svg_missing_accessible_name`Warning1.1.1`rendered.html_lang_missing`Critical3.1.1`rendered.page_title_missing`Warning2.4.2`rendered.main_landmark_missing`Needs review1.3.6---

Installation
------------

[](#installation)

```
composer require priebera/typo3-a11y-quality-gate
```

Then run TYPO3 extension setup and flush caches:

```
./vendor/bin/typo3 extension:setup
./vendor/bin/typo3 cache:flush
```

Next:

1. Open the Accessibility Quality Gate module in the TYPO3 backend
2. Run **Re-scan TCA** in Settings once
3. Configure a Scheduler task or run scans manually via backend module or CLI

For full setup and usage instructions see the documentation: ****

---

Configuration
-------------

[](#configuration)

### Field settings

[](#field-settings)

In the Settings module you can:

- refresh supported fields from TCA
- enable or disable individual fields and rules
- control which fields are included in future scans

Changes are applied only after clicking **Save settings**.

### Quality Gate

[](#quality-gate)

A default ruleset is created automatically on first use.

FieldDescription`threshold_critical`Maximum allowed open critical issues`threshold_warning`Maximum allowed open warnings (`-1` disables the warning threshold)`publish_mode``0` = disabled, `1` = warn, `2` = block (PRO)For site-specific rulesets set `site_identifier` to match the TYPO3 site configuration identifier.

---

CLI usage
---------

[](#cli-usage)

```
# Scan a subtree
./vendor/bin/typo3 a11y:scan --root-pid=1

# Scan a single page
./vendor/bin/typo3 a11y:scan --page-uid=42

# Scan changed content only
./vendor/bin/typo3 a11y:scan --root-pid=1 --changed-only

# Scan a specific language
./vendor/bin/typo3 a11y:scan --root-pid=1 --language=1
```

---

Backend User TSconfig
---------------------

[](#backend-user-tsconfig)

```
options.a11y_quality_gate {
    showToolbarItem = 1
    showScanAll = 1
    showScanNow = 1
}

```

OptionDefaultDescription`showToolbarItem``1`Show the AQG item in the TYPO3 backend toolbar`showScanAll``1`Show the "Scan site" button in the overview module`showScanNow``1`Show the "Scan this page" button in page and record-related views---

Scope
-----

[](#scope)

AQG helps teams identify common accessibility issues early in the TYPO3 editorial workflow. It is not a legal certification tool and cannot guarantee WCAG, EAA, BITV or any other accessibility compliance on its own.

The Free rendered page check analyzes server-rendered HTML only. It does not execute JavaScript, wait for AJAX or lazy-loaded content, interact with cookie banners or take screenshots. Browser-based crawling, screenshots and axe-core checks are part of the Trial / PRO remote scanner.

Accessibility Quality Gate does not replace a full accessibility audit, keyboard testing, assistive technology testing or a professional WCAG review. Some rules reflect best practices and may not always correspond to a hard WCAG 2.1 failure in every context. All findings should be reviewed in context.

---

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance91

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~12 days

Recently: every ~5 days

Total

9

Last Release

36d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f160c11d03a2aeb48995aab14faeef1599c5f87ef4420bb9ce2bbb32c5e9e388?d=identicon)[priebera1](/maintainers/priebera1)

---

Tags

CKEditoraccessibilitytypo3wcagtypo3-extensiona11ybfsgaccessibility checkerEAAquality-gatetypo3-accessibilityeditor-workflowaccessibility-auditbitv

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/priebera-typo3-a11y-quality-gate/health.svg)

```
[![Health](https://phpackages.com/badges/priebera-typo3-a11y-quality-gate/health.svg)](https://phpackages.com/packages/priebera-typo3-a11y-quality-gate)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k57](/packages/friendsoftypo3-content-blocks)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.1M8](/packages/netresearch-rte-ckeditor-image)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[aimeos/aimeos-typo3

Professional, full-featured and high performance TYPO3 e-commerce extension for online shops and complex B2B projects

1.6k94.1k6](/packages/aimeos-aimeos-typo3)[typo3/testing-framework

The TYPO3 testing framework provides base classes for unit and functional testing.

685.5M1.2k](/packages/typo3-testing-framework)[friendsoftypo3/visual-editor

TYPO3 CMS Visual Editor - Brings a modern WYSIWYG editing experience to TYPO3 CMS.

576.1k2](/packages/friendsoftypo3-visual-editor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
