blob: 026874cc08c2406c4e7d7c407d366040a0bf9917 [file] [log] [blame] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/accessibility-helper.js"></script>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<div id="test">
<span id="parent1">1<div id="div1" role="group">2</div>3</span>
<span>4</span><div id="group-2" role="group">5</div>
</div>
<div>
<span id="parent2">6<div id="div2" role="group">7</div>8</span>
<span>9</span><div role="group">10</div>
</div>
<script>
var output = "This test ensures the accessibility tree is correct after inserting elements near a render continuation.\n\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var webArea = accessibilityController.rootElement.childAtIndex(0);
output += `${dumpAXSearchTraversal(webArea)}\n\n`;
var button = document.createElement("button");
button.innerText = "foo";
var expected = `{AXRole: AXStaticText AXValue: 1}
{AXRole: AXButton}`;
var traversalResult;
setTimeout(async function() {
document.getElementById("parent1").insertBefore(button, document.getElementById("div1"));
// Wait for the button to come after the first static text in the accessibility tree.
expected = `{AXRole: AXStaticText AXValue: 1}
{AXRole: AXButton}`;
await waitFor(() => {
traversalResult = dumpAXSearchTraversal(webArea);
return traversalResult.includes(expected);
});
output += `${traversalResult}\n\n`;
document.getElementById("parent2").insertBefore(button, document.getElementById("div2"));
// Wait for the button to come after the sixth static text in the accessibility tree.
expected = `{AXRole: AXStaticText AXValue: 6}
{AXRole: AXButton}`;
await waitFor(() => {
traversalResult = dumpAXSearchTraversal(webArea);
return traversalResult.includes(expected);
});
output += `${traversalResult}\n\n`;
debug(output);
finishJSTest();
}, 0);
}
</script>
</body>
</html>