LibWeb: Port some manually async tests to use asyncTest

These tests were mostly async tests written in a manual way. This ports
them to use the standard asyncTest() infrastructure.

This is mostly just to reduce calls to internals.signalTextTestIsDone,
which will have a required parameter in an upcoming test.
This commit is contained in:
Timothy Flynn 2024-10-02 12:31:42 -04:00 committed by Tim Flynn
commit 96082d6ae1
Notes: github-actions[bot] 2024-10-03 11:08:43 +00:00
5 changed files with 64 additions and 54 deletions

View file

@ -1 +1 @@
PASS (didn't crash) PASS (didn't crash)

View file

@ -1,29 +1,30 @@
<!DOCTYPE html> <!DOCTYPE html>
<script src="../include.js"></script> <script src="../include.js"></script>
<script> <script>
let reloaded = false; asyncTest(done => {
window.addEventListener('message', event => { let reloaded = false;
switch (event.data.action) {
case "loaded":
println("iframe is loaded");
if (!reloaded) {
event.source.postMessage({ action: 'reload' });
reloaded = true;
} else {
internals.signalTextTestIsDone();
}
break;
case "acknowledge-asked-to-reload":
println("iframe is going to reload");
break;
default:
break;
}
});
document.addEventListener("DOMContentLoaded", () => { window.addEventListener("message", event => {
const iframe = document.createElement('iframe'); switch (event.data.action) {
iframe.src = "../../data/iframe-reload.html" case "loaded":
println("iframe is loaded");
if (!reloaded) {
event.source.postMessage({ action: "reload" });
reloaded = true;
} else {
done();
}
break;
case "acknowledge-asked-to-reload":
println("iframe is going to reload");
break;
default:
break;
}
});
const iframe = document.createElement("iframe");
iframe.src = "../../data/iframe-reload.html";
document.body.appendChild(iframe); document.body.appendChild(iframe);
}); });
</script> </script>

View file

@ -2,26 +2,28 @@
<script src="../include.js"></script> <script src="../include.js"></script>
<script> <script>
let reloaded = false; let reloaded = false;
window.addEventListener('message', event => {
switch (event.data.action) {
case "loaded":
println("iframe is loaded");
if (!reloaded) {
event.source.postMessage({ action: 'reload' });
reloaded = true;
} else {
internals.signalTextTestIsDone();
}
break;
case "acknowledge-asked-to-reload":
println("iframe is going to reload");
break;
default:
break;
}
});
const iframeScript = ` asyncTest(done => {
window.addEventListener("message", event => {
switch (event.data.action) {
case "loaded":
println("iframe is loaded");
if (!reloaded) {
event.source.postMessage({ action: "reload" });
reloaded = true;
} else {
done();
}
break;
case "acknowledge-asked-to-reload":
println("iframe is going to reload");
break;
default:
break;
}
});
const iframeScript = `
window.addEventListener('message', event => { window.addEventListener('message', event => {
if (event.data && event.data.action === 'reload') { if (event.data && event.data.action === 'reload') {
window.parent.postMessage({ action: 'acknowledge-asked-to-reload' }); window.parent.postMessage({ action: 'acknowledge-asked-to-reload' });
@ -33,8 +35,7 @@
}); });
`; `;
document.addEventListener("DOMContentLoaded", () => { const iframe = document.createElement("iframe");
const iframe = document.createElement('iframe');
iframe.srcdoc = "<script>" + iframeScript + "<\/script>"; iframe.srcdoc = "<script>" + iframeScript + "<\/script>";
document.body.appendChild(iframe); document.body.appendChild(iframe);
}); });

View file

@ -2,11 +2,13 @@
<div id="foo"> <div id="foo">
<iframe></iframe> <iframe></iframe>
<script> <script>
setTimeout(function () { asyncTest(done => {
foo.remove(); setTimeout(function () {
// Pass (didn't crash) foo.remove();
internals.signalTextTestIsDone(); // Pass (didn't crash)
}, 0); done();
}, 0);
});
</script> </script>
</div> </div>
<iframe></iframe> <iframe></iframe>

View file

@ -1,5 +1,11 @@
<body><script> <body>
window.scrollTo(200, 200); <script>
if (window.internals !== undefined) window.scrollTo(200, 200);
window.internals.signalTextTestIsDone(); </script>
</script>PASS (didn't crash) <script src="include.js"></script>
<script>
test(() => {
println("PASS (didn't crash)");
});
</script>
</body>