pour-engine 1.42.0 → 1.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,6 @@
6
6
  export default {
7
7
  engine: {
8
8
  name: 'pour engine',
9
- version: '1.42.0',
9
+ version: '1.42.1',
10
10
  },
11
11
  };
@@ -113,7 +113,7 @@ meaning that only a person can settle, even where a rule decides most real pages
113
113
 
114
114
  | SC | Name | Level | Coverage | Rules |
115
115
  |---|---|---|---|---|
116
- | 4.1.2 | [Name, Role, Value](https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html) | A | Partially automated | input-image-alt, form-label, link-name, aria-allowed-attr, aria-attr-valid, aria-field-name, aria-hidden-focus, aria-label-misuse, aria-valid-refs, button-name, composite-widget-name, dialog-name, frame-title, invoker-target, label-for-valid, nested-interactive, role-required-aria, summary-name, valid-role |
116
+ | 4.1.2 | [Name, Role, Value](https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html) | A | Partially automated | input-image-alt, form-label, link-name, aria-allowed-attr, aria-attr-valid, aria-field-name, aria-hidden-focus, aria-label-misuse, aria-valid-refs, button-name, composite-widget-name, frame-title, invoker-target, label-for-valid, nested-interactive, role-required-aria, summary-name, valid-role |
117
117
  | 4.1.3 | [Status Messages](https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html) | AA | Manual review | — |
118
118
 
119
119
  **Totals:** 51 partially automated · 35 manual — with 98 rules.
@@ -1,18 +1,18 @@
1
- // WCAG SC 4.1.2 Name, Role, Value (Level A)
2
- // ARIA 1.2 marks dialog/alertdialog as name-required roles, and dialogs are
3
- // NOT name-from-content — the body text is the dialog's content, never its
4
- // name. An open, unnamed modal announces as just "dialog", leaving
5
- // screen-reader users with no idea what interrupted them (cookie-consent
6
- // modals are the canonical offender).
1
+ // A dialog with no accessible name is announced as just "dialog". ARIA 1.2
2
+ // requires authors to name one, but WCAG 4.1.2 is written for user interface
3
+ // components, defined as controls, and a dialog is a container of controls
4
+ // whose own names 4.1.2 already covers. So the pattern is an ARIA authoring
5
+ // failure, not a WCAG one: demoted from 4.1.2 to best practice on 2026-09-13
6
+ // after rnib.org.uk's unnamed cookie banner was challenged.
7
7
  import { labelledByName } from '../../lib/accessible-name.js';
8
8
 
9
9
  export default {
10
10
  id: 'dialog-name',
11
11
  name: 'Dialog names',
12
12
  impact: 'serious',
13
- tags: ['wcag2a', 'wcag412'],
14
- help: 'Dialogs must have an accessible name',
15
- helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html',
13
+ tags: ['best-practice'],
14
+ help: 'Dialogs should have an accessible name',
15
+ helpUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/',
16
16
  // Default visibility filter: a closed <dialog> is display:none, so only
17
17
  // dialogs the user can actually encounter are judged.
18
18
  selector: 'dialog, [role="dialog"], [role="alertdialog"]',
@@ -76,7 +76,9 @@ import scrollableRegionFocusable from './wcag/2.1.1-scrollable-region-focusable.
76
76
  import tableHeaders from './wcag/1.3.1-table-headers.js';
77
77
  import contrastEnhanced from './wcag/1.4.6-contrast-enhanced.js';
78
78
  import targetSizeEnhanced from './wcag/2.5.5-target-size-enhanced.js';
79
- import dialogName from './wcag/4.1.2-dialog-name.js';
79
+ // Demoted to best-practice 2026-09-13: ARIA requires a dialog name, but 4.1.2
80
+ // covers controls and a dialog is their container (see the rule file).
81
+ import dialogName from './best-practice/dialog-name.js';
80
82
  import controlContrast from './wcag/1.4.3-control-contrast.js';
81
83
  import nonTextContrast from './wcag/1.4.11-non-text-contrast.js';
82
84
  import textSpacing from './wcag/1.4.12-text-spacing.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pour-engine",
3
- "version": "1.42.0",
3
+ "version": "1.42.1",
4
4
  "description": "Accessibility (WCAG 2.2) audit engine written from the W3C specifications — runs entirely in the browser, no dependencies.",
5
5
  "type": "module",
6
6
  "main": "engine/index.js",