Serenity Operating System
at master 34 lines 1.2 kB view raw
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});