LibWeb+WebContent+headless-browser: Support async text tests

Previously, we used `on_load_finish` to determine when the text test
was completed. This method did not allow testing of async functions
because there was no way to indicate that the runner should wait for
the async call to end.

This change introduces a function in the `internals` object that is
intended to be called when the text test execution is completed. The
text test runner will now ignore `on_load_finish` which means a test
will timeout if this new function is never called.

`test(f)` function in `include.js` has been modified to automatically
terminate a test once `load` event is fired on `window`.
new `asyncTest(f)` function has been introduces. `f` receives function
that will terminate a test as a first argument.

Every test is expected to call either `test()` or `asyncTest()` to
complete. If not, it will remain hanging until a timeout occurs.
This commit is contained in:
Aliaksandr Kalenik 2023-09-14 19:17:32 +02:00 committed by Andreas Kling
commit 6f8be44c0e
Notes: sideshowbarker 2024-07-17 03:10:07 +09:00
20 changed files with 98 additions and 40 deletions

View file

@ -1,9 +1,11 @@
<script src="include.js"></script>
<script>
let link = document.createElement("link");
link.setAttribute("rel", "preload");
link.setAttribute("href", "valid.css");
link.setAttribute("as", "style");
link.setAttribute("onload", "println('link element onload')");
document.head.appendChild(link);
test(() => {
let link = document.createElement("link");
link.setAttribute("rel", "preload");
link.setAttribute("href", "valid.css");
link.setAttribute("as", "style");
link.setAttribute("onload", "println('link element onload')");
document.head.appendChild(link);
});
</script>