From bb99dcd3502e3013835cc3d0458d8b885105458b Mon Sep 17 00:00:00 2001 From: Mike Pennisi Date: Wed, 25 Oct 2023 20:24:02 -0400 Subject: [PATCH] [accname] Require specification of subtest count The accname tests use a declarative style to express tests. This style is susceptible to false positives for author errors (e.g. invalid markup or typos in CSS selectors or class names). Extend the `verifyLabelsBySelector` utility function with a parameter for the expected number of tests in order to reduce the risk of false positives. --- accname/name/comp_embedded_control.html | 2 +- accname/name/comp_hidden_not_referenced.html | 2 +- accname/name/comp_host_language_label.html | 2 +- accname/name/comp_label.html | 2 +- accname/name/comp_labelledby.html | 2 +- accname/name/comp_name_from_content.html | 2 +- accname/name/comp_text_node.html | 2 +- accname/name/comp_tooltip.html | 2 +- accname/name/shadowdom/basic.html | 2 +- accname/name/shadowdom/slot.html | 2 +- wai-aria/scripts/aria-utils.js | 8 ++++---- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/accname/name/comp_embedded_control.html b/accname/name/comp_embedded_control.html index 2cdb5cbdf7d0e2..703ff671c0f8e1 100644 --- a/accname/name/comp_embedded_control.html +++ b/accname/name/comp_embedded_control.html @@ -128,7 +128,7 @@ \ No newline at end of file diff --git a/accname/name/comp_hidden_not_referenced.html b/accname/name/comp_hidden_not_referenced.html index 7d9cf2c36f6426..83c96ff3c1a40e 100644 --- a/accname/name/comp_hidden_not_referenced.html +++ b/accname/name/comp_hidden_not_referenced.html @@ -86,7 +86,7 @@ diff --git a/accname/name/comp_host_language_label.html b/accname/name/comp_host_language_label.html index aea9e011c4459c..fb914542581817 100644 --- a/accname/name/comp_host_language_label.html +++ b/accname/name/comp_host_language_label.html @@ -167,7 +167,7 @@

SVG title

\ No newline at end of file diff --git a/accname/name/comp_label.html b/accname/name/comp_label.html index 0c057862b3bf6c..455f30d46b9319 100644 --- a/accname/name/comp_label.html +++ b/accname/name/comp_label.html @@ -18,7 +18,7 @@ \ No newline at end of file diff --git a/accname/name/comp_labelledby.html b/accname/name/comp_labelledby.html index ab17bff1187411..ac1d2c275c2a5f 100644 --- a/accname/name/comp_labelledby.html +++ b/accname/name/comp_labelledby.html @@ -31,7 +31,7 @@

div group label

--> \ No newline at end of file diff --git a/accname/name/comp_name_from_content.html b/accname/name/comp_name_from_content.html index 41cd3506ce20d6..7f3f7b6be24644 100644 --- a/accname/name/comp_name_from_content.html +++ b/accname/name/comp_name_from_content.html @@ -249,7 +249,7 @@

\ No newline at end of file diff --git a/accname/name/comp_text_node.html b/accname/name/comp_text_node.html index d63bdda82c0d1e..1b450ffe9de58d 100644 --- a/accname/name/comp_text_node.html +++ b/accname/name/comp_text_node.html @@ -32,7 +32,7 @@

\ No newline at end of file diff --git a/accname/name/comp_tooltip.html b/accname/name/comp_tooltip.html index bcb17d3418ae22..55d29ffbb6463f 100644 --- a/accname/name/comp_tooltip.html +++ b/accname/name/comp_tooltip.html @@ -46,7 +46,7 @@ \ No newline at end of file diff --git a/accname/name/shadowdom/basic.html b/accname/name/shadowdom/basic.html index 9746f2db47ac49..3d4387c5e4e9cf 100644 --- a/accname/name/shadowdom/basic.html +++ b/accname/name/shadowdom/basic.html @@ -32,6 +32,6 @@ document.getElementById('host1').attachShadow({ mode: 'open' }).innerHTML = 'foo'; document.getElementById('host2').attachShadow({ mode: 'open' }).innerHTML = '
'; -AriaUtils.verifyLabelsBySelector('.labelled'); +AriaUtils.verifyLabelsBySelector(2, '.labelled'); diff --git a/accname/name/shadowdom/slot.html b/accname/name/shadowdom/slot.html index 41ccd5a57f452b..a9e4ee414cb356 100644 --- a/accname/name/shadowdom/slot.html +++ b/accname/name/shadowdom/slot.html @@ -55,6 +55,6 @@ document.getElementById('host3').attachShadow({ mode: 'open' }).innerHTML = 'foo bar'; document.getElementById('host4').attachShadow({ mode: 'open' }).innerHTML = 'foo default bar'; -AriaUtils.verifyLabelsBySelector('.labelled'); +AriaUtils.verifyLabelsBySelector(4, '.labelled'); diff --git a/wai-aria/scripts/aria-utils.js b/wai-aria/scripts/aria-utils.js index feb71b8398454f..43e09e7caab59d 100644 --- a/wai-aria/scripts/aria-utils.js +++ b/wai-aria/scripts/aria-utils.js @@ -124,13 +124,13 @@ const AriaUtils = { data-expectedlabel="foo" class="ex"> - AriaUtils.verifyLabelsBySelector(".ex") + AriaUtils.verifyLabelsBySelector(1, ".ex") */ - verifyLabelsBySelector: function(selector) { + verifyLabelsBySelector: function(expectedCount, selector) { const els = document.querySelectorAll(selector); - if (!els.length) { - throw `Selector passed in verifyLabelsBySelector("${selector}") should match at least one element.`; + if (els.length !== expectedCount) { + throw `verifyLabelsBySelector expected ${expectedCount} elements but received ${els.length}`; } for (const el of els) { let label = el.getAttribute("data-expectedlabel");