browser_browserLoaded_content_loaded.js (1398B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 "use strict"; 4 5 function isDOMLoaded(browser) { 6 return SpecialPowers.spawn(browser, [], async function () { 7 Assert.equal( 8 content.document.readyState, 9 "complete", 10 "Browser should be loaded." 11 ); 12 }); 13 } 14 15 // It checks if calling BrowserTestUtils.browserLoaded() yields 16 // browser object. 17 add_task(async function () { 18 let tab = BrowserTestUtils.addTab(gBrowser, "http://example.com"); 19 let browser = tab.linkedBrowser; 20 await BrowserTestUtils.browserLoaded(browser); 21 await isDOMLoaded(browser); 22 gBrowser.removeTab(tab); 23 }); 24 25 // It checks that BrowserTestUtils.browserLoaded() works well with 26 // promise.all(). 27 add_task(async function () { 28 let tabURLs = [ 29 `http://example.org`, 30 `http://mochi.test:8888`, 31 `http://test:80`, 32 ]; 33 // Add tabs, get the respective browsers 34 let browsers = tabURLs.map( 35 u => BrowserTestUtils.addTab(gBrowser, u).linkedBrowser 36 ); 37 38 // wait for promises to settle 39 await Promise.all( 40 (function* () { 41 for (let b of browsers) { 42 yield BrowserTestUtils.browserLoaded(b); 43 } 44 })() 45 ); 46 for (const browser of browsers) { 47 await isDOMLoaded(browser); 48 } 49 // cleanup 50 browsers 51 .map(browser => gBrowser.getTabForBrowser(browser)) 52 .forEach(tab => gBrowser.removeTab(tab)); 53 });