"use strict"; const PAGE = "data:text/html,
A%20regular,%20everyday,%20normal%20page."; /** * This function returns a Promise that resolves once the following * actions have taken place: * * 1) A new tab is opened up at PAGE * 2) The tab is crashed * 3) The about:restartrequired page is displayed * * @returns Promise */ function crashTabTestHelper() { return BrowserTestUtils.withNewTab({ gBrowser, url: PAGE, }, async function(browser) { // Simulate buildID mismatch. TabCrashHandler.testBuildIDMismatch = true; await BrowserTestUtils.crashBrowser(browser, false); let doc = browser.contentDocument; // Since about:restartRequired will run in the parent process, we can safely // manipulate its DOM nodes directly let title = doc.getElementById("title"); let description = doc.getElementById("errorLongContent"); let restartButton = doc.getElementById("restart"); ok(title, "Title element exists."); ok(description, "Description element exists."); ok(restartButton, "Restart button exists."); // Reset TabCrashHandler.testBuildIDMismatch = false; }); } /** * Tests that the about:restartrequired page appears when buildID mismatches * between parent and child processes are encountered. */ add_task(async function test_default() { await crashTabTestHelper(); });