blob: 02df25d9bb4b5a46f5917de9ce6fdc99de5df0f7 [file] [log] [blame] [edit]
<!DOCTYPE html>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<div id="error1">First error</div>
<div id="target1">Target 1</div>
<div id="wrapper" tabindex="0">
<div class="error">Second error</div>
</div>
<div id="target2">Target 2</div>
<div id="error3">Third error</div>
<x-target></x-target>
<div id="error4">Fourth error</div>
<div id="target4">Target 4</div>
<x-custom></x-custom>
<script>
class XTarget extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
let target = document.createElement("div");
target.id = "innertarget";
target.textContent = "Target 3";
target.ariaErrorMessageElements = [error3];
target.ariaInvalid = true;
this.shadowRoot.appendChild(target);
}
}
customElements.define("x-target", XTarget);
class XCustom extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" });
let error = document.createElement("div");
error.id = "error5";
error.textContent = "Fifth error";
let target = document.createElement("div");
target.id = "target5";
target.textContent = "Target 5";
this.shadowRoot.appendChild(error);
this.shadowRoot.appendChild(target);
target.ariaErrorMessageElements = [error];
target.ariaInvalid = true;
document.body.appendChild(error);
}
}
customElements.define("x-custom", XCustom);
var output = "Checks that element reflection is exposed to the a11y tree for 'ariaErrorMessageElements'\n\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var axError1, axTarget1, wrapper, axError2, axTarget2, axError3, axInnerTarget, axErrorMessage4, axTarget4, axErrorMessage5, axTarget5;
setTimeout(async function() {
target1.ariaInvalid = true;
target1.ariaErrorMessageElements = [error1];
axError1 = accessibilityController.accessibleElementById("error1");
axTarget1 = accessibilityController.accessibleElementById("target1");
await waitFor(() => axTarget1.ariaErrorMessageElementAtIndex(0));
output += expect("axTarget1.ariaErrorMessageElementAtIndex(0).isEqual(axError1)", "true");
target2.ariaInvalid = true;
target2.ariaErrorMessageElements = [document.getElementsByClassName("error")[0]];
wrapper = accessibilityController.accessibleElementById("wrapper");
axError2 = wrapper.childAtIndex(0);
axTarget2 = accessibilityController.accessibleElementById("target2");
await waitFor(() => axTarget2.ariaErrorMessageElementAtIndex(0));
output += expect("axTarget2.ariaErrorMessageElementAtIndex(0).isEqual(axError2)", "true");
target2.setAttribute("aria-errormessage", "error1");
await waitFor(() => axTarget2.ariaErrorMessageElementAtIndex(0).isEqual(axError1));
output += expect("axTarget2.ariaErrorMessageElementAtIndex(0).isEqual(axError1)", "true");
axError3 = accessibilityController.accessibleElementById("error3");
axInnerTarget = accessibilityController.accessibleElementById("innertarget");
output += expect("axInnerTarget.ariaErrorMessageElementAtIndex(0).isEqual(axError3)", "true");
target2.ariaErrorMessageElements = [error1, document.getElementsByClassName("error")[0], error3];
await waitFor(() => axTarget2.ariaErrorMessageElementAtIndex(2));
output += expect("axTarget2.ariaErrorMessageElementAtIndex(0).isEqual(axError1)", "true");
output += expect("axTarget2.ariaErrorMessageElementAtIndex(1).isEqual(axError2)", "true");
output += expect("axTarget2.ariaErrorMessageElementAtIndex(2).isEqual(axError3)", "true");
target4.ariaInvalid = true;
target4.ariaErrorMessageElements = [error4];
error4.id = "error4-new";
axErrorMessage4 = accessibilityController.accessibleElementById("error4-new");
axTarget4 = accessibilityController.accessibleElementById("target4");
await waitFor(() => axTarget4.ariaErrorMessageElementAtIndex(0));
output += expect("axTarget4.ariaErrorMessageElementAtIndex(0).isEqual(axErrorMessage4)", "true");
axErrorMessage5 = accessibilityController.accessibleElementById("error5");
axTarget5 = accessibilityController.accessibleElementById("target5");
output += expect("axTarget5.ariaErrorMessageElementAtIndex(0).isEqual(axErrorMessage5)", "true");
debug(output);
finishJSTest();
})
}
</script>