| <!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> | |