Serenity Operating System
1describe("readyState", () => {
2 loadLocalPage("/res/html/misc/blank.html");
3
4 beforeInitialPageLoad(page => {
5 window.events = [];
6
7 page.document.addEventListener("readystatechange", () => {
8 window.events.push(page.document.readyState);
9 });
10
11 page.document.addEventListener("DOMContentLoaded", () => {
12 test("Ready state should be 'interactive' when 'DOMContentLoaded' fires", () => {
13 expect(page.document.readyState).toBe("interactive");
14 });
15 });
16
17 test("Ready state should be 'loading' initially", () => {
18 expect(page.document.readyState).toBe("loading");
19 });
20 });
21
22 afterInitialPageLoad(page => {
23 test("'interactive' should come before 'complete' and both should have happened", () => {
24 expect(page.window.events).toHaveLength(2);
25 expect(page.window.events[0]).toBe("interactive");
26 expect(page.window.events[1]).toBe("complete");
27 });
28
29 test("Ready state should be 'complete' after loading", () => {
30 expect(page.document.readyState).toBe("complete");
31 });
32 });
33 waitForPageToLoad();
34});