From 4ae151f42a3cdd710974e3e7a4304895c536e79d Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 19 Jun 2024 18:12:10 +0200 Subject: [PATCH] cherry-pick(#31340): docs: add guide for print dialogs --- docs/src/dialogs.md | 54 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/docs/src/dialogs.md b/docs/src/dialogs.md index 1d8938778c4c3..20037245ee3b6 100644 --- a/docs/src/dialogs.md +++ b/docs/src/dialogs.md @@ -5,7 +5,7 @@ title: "Dialogs" ## Introduction -Playwright can interact with the web page dialogs such as [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert), [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm), [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) as well as [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event) confirmation. +Playwright can interact with the web page dialogs such as [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert), [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm), [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) as well as [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event) confirmation. For print dialogs, see [Print](#print-dialogs). ## alert(), confirm(), prompt() dialogs @@ -126,3 +126,55 @@ Page.Dialog += async (_, dialog) => }; await Page.CloseAsync(new() { RunBeforeUnload = true }); ``` + +## Print dialogs + +In order to assert that a print dialog via [`window.print`](https://developer.mozilla.org/en-US/docs/Web/API/Window/print) was triggered, you can use the following snippet: + +```js +await page.goto(''); + +await page.evaluate('(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()'); +await page.getByText('Print it!').click(); + +await page.waitForFunction('window.waitForPrintDialog'); +``` + +```java +page.navigate(""); + +page.evaluate("(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()"); +page.getByText("Print it!").click(); + +page.waitForFunction("window.waitForPrintDialog"); +``` + +```python async +await page.goto("") + +await page.evaluate("(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()") +await page.get_by_text("Print it!").click() + +await page.wait_for_function("window.waitForPrintDialog") +``` + +```python sync +page.goto("") + +page.evaluate("(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()") +page.get_by_text("Print it!").click() + +page.wait_for_function("window.waitForPrintDialog") +``` + +```csharp +await Page.GotoAsync(""); + +await Page.EvaluateAsync("(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()"); +await Page.GetByText("Print it!").ClickAsync(); + +await Page.WaitForFunctionAsync("window.waitForPrintDialog"); +``` + +This will wait for the print dialog to be opened after the button is clicked. +Make sure to evaluate the script before clicking the button / after the page is loaded.