blob: 8292f84cd5bc2950f22f5a14df33cd1180d1912d [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 id="body">
<table id="table">
<caption id="caption">Initial caption</caption>
<thead>
<tr>
<th>Author</th>
<th>Title</th>
</tr>
</thead>
<tbody>
<tr>
<td>Stephen Hawking</td>
<td>A Brief History of Time</td>
</tr>
<tr>
<td>Carl Sagan</td>
<td>Cosmos</td>
</tr>
</tbody>
</table>
<script>
var output = "This test ensures we maintain the right accessibility text for tables after dynamic caption changes.\n\n";
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var table = accessibilityController.accessibleElementById("table");
var text = platformTextAlternatives(table);
output += `${text}\n`;
output += expect("text.includes('Initial caption')", "true");
setTimeout(async function() {
// Wait for page updates caused by initial load to settle down so we don't pass the test by accident.
await sleep(20);
document.getElementById("caption").innerText = "Second caption";
await waitFor(() => {
text = platformTextAlternatives(table);
return text.includes("Second caption");
});
output += `${text}\n`;
output += expect("text.includes('Second caption')", "true");
document.getElementById("body").appendChild(document.getElementById("caption"));
document.getElementById("caption").innerText = "Final caption";
await waitFor(() => {
text = platformTextAlternatives(table);
return !text.includes("caption");
});
output += `${text}\n`;
output += expect("!text.includes('caption')", "true");
let domTable = document.getElementById("table");
domTable.insertBefore(document.getElementById("caption"), domTable.firstElementChild);
await waitFor(() => {
text = platformTextAlternatives(table);
return text.includes("Final caption");
});
output += `${text}\n`;
output += expect("text.includes('Final caption')", "true");
debug(output);
finishJSTest();
}, 0);
}
</script>
</body>
</html>