PHPackages                             uniwue/uw\_a11y\_check - 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. uniwue/uw\_a11y\_check

ActiveTypo3-cms-extension

uniwue/uw\_a11y\_check
======================

Configurable a11y check for tt\_content and extension records

6.0.1(11mo ago)71.0k3[3 issues](https://github.com/uniwue-rz/uw_a11y_check/issues)GPL-2.0+PHPCI passing

Since Nov 14Pushed 6mo ago2 watchersCompare

[ Source](https://github.com/uniwue-rz/uw_a11y_check)[ Packagist](https://packagist.org/packages/uniwue/uw_a11y_check)[ RSS](/packages/uniwue-uw-a11y-check/feed)WikiDiscussions master Synced 1mo ago

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

TYPO3 a11y check
================

[](#typo3-a11y-check)

This TYPO3 extension has been developed for the [Julius-Maximilians-Universität Würzburg](https://www.uni-wuerzburg.de).

What is it?
-----------

[](#what-is-it)

The TYPO3 extension "uw\_a11y\_check" aims to provide the functionality to evaluate **editor generated content**against a configurable set of accessibility checks.

How it works?
-------------

[](#how-it-works)

It is assumed, that the main template of the TYPO3 website is A11Y compliant, which is usually done by the TYPO3 integrator. So basically, the template generated frontend output of a page (e.g. header, footer, menus, ...) can be excluded from A11Y checks when only editor generated content has to be processed.

In order to only check the editor generated content the extension comes with a custom plugin, which renders all content elements of a given page. This frontend output of those content elements is then checked against a configuable set of accessibility checks.

Editor generated content in record (e.g. ext:news record) can also be checked by providing a custom page where the plugin of the affected extension is in place to render a view (e.g. detail view).

The extension is highly configurable and comes with a limited set of A11Y checks, which are processed by analyzing generated HTML content. It is however possible to implement custom checks (e.g. processed by a 3rd party A11Y checker)

**Note:** The included internal tests using symfony domcrawler do only analyze the structure of the DOM and do not respect any post-modifications to generated HTML e.g. by JavaScript. If you require more precise A11Y checks (e.g. through a 3rd party A11Y check), this can be archieved using a custom analyzer (see section "Customization")

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

[](#installation)

The extension can be used in composer and non-composer environments. For non-composer environments, the extension automatically includes required dependencies (mainly several symfony packages).

After installing the extension, the static TypoScript "TYPO3 Accessibility Check" must be included in your TypoScript template.

Once installed and configured, the following components are available:

- "Accessibility Check" backend module
- Symfony command `uw_a11y_check:check:presetByPageUid` to check a TYPO3 page/sysfolder with a given preset
- Symfony command `uw_a11y_check:check:presetByRecordUids` to check a list of record with a given preset

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

[](#configuration)

### Requirements:

[](#requirements)

- An extension (e.g. sitepackage), where you can add the configuration of the A11Y Check extension
- A "blank" backend layout, which is configured to only output content of one column and not include headers, footer, menus, ...

### Setup with default configuration

[](#setup-with-default-configuration)

The extension is configured with YAML files. It includes a default configuration, that **must** be overwritten with a custom configuration. The default configuration includes 2 check presets, which will use the provided default testsuites with internal A11Y checks.

In order to overwrite the default configuration, add the following code snippet to the `ext_localconf.php` of an existing extension (e.g. website site package).

1. Overwrite default configuration

It is possible to overwrite the default configuration by eigher a custom YAML configuration file or by using TYPO3 site settings, which are available since TYPO3 10.4

1.1 Overwrite configuration by custom YAML configuration file

This is recommended, if you want to overwrite or create a completely new configuration for the extension.

```
$GLOBALS['TYPO3_CONF_VARS']['UwA11yCheck']['Configuration'] = 'EXT:your_sitepackage/Configuration/A11y/Default.yaml';

```

1.2 Overwrite configuration by TYPO3 site settings

If you just want to override single configuration values from the default configuration, it is possible to use TYPO3 site configuration as shown below:

```
settings:
  uw_a11y_check:
    presets:
      pageContent:
        checkUrlGenerator:
          configuration:
            targetPid: 71
      extNews:
        checkUrlGenerator:
          configuration:
            targetPid: 73

```

Next you should copy the contents of the default configuration to your configuration file.

2. Create pages with plugins for page content and ext:news (if installed)

Create 2 pages in the TYPO3 pagetree in a new sysfolder and assign the "blank" backend layout to each page.

- On the page for the page content, add the plugin "Display content elements for a11y check"
- On the page for ext:news records, add and configure the ext:news plugin and ensure to set the displaymode to "Detailview"

Example screenshot of the page structure.

[![Page structure](Documentation/Images/a11y-config-pages.png)](Documentation/Images/a11y-config-pages.png)

3. Add the page uids to configuration

In your configuration (eiter YAML file or TYPO3 site settings), you must add the page UIDs in the `checkUrlGenerator`configuration for each preset.

Example (shortened):

```
presets:
  pageContent:
    checkUrlGenerator:
      configuration:
        targetPid: 216471

```

The A11Y check for the preset `pageContent` will now use PID 216471 to render all content elements of the page to check. Basically, the PID is only important for the extension to generate the check-URL where rendered content is fetched.

Backend module
--------------

[](#backend-module)

Once the extension is configured, the backend module can be used to execute configured check presets.

[![A11Y Module Index](Documentation/Images/a11y-module-index.png)](Documentation/Images/a11y-module-index.png)

Example output of check result for a preset that checks page content elements:

[![A11Y Module - output page content](Documentation/Images/a11y-module-result-content.png)](Documentation/Images/a11y-module-result-content.png)

Example output of check result for a preset that checks ext:news records:

[![A11Y Module - output page content](Documentation/Images/a11y-module-result-news.png)](Documentation/Images/a11y-module-result-news.png)

Commands
--------

[](#commands)

The extension comes with 2 symfony console commands to process A11Y analysis in CLI context. Checkresults will be saved to the database.

### Command: presetByPageUid

[](#command-presetbypageuid)

The command `uw_a11y_check:check:presetByPageUid` will check a TYPO3 page / sysfolder (recursive if configured) with a given preset.

Example command: `./typo3/sysext/core/bin/typo3 uw_a11y_check:check:presetByPageUid pageContent 184470`

Example output:

[![A11Y Module - output page content](Documentation/Images/a11y-command-output-content.png)](Documentation/Images/a11y-command-output-content.png)

### Command: presetByRecordUids

[](#command-presetbyrecorduids)

The command `uw_a11y_check:check:presetByPageUid` will check a list of record with a given preset

Example command: `./typo3/sysext/core/bin/typo3 uw_a11y_check:check:presetByRecordUids extNews 42527,58611`

Example output:

[![A11Y Module - output page content](Documentation/Images/a11y-command-output-news.png)](Documentation/Images/a11y-command-output-news.png)

### View results checks processed by commands

[](#view-results-checks-processed-by-commands)

It is possible to view saved check results using the extension backend module. If a saved resultset exists, a notice is shown (see example screenshot below):

[![A11Y Module - output page content](Documentation/Images/a11y-module-result-saved.png)](Documentation/Images/a11y-module-result-saved.png)

Customization
-------------

[](#customization)

It is possible to customize the analysis logic of the extension. If e.g. the output of an Extbase extension need to be analyzed, you can add a custom analyzer together with a custom CheckUrlGenerator and implement analysis logic.

If the default internal tests do not fulfill your requirements or if you want to use an external A11Y check, you can implement a testsuite with custom tests.

The included analyzers, checkUrlGenerators and testSuites should give a detailled overview of, how the analyze logic is created and how it can be customized.

### Analyzers

[](#analyzers)

Analyzers provide the execution logic for A11Y checks. The extension comes with 2 analyzers (`PageContentAnalyzer` and `NewsAnalyzer`) which are used in configuration presets. The analyzer will fetch the page content for the A11Y check, process all configured testsuites of a preset and will return the result of the check.

### CheckUrlGenerators

[](#checkurlgenerators)

A CheckUrlGenerator is used to create links to internal pages, where plugins (see Configuration step 2) have been added.

### Testsuites

[](#testsuites)

Testsuites are usually a group of single A11Y checks, which are executed by the configured analyzer. The extension comes with a testsuite of internal tests, which do A11Y analysis of rendered HTML content using symfony crawler.

### Presets

[](#presets)

Presets (configured in the YAML configuration) define a logical set of one analyzer, one checkUrlGenerator and the configuration for all included testsuites. Note, that all testsuites will be executed for each preset.

Versions
--------

[](#versions)

VersionTYPO3PHPSupport/Development6.x13.48.2 - 8.4Features, Bugfixes, Security Updates5.x12.48.1 - 8.4Features, Bugfixes, Security Updates4.x11.57.4 - 8.4Bugfixes, Security Updates3.x10.47.2 - 7.4Security UpdatesReporting a Vulnerability
-------------------------

[](#reporting-a-vulnerability)

Please report vulnerabilities to .

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance53

Moderate activity, may be stable

Popularity25

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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 ~107 days

Recently: every ~8 days

Total

20

Last Release

338d ago

Major Versions

1.0.5 → 3.0.02020-11-05

3.x-dev → 4.0.02023-09-26

4.x-dev → 5.0.02025-05-06

5.0.0 → 6.0.02025-05-06

5.0.2 → 6.0.12025-06-08

### Community

Maintainers

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

---

Top Contributors

[![derhansen](https://avatars.githubusercontent.com/u/2629896?v=4)](https://github.com/derhansen "derhansen (124 commits)")

---

Tags

accessibilityTYPO3 CMSa11y

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/uniwue-uw-a11y-check/health.svg)

```
[![Health](https://phpackages.com/badges/uniwue-uw-a11y-check/health.svg)](https://phpackages.com/packages/uniwue-uw-a11y-check)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M2.6k](/packages/craftcms-cms)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[api-platform/symfony

Symfony API Platform integration

323.2M67](/packages/api-platform-symfony)

PHPackages © 2026

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