Done
- CSA submodule
- Developer tests, contrast checking and readability scoring
- Custom check GUI
- Dashboard maintenance tools to refresh old results (update titles and paths, remove deleted pages, remove pages with parameters)
- A site crawling tool to add new results.
- Allow certain tests (is this PDF accessible?) to dismiss alerts site-wide for certain roles.
- Split configuration: developer v content role-based reports and interface to only show certain checks to developers, or handle alternate preferences
- Core module
- Merge test core with Sa11y to create a co-developed ruleset
- Interface translation (16 languages at start, plus variants for en-gb and en-ca)
- Views relationships to add full support for custom filters and columns
- Move CSV exports to a new CSV Exports submodule based on contrib Views modules, so they can run as configurable batch processes for huge sites.
- Obtain a grant to launch a sponsoring org to fund work on future project ideas and support existing users
- Implement batching for bulk dismissals.
- Rewrite dashboard to display with extended filters, via entity references, re-implement dismissal purging from the dashboard, drop pages with no remaining results or dismissals after API actions.
- New DB structure with entity references rather than storing extended data where possible.
- Handle misc breaking changes for d12
- Update hooks to modify tables and update the API.
- Swapped icon positions
- Figured out how to handle schema issues.
- Basic Drupal Canvas compatibility
- Detect and alert on missing config.
- Rewrite results/dismissals tables and views to communicate based on result key rather than title, and add index columns.
- Rewrite page parameter handling.
Problem/Motivation
Several users have mentioned wanting to filter the results dashboard by various things -- groups membership, pages they have authored or recently edited, node published status, etc. Making this easy to do in Views requires refactoring the custom DB tables. As this is a massively breaking change, it makes sense to group together many feature requests that also affect DB structure decisions, and contemplate a sustainable support model for the next wave of much-more-complex features.
Proposed resolution
- Rewrite the backend to create a separate pages table that can be mapped into Views relationships to create user/term/node connections. The goal is getting Views to be able to pull result counts in content dashboards, the Editoria11y dashboard to display and filter by extended data (e.g., draft/published, author), and the inline GUI to display node-level results from other checkers (e.g., broken links on page).
- Rewrite library to ES6 and merge test suites with Sa11y. Editoria11y has spent the last 5 years building out the server APIs and live-edit functionality; Sa11y has been writing test after test after test. Adam and John have been talking about merging test suites into a single shared repo for years. It's time.
- Manage the feature-explosion: maintain the turnkey "core" largely unchanged (except for much more useful Views!), and place the more complicated or niche features in submodules.
- Build out a "split configuration" system, so developers/designers and content editors can see different sets of tests.
Deferred/roadmap feature wish-list
- Consider adding another action on tips to mark manual checks as confirmed errors.
- Dismissal notes & pinned to-dos
- Event based email alerts ("Someone posted a PDF," "To-do assigned")
- Link checking
- Flagged words
- Multi-site content governance features: client/host submodules
User interface changes
The default dashboard Views now display the current page title rather than the recorded title for any pages without path parameters, and provide many more filters and sort options against "live" data in other tables (e.g.: Node authored by, Node last edited by, Node creation date, Node updated date, Node published status...).
API changes
Quite a few changes, but I do not think anyone else is targeting the API directly. I am now basing DB operations on result keys ("altNull") rather than the human-readable name, and passing the human-readable names through Drupal translation in views.
Data model changes
There are now three tables:
- ed11y_page, NEW: has metadata for each record with Views connections to Nodes, Terms and User bio pages
- ed11y_result: several columns removed and moved into the editoria11y_pages table
- ed11y_action: several columns removed and moved into the editoria11y_pages table, and the "stale" boolean is now "stale_date," to allow for future maintenance operations to drop older stale records.
| Comment | File | Size | Author |
|---|---|---|---|
| #7 | Screenshot 2025-05-30 at 6.12.06 PM.png | 116.61 KB | joeg8612 |
Issue fork editoria11y-3492299
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
itmaybejj commentedComment #3
itmaybejj commentedComment #4
itmaybejj commentedComment #5
itmaybejj commentedComment #6
itmaybejj commentedComment #7
joeg8612 commentedWe had the same need that you mention in your problem/motification. We did make a view that allows authors to see the results at a high level and filter by their organization.

https://github.com/massgov/openmass/pull/2571/files
Comment #8
itmaybejj commentedComment #11
itmaybejj commentedComment #12
itmaybejj commentedComment #13
itmaybejj commentedComment #14
itmaybejj commentedComment #15
itmaybejj commentedComment #16
itmaybejj commentedComment #17
itmaybejj commentedComment #18
itmaybejj commentedComment #19
itmaybejj commentedComment #22
itmaybejj commentedBatching moved into new sub-module with separate dependencies, so that users can define their own export fields.
Comment #23
itmaybejj commentedComment #24
itmaybejj commentedComment #29
itmaybejj commentedComment #30
itmaybejj commentedComment #31
itmaybejj commentedComment #35
itmaybejj commentedComment #36
itmaybejj commentedComment #44
itmaybejj commentedComment #45
itmaybejj commentedComment #46
itmaybejj commentedComment #47
itmaybejj commentedComment #48
itmaybejj commentedComment #55
itmaybejj commentedWork and testing complete; RC1 tagged.
Comment #57
itmaybejj commentedComment #58
itmaybejj commentedComment #59
itmaybejj commentedComment #60
itmaybejj commentedComment #61
itmaybejj commentedComment #62
itmaybejj commentedComment #63
itmaybejj commented