Skip to content

Accessibility Audit 1.3.0: crawl order, budgets, stable IDs, states, and loading - #5

Merged
HosseinKarami merged 2 commits into
mainfrom
fix/1.3.0-multisite-run
Nov 3, 2026
Merged

HosseinKarami merged 2 commits into
mainfrom
fix/1.3.0-multisite-run

Conversation

@HosseinKarami

Copy link
Copy Markdown
Member

Summary

Version 1.3.0. Fixes from the second full audit of the large WordPress multisite, with 1.2.0. The list had 12 items. Each item has a fix and a test, and each check of an item fails on 1.2.0. The details are in CHANGELOG.md.

The crawl order and the budgets (items 1, 2, 3)

  • After the settings pages, one address of each four comes from the links. Before, a large sitemap filled the time budget, and the audit opened no address that only links give.
  • When the page time ends, a quick check with no browser looks at the addresses that are left. It finds the redirects, the broken links, and the files.
  • An address with no request counts in the new pages_not_opened, not in pages_found. max_pages counts the opened pages only.
  • An address group chooses its addresses from the whole sitemap before the crawl. The new order is sample (the default), newest, or first.

The results and the IDs (items 4 to 7)

  • The identity of an element leaves out the random parts of ids and names that the site makes new on each render. The issue ID stays. An issue of 1.2.0 that gets a new ID for this reason keeps its status, origin, and solution. The old ID is "rule changed", not "fixed".
  • A page that loads at one width only stays tested, with widths_not_loaded.
  • An address from a sitemap or an API that is not a page names its source in found_in.
  • page-not-linked gives one question for each section, with what the crawl did not open there and why.

The loading and the detection (items 8, 9)

  • A page has 45 seconds for its document, then crawl.load_wait_seconds (20) for its load event. Then the engine tests the page as it is, and the report names it.
  • The contrast check of the letters of a transparent image runs right after the load. It runs again after the other tests, for the images of a later slide.

The states and the log (items 10, 11)

  • A state finds its control again in a new render: by its identity, then by its tag and name. The engine finds the controls before the focus and operate tests change the page.
  • A dialog that is open before the click, for example a search box with role="dialog", is not the dialog of the state.
  • Each state that does not count has a reason in the log, and summary.json gives states_planned and states_not_applied.
  • The log gives the count from each source after the seed.

The install (item 12)

  • The README gives the npm 12 upgrade steps: remove the package, then install the new tag. An install over the old tag stops with EALLOWGIT.

Test plan

  • npm test, with two new test files: budget and identity.
  • The new tests on the 1.2.0 code: the checks of the items fail there.
  • A targeted check of three real pages of the multisite: the states of an accordion page apply, two image questions on a slideshow page, no false dialog question.
  • A full audit of the multisite with this branch, to compare with the 1.2.0 run.

…and loading

Fixes from the second full audit of a large WordPress multisite, with 1.2.0,
where the sitemaps filled the time budget and most planned states did not
count with no reason in the log.

- Crawl order and budgets: the links get 1 of each 4 places after the
  settings; a quick check with no browser classifies the addresses that a
  budget left; pages_not_opened is apart from pages_found; max_pages counts
  opened pages only; slash copies of opened pages go; address groups choose
  from the whole list before the crawl (order sample, newest, or first).
- Stable identity: the random parts of ids and names are left out of the
  issue identity, the selectors, and the question hash. An older axe-core
  issue moves to its new ID with its status and solution ("rule changed").
- Results: widths_not_loaded for a page that loaded at some widths only,
  found_in for out-of-scope addresses from a sitemap or an API, and one
  page-not-linked question for each section with the reasons.
- Loading and detection: the document first, then load_wait_seconds for
  the load event; the image contrast check right after the load and again
  for later slides; state controls found before the tests change the page
  and found again by identity, then by tag and name; a dialog that is open
  before a click is not the dialog of the state.
- Log: a reason for each state not applied (states_planned and
  states_not_applied in the summary) and the count from each source.
- README: the npm 12 upgrade steps (uninstall, then install the new tag).
- Tests: budget and identity, in npm test.
@HosseinKarami
HosseinKarami merged commit a0ccc30 into main Nov 3, 2026
1 check passed
@HosseinKarami
HosseinKarami deleted the fix/1.3.0-multisite-run branch November 3, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant