How to use beforeunload method in taiko

Best JavaScript code snippet using taiko

browser_bug1415918_beforeunload_options.js

Source:browser_bug1415918_beforeunload_options.js Github

copy

Full Screen

1/* Any copyright is dedicated to the Public Domain.2 http://creativecommons.org/publicdomain/zero/1.0/ */3const TEST_PATH = getRootDirectory(gTestPath).replace(4 "chrome://mochitests/content",5 "http://example.com"6);7add_task(async function test() {8 const XUL_NS =9 "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";10 await SpecialPowers.pushPrefEnv({11 set: [["dom.require_user_interaction_for_beforeunload", false]],12 });13 let url = TEST_PATH + "file_bug1415918_beforeunload.html";14 let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);15 let browser = tab.linkedBrowser;16 let stack = browser.parentNode;17 let buttonId;18 let promptShown = false;19 let observer = new MutationObserver(function(mutations) {20 mutations.forEach(function(mutation) {21 if (22 buttonId &&23 mutation.type == "attributes" &&24 browser.hasAttribute("tabmodalPromptShowing")25 ) {26 let prompt = stack.getElementsByTagNameNS(XUL_NS, "tabmodalprompt")[0];27 prompt.querySelector(`.tabmodalprompt-${buttonId}`).click();28 promptShown = true;29 }30 });31 });32 observer.observe(browser, { attributes: true });33 /*34 * Check condition where beforeunload handlers request a prompt.35 */36 // Prompt is shown, user clicks OK.37 buttonId = "button0";38 promptShown = false;39 ok(browser.permitUnload().permitUnload, "permit unload should be true");40 ok(promptShown, "prompt should have been displayed");41 // Check that all beforeunload handlers fired and reset attributes.42 await ContentTask.spawn(browser, null, () => {43 ok(44 content.window.document.body.hasAttribute("fired"),45 "parent document beforeunload handler should fire"46 );47 content.window.document.body.removeAttribute("fired");48 for (let frame of Array.from(content.window.frames)) {49 ok(50 frame.document.body.hasAttribute("fired"),51 "frame document beforeunload handler should fire"52 );53 frame.document.body.removeAttribute("fired");54 }55 });56 // Prompt is shown, user clicks CANCEL.57 buttonId = "button1";58 promptShown = false;59 ok(!browser.permitUnload().permitUnload, "permit unload should be false");60 ok(promptShown, "prompt should have been displayed");61 buttonId = "";62 // Check that only the parent beforeunload handler fired, and reset attribute.63 await ContentTask.spawn(browser, null, () => {64 ok(65 content.window.document.body.hasAttribute("fired"),66 "parent document beforeunload handler should fire"67 );68 content.window.document.body.removeAttribute("fired");69 for (let frame of Array.from(content.window.frames)) {70 ok(71 !frame.document.body.hasAttribute("fired"),72 "frame document beforeunload handler should not fire"73 );74 }75 });76 // Prompt is not shown, don't permit unload.77 promptShown = false;78 ok(79 !browser.permitUnload(browser.dontPromptAndDontUnload).permitUnload,80 "permit unload should be false"81 );82 ok(!promptShown, "prompt should not have been displayed");83 // Check that only the parent beforeunload handler fired, and reset attribute.84 await ContentTask.spawn(browser, null, () => {85 ok(86 content.window.document.body.hasAttribute("fired"),87 "parent document beforeunload handler should fire"88 );89 content.window.document.body.removeAttribute("fired");90 for (let frame of Array.from(content.window.frames)) {91 ok(92 !frame.document.body.hasAttribute("fired"),93 "frame document beforeunload handler should not fire"94 );95 }96 });97 // Prompt is not shown, permit unload.98 promptShown = false;99 ok(100 browser.permitUnload(browser.dontPromptAndUnload).permitUnload,101 "permit unload should be true"102 );103 ok(!promptShown, "prompt should not have been displayed");104 // Check that all beforeunload handlers fired.105 await ContentTask.spawn(browser, null, () => {106 ok(107 content.window.document.body.hasAttribute("fired"),108 "parent document beforeunload handler should fire"109 );110 for (let frame of Array.from(content.window.frames)) {111 ok(112 frame.document.body.hasAttribute("fired"),113 "frame document beforeunload handler should fire"114 );115 }116 });117 /*118 * Check condition where no one requests a prompt. In all cases,119 * permitUnload should be true, and all handlers fired.120 */121 buttonId = "button0";122 url = TEST_PATH + "file_bug1415918_beforeunload_2.html";123 BrowserTestUtils.loadURI(browser, url);124 await BrowserTestUtils.browserLoaded(browser, false, url);125 buttonId = "";126 promptShown = false;127 ok(browser.permitUnload().permitUnload, "permit unload should be true");128 ok(!promptShown, "prompt should not have been displayed");129 // Check that all beforeunload handlers fired and reset attributes.130 await ContentTask.spawn(browser, null, () => {131 ok(132 content.window.document.body.hasAttribute("fired"),133 "parent document beforeunload handler should fire"134 );135 content.window.document.body.removeAttribute("fired");136 for (let frame of Array.from(content.window.frames)) {137 ok(138 frame.document.body.hasAttribute("fired"),139 "frame document beforeunload handler should fire"140 );141 frame.document.body.removeAttribute("fired");142 }143 });144 promptShown = false;145 ok(146 browser.permitUnload(browser.dontPromptAndDontUnload).permitUnload,147 "permit unload should be true"148 );149 ok(!promptShown, "prompt should not have been displayed");150 // Check that all beforeunload handlers fired and reset attributes.151 await ContentTask.spawn(browser, null, () => {152 ok(153 content.window.document.body.hasAttribute("fired"),154 "parent document beforeunload handler should fire"155 );156 content.window.document.body.removeAttribute("fired");157 for (let frame of Array.from(content.window.frames)) {158 ok(159 frame.document.body.hasAttribute("fired"),160 "frame document beforeunload handler should fire"161 );162 frame.document.body.removeAttribute("fired");163 }164 });165 promptShown = false;166 ok(167 browser.permitUnload(browser.dontPromptAndUnload).permitUnload,168 "permit unload should be true"169 );170 ok(!promptShown, "prompt should not have been displayed");171 // Check that all beforeunload handlers fired.172 await ContentTask.spawn(browser, null, () => {173 ok(174 content.window.document.body.hasAttribute("fired"),175 "parent document beforeunload handler should fire"176 );177 for (let frame of Array.from(content.window.frames)) {178 ok(179 frame.document.body.hasAttribute("fired"),180 "frame document beforeunload handler should fire"181 );182 }183 });184 /*185 * Check condition where the parent beforeunload handler does not request a prompt,186 * but a child beforeunload handler does.187 */188 buttonId = "button0";189 url = TEST_PATH + "file_bug1415918_beforeunload_3.html";190 BrowserTestUtils.loadURI(browser, url);191 await BrowserTestUtils.browserLoaded(browser, false, url);192 // Prompt is shown, user clicks OK.193 promptShown = false;194 ok(browser.permitUnload().permitUnload, "permit unload should be true");195 ok(promptShown, "prompt should have been displayed");196 // Check that all beforeunload handlers fired and reset attributes.197 await ContentTask.spawn(browser, null, () => {198 ok(199 content.window.document.body.hasAttribute("fired"),200 "parent document beforeunload handler should fire"201 );202 content.window.document.body.removeAttribute("fired");203 for (let frame of Array.from(content.window.frames)) {204 ok(205 frame.document.body.hasAttribute("fired"),206 "frame document beforeunload handler should fire"207 );208 frame.document.body.removeAttribute("fired");209 }210 });211 // Prompt is shown, user clicks CANCEL.212 buttonId = "button1";213 promptShown = false;214 ok(!browser.permitUnload().permitUnload, "permit unload should be false");215 ok(promptShown, "prompt should have been displayed");216 buttonId = "";217 // Check that the parent beforeunload handler fired, and only one child beforeunload218 // handler fired. Reset attributes.219 await ContentTask.spawn(browser, null, () => {220 ok(221 content.window.document.body.hasAttribute("fired"),222 "parent document beforeunload handler should fire"223 );224 content.window.document.body.removeAttribute("fired");225 let count = 0;226 for (let frame of Array.from(content.window.frames)) {227 if (frame.document.body.hasAttribute("fired")) {228 count++;229 frame.document.body.removeAttribute("fired");230 }231 }232 is(count, 1, "only one frame document beforeunload handler should fire");233 });234 // Prompt is not shown, don't permit unload.235 promptShown = false;236 ok(237 !browser.permitUnload(browser.dontPromptAndDontUnload).permitUnload,238 "permit unload should be false"239 );240 ok(!promptShown, "prompt should not have been displayed");241 // Check that the parent beforeunload handler fired, and only one child beforeunload242 // handler fired. Reset attributes.243 await ContentTask.spawn(browser, null, () => {244 ok(245 content.window.document.body.hasAttribute("fired"),246 "parent document beforeunload handler should fire"247 );248 content.window.document.body.removeAttribute("fired");249 let count = 0;250 for (let frame of Array.from(content.window.frames)) {251 if (frame.document.body.hasAttribute("fired")) {252 count++;253 frame.document.body.removeAttribute("fired");254 }255 }256 is(count, 1, "only one frame document beforeunload handler should fire");257 });258 // Prompt is not shown, permit unload.259 promptShown = false;260 ok(261 browser.permitUnload(browser.dontPromptAndUnload).permitUnload,262 "permit unload should be true"263 );264 ok(!promptShown, "prompt should not have been displayed");265 // Check that all beforeunload handlers fired.266 await ContentTask.spawn(browser, null, () => {267 ok(268 content.window.document.body.hasAttribute("fired"),269 "parent document beforeunload handler should fire"270 );271 for (let frame of Array.from(content.window.frames)) {272 ok(273 frame.document.body.hasAttribute("fired"),274 "frame document beforeunload handler should fire"275 );276 }277 });278 // Remove tab.279 buttonId = "button0";280 BrowserTestUtils.removeTab(tab);...

Full Screen

Full Screen

test.js

Source:test.js Github

copy

Full Screen

1var expect = require('chai').expect;2describe('Before unload handling', function () {3 it('Should handle the beforeUnload dialog', function () {4 return runTests('testcafe-fixtures/index.test.js', 'Expected beforeUnload dialog - should pass');5 });6 it("Should fail if the expected beforeUnload dialog doesn't appear", function () {7 return runTests('testcafe-fixtures/index.test.js', 'No expected beforeUnload dialog - should fail', { shouldFail: true })8 .catch(function (errs) {9 var expectedError = [10 'Error at step "2.Wait for a dialog":',11 ' The expected system beforeUnload dialog did not appear.'12 ].join('');13 expect(errs[0]).contains(expectedError);14 });15 });16 it('Should fail if an unexpected beforeUnload dialog appears', function () {17 return runTests('testcafe-fixtures/index.test.js', 'Unexpected beforeUnload dialog - should fail', { shouldFail: true })18 .catch(function (errs) {19 var expectedError = [20 'Error at step "3.Wait for a dialog":',21 ' Unexpected system beforeUnload dialog message appeared.'22 ].join('');23 expect(errs[0]).contains(expectedError);24 });25 });26 it('Should handle the beforeUnload dialog in iframe', function () {27 return runTests('testcafe-fixtures/in-iframe.test.js', 'Expected beforeUnload dialog in iframe - should pass');28 });29 it("Should fail if the expected beforeUnload dialog doesn't appear in iframe", function () {30 return runTests('testcafe-fixtures/in-iframe.test.js', 'No expected beforeUnload dialog in iframe - should fail', { shouldFail: true })31 .catch(function (errs) {32 var expectedError = [33 'Error at step "2.Wait for a dialog":',34 ' The expected system beforeUnload dialog did not appear.'35 ].join('');36 expect(errs[0]).contains(expectedError);37 });38 });39 it('Should fail if an unexpected beforeUnload dialog appears in iframe', function () {40 return runTests('testcafe-fixtures/in-iframe.test.js', 'Unexpected beforeUnload dialog in iframe - should fail', { shouldFail: true })41 .catch(function (errs) {42 var expectedError = [43 'Error at step "3.Wait for a dialog":',44 ' Unexpected system beforeUnload dialog message appeared.'45 ].join('');46 expect(errs[0]).contains(expectedError);47 });48 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { openBrowser, goto, closeBrowser } = require('taiko');2(async () => {3 try {4 await openBrowser();5 await closeBrowser();6 } catch (e) {7 console.error(e);8 } finally {9 }10})();11const puppeteer = require('puppeteer');12(async () => {13 const browser = await puppeteer.launch();14 const page = await browser.newPage();15 await browser.close();16})();17const { remote } = require('webdriverio');18(async () => {19 const browser = await remote({20 capabilities: {21 }22 });23 await browser.deleteSession();24})();25const { Builder, By, Key, until } = require('selenium-webdriver');26(async function example() {27 let driver = await new Builder().forBrowser('chrome').build();28 try {29 } finally {30 await driver.quit();31 }32})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { openBrowser, goto, closeBrowser } = require('taiko');2(async () => {3 try {4 await openBrowser();5 await closeBrowser();6 } catch (e) {7 console.error(e);8 } finally {9 }10})();11const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');12(async () => {13 try {14 await openBrowser();15 await beforeunload(1000);16 await closeBrowser();17 } catch (e) {18 console.error(e);19 } finally {20 }21})();22const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');23(async () => {24 try {25 await openBrowser();26 await beforeunload(1000);27 await closeBrowser();28 } catch (e) {29 console.error(e);30 } finally {31 }32})();33const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');34(async () => {35 try {36 await openBrowser();37 await beforeunload(1000);38 await closeBrowser();39 } catch (e) {40 console.error(e);41 } finally {42 }43})();44const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');45(async () => {46 try {47 await openBrowser();48 await beforeunload(1000);49 await closeBrowser();50 } catch (e) {51 console.error(e);52 } finally {53 }54})();55const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');56(async () => {57 try {58 await openBrowser();59 await beforeunload(1000);60 await closeBrowser();61 } catch (e

Full Screen

Using AI Code Generation

copy

Full Screen

1const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');2(async () => {3 try {4 await openBrowser();5 await goto("google.com");6 await beforeunload(async () => {7 await closeBrowser();8 });9 } catch (error) {10 console.error(error);11 } finally {12 await closeBrowser();13 }14})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { openBrowser, goto, closeBrowser, beforeunload } = require('taiko');2(async () => {3 try {4 await openBrowser();5 await beforeunload(async () => {6 return true;7 });8 } catch (e) {9 console.error(e);10 } finally {11 await closeBrowser();12 }13})();14 at NavigationWatcher._onBeforeUnloadDialog (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\lib\taiko.js:1766:15)15 at NavigationWatcher._onDialog (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\lib\taiko.js:1721:18)16 at CDPSession.Page.client.on.event (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\lib\taiko.js:1714:30)17 at CDPSession.emit (events.js:198:13)18 at CDPSession._onMessage (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\node_modules\puppeteer\lib\Connection.js:200:12)19 at Connection._onMessage (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\node_modules\puppeteer\lib\Connection.js:112:17)20 at WebSocketTransport._ws.addEventListener.event (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\node_modules\puppeteer\lib\WebSocketTransport.js:44:24)21 at WebSocket.onMessage (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\node_modules\ws\lib\event-target.js:120:16)22 at WebSocket.emit (events.js:198:13)23 at Receiver._receiver.onmessage (C:\Users\user\AppData\Roaming\npm\node_modules\taiko\node_modules\ws\lib\websocket.js:137:47)

Full Screen

Using AI Code Generation

copy

Full Screen

1const { beforeunload } = require('taiko');2(async () => {3 try {4 await openBrowser();5 await click('Click for JS Confirm');6 await accept('I am a JS Confirm');7 await click('Click for JS Prompt');8 await accept('I am a JS prompt');9 } catch (e) {10 console.error(e);11 } finally {12 await closeBrowser();13 }14})();15const puppeteer = require('puppeteer');16const browser = await puppeteer.launch();17const page = await browser.newPage();18await page.click('Click for JS Confirm');19await page.waitForSelector('#result');20const result = await page.$eval('#result', el => el.textContent);21console.log(result);22await page.click('Click for JS Prompt');23await page.waitForSelector('#result');24const result = await page.$eval('#result', el => el.textContent);25console.log(result);26await browser.close();27const { remote } = require('webdriverio');28(async () => {29 const browser = await remote({30 capabilities: {31 }32 })33 await browser.click('Click for JS Confirm');34 await browser.acceptAlert();35 await browser.click('Click for JS Prompt');36 await browser.acceptAlert('I am a JS prompt');37 await browser.deleteSession();38})();39(async () => {40 const browser = await remote({41 capabilities: {42 }43 })44 await browser.click('Click for JS Confirm');45 await browser.acceptAlert();46 await browser.click('Click for JS Prompt');47 await browser.acceptAlert('I am a JS prompt');48 await browser.deleteSession();49})();50const { Builder, By, Key, until } = require('selenium-webdriver');51const driver = new Builder().forBrowser('chrome').build();52driver.findElement(By.linkText('Click for JS

Full Screen

Using AI Code Generation

copy

Full Screen

1const taiko = require('taiko');2const { openBrowser, goto, closeBrowser, beforeunload } = taiko;3(async () => {4 try {5 await openBrowser();6 await beforeunload();7 } catch (error) {8 console.error(error);9 } finally {10 await closeBrowser();11 }12})();13Browser: Chrome Version 78.0.3904.70 (Official Build) (64-bit)14const taiko = require('taiko');15const { openBrowser, goto, closeBrowser, beforeunload } = taiko;16(async () => {17 try {18 await openBrowser();19 await beforeunload();20 } catch (error) {21 console.error(error);22 } finally {23 await closeBrowser();24 }25})();26Browser: Chrome Version 78.0.3904.70 (Official Build) (64-bit)27window.onbeforeunload = function(e) {28 return 'Dialog text here';29};30const taiko = require('taiko');31const { openBrowser, goto, closeBrowser, beforeunload } = taiko;32(async () => {33 try {34 await openBrowser();35 await beforeunload();36 } catch (error)

Full Screen

Using AI Code Generation

copy

Full Screen

1beforeunload(() => {2});3afterunload(() => {4});5unload(() => {6});7load(() => {8});9beforeunload(() => {10});11afterunload(() => {12});13unload(() => {14});15load(() => {16});17beforeunload(() => {18});19afterunload(() => {20});21unload(() => {22});23load(() => {24});25beforeunload(() => {26});27afterunload(() => {28});29unload(() => {30});31load(() => {32});33beforeunload(() => {34});35afterunload(() => {36});

Full Screen

Using AI Code Generation

copy

Full Screen

1import { openBrowser, goto, click, closeBrowser } from 'taiko';2(async () => {3 try {4 await openBrowser();5 await goto("google.com");6 await click("Gmail");7 await closeBrowser();8 } catch (e) {9 console.error(e);10 } finally {11 }12})();13import { openBrowser, goto, click, closeBrowser } from 'taiko';14(async () => {15 try {16 await openBrowser();17 await goto("google.com");18 await click("Gmail");19 await closeBrowser();20 } catch (e) {21 console.error(e);22 } finally {23 }24})();25import { openBrowser, goto, click, closeBrowser } from 'taiko';26(async () => {27 try {28 await openBrowser();29 await goto("google.com");30 await click("Gmail");31 await closeBrowser();32 } catch (e) {33 console.error(e);34 } finally {35 }36})();37import { openBrowser, goto, click, closeBrowser } from 'taiko';38(async () => {39 try {40 await openBrowser();41 await goto("google.com");42 await click("Gmail");43 await closeBrowser();44 } catch (e) {45 console.error(e);46 } finally {47 }48})();49import { openBrowser, goto, click, closeBrowser } from 'taiko';50(async () => {51 try {52 await openBrowser();53 await goto("google.com");54 await click("Gmail");55 await closeBrowser();56 } catch (e) {57 console.error(e);58 } finally {59 }60})();61import { openBrowser, goto, click, closeBrowser } from 'taiko';62(async () => {63 try {64 await openBrowser();65 await goto("google.com");66 await click("Gmail");67 await closeBrowser();68 } catch (e) {69 console.error(e);70 } finally {71 }72})();73import { openBrowser, goto, click, closeBrowser }

Full Screen

Using AI Code Generation

copy

Full Screen

1await closeBrowser();2await openBrowser();3await write("Hello World");4await press("Enter");5await screenshot({ path: "screenshot.png" });6await closeBrowser();7await openBrowser();8await write("Hello World");9await press("Enter");10await screenshot({ path: "screenshot.png" });11await closeBrowser();12await openBrowser();13await write("Hello World");14await press("Enter");15await screenshot({ path: "screenshot.png" });16await closeBrowser();17await openBrowser();18await write("Hello World");19await press("Enter");20await screenshot({ path: "screenshot.png" });21await closeBrowser();22await openBrowser();23await write("Hello World");24await press("

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run taiko automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful