blob: c700afc8044cc37070733b1e7728390eabefaccb [file] [edit]
<!DOCTYPE html>
<meta charset="utf-8">
<title>ElementInternals accessibility property values</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/custom-elements.html#the-elementinternals-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
"use strict";
class TestElement extends HTMLElement {
constructor() {
super();
this.internals = this.attachInternals();
}
}
customElements.define("test-element", TestElement);
const element = document.createElement("test-element");
document.body.append(element);
const properties = [
"role",
"ariaActiveDescendantElement",
"ariaAtomic",
"ariaAutoComplete",
"ariaBrailleLabel",
"ariaBrailleRoleDescription",
"ariaBusy",
"ariaChecked",
"ariaColCount",
"ariaColIndex",
"ariaColSpan",
"ariaControlsElements",
"ariaCurrent",
"ariaDescribedByElements",
"ariaDetailsElements",
"ariaDisabled",
"ariaErrorMessageElements",
"ariaExpanded",
"ariaFlowToElements",
"ariaHasPopup",
"ariaHidden",
"ariaInvalid",
"ariaKeyShortcuts",
"ariaLabel",
"ariaLabelledByElements",
"ariaLevel",
"ariaLive",
"ariaModal",
"ariaMultiLine",
"ariaMultiSelectable",
"ariaOrientation",
"ariaOwnsElements",
"ariaPlaceholder",
"ariaPosInSet",
"ariaPressed",
"ariaReadOnly",
"ariaRelevant",
"ariaRequired",
"ariaRoleDescription",
"ariaRowCount",
"ariaRowIndex",
"ariaRowSpan",
"ariaSelected",
"ariaSetSize",
"ariaSort",
"ariaValueMax",
"ariaValueMin",
"ariaValueNow",
"ariaValueText"
];
for (const property of properties) {
test(() => {
assert_equals(element.internals[property], null, "null default value");
if (property.endsWith("Element")) {
element.internals[property] = document.body;
assert_equals(element.internals[property], document.body, "can be set to an Element");
} else if (property.endsWith("Elements")) {
const originalArray = [document.body];
element.internals[property] = originalArray;
assert_array_equals(element.internals[property], originalArray, "same contents");
assert_not_equals(element.internals[property], originalArray, "not equal to the original array");
assert_true(Object.isFrozen(element.internals[property]), "is frozen");
assert_equals(element.internals[property], element.internals[property], "getter returns the same value");
} else {
element.internals[property] = {
toString() {
return "a string";
}
};
assert_equals(element.internals[property], "a string", "can be set to a string");
}
}, property);
}
</script>