chore(release): 4.12.1 - #5152
Merged
Merged
Conversation
Migrating Karma to use Web Test Runner (WTR). Out of the box it has some problems that needed to be addressed, and some things we'll need to get use to using a new test runner. * WTR uses Playwright by default, but Playwright doesn't support Firefox Nightly. We'll use the Selenium driver in order to support that * However the Selenium driver automatically runs each test inside an iframe, which we do not want (and also breaks our tests). The Selenium driver doesn't have an option to disable this, so had to hack a way around this to ensure each test ran in the root document and no iframe * WTR runs each test file in an isolated Mocha context, so using `.only` no longer works across test files, just within the file it's used in. A bit annoying, but we can get use to this (tried to hack a way around this but it became way too complicated and broke a bunch of other stuff). `develop` still will watch files and run the changed test file for us * WTR `--manual` is used to replace `test:debug`. This didn't have a UI at first, so added the `html` style mocha reporter that we are use to. The only difference now is that the browser doesn't open automatically (have to press 'D') and that the landing page is a list of links to each test file * WTR doesn't have a preprocess step like Karma had, so we had to move it to it's own file and do the preprocessing for integration tests before we run them Additionally: * Noticed that our axe.log stubbing in various tests weren't working since we moved to ES6 modules (the code directly calls `log` and doesn't go through `axe.log`), this meant the asserts testing the messages weren't being run at all. So I fixed that by adding a `axe._setLogger` helper that would let us designate the logger stub. This allows us to both stub the logger or suppress it (so we don't have to see performance timer logs in tests, etc.) * Puppeteer was [failing a lot recently](https://github.com/dequelabs/axe-core/actions/runs/26545263689/job/78398503218) so fixed that while I was here * WTR can support both our current test loading (relying on global axe and properties) and es6 imports to the `lib` directory. I updated `performance-timer` to show this being possible. This means we should be able to remove the `_thisWillBeDeletedDoNotUse` property that was added just to get things to the test and we can import those directly in the tests that need them. However, this isn't something we can do right away as the imported file is a different context from the same file being imported in axe (since we bundle the axe files together). This means file scope/state is different so we can't import the new `setLogger` function directly in tests and use it as it doesn't set the axe.js bundled `logger` variable scope. Closes #5115
This was an accidental breaking change if anyone uses `RuleMetadata` directly. --------- Co-authored-by: Jonathan Garbee <[email protected]> Co-authored-by: Chris Hutchins <[email protected]> Co-authored-by: Wilco Fiers <[email protected]>
In preparation for #5044, this will allow us to declaratively set aria prop values on the `testutils-element` using `with-aria-*` attributes (mimicking the `with-role` attribute). It handles converting idref(s) attributes to their DOM nodes.
WilcoFiers
approved these changes
Jun 10, 2026
WilcoFiers
left a comment
Contributor
There was a problem hiding this comment.
Release audit
In hindsight, I think we should have split that PR. There are two bug fixes in a single PR. They're related to the same feature, but they're separate issues.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bug Fixes