async def test_should_work_with_playwright_context_managers( context: BrowserContext, page: Page, server: Server, tmpdir: Path ) -> None: await context.tracing.start(screenshots=True, snapshots=True) await page.goto(server.EMPTY_PAGE) await page.set_content("<button>Click</button>") async with page.expect_console_message() as message_info: await page.evaluate('() => console.log("hello")') await page.click('"Click"') assert (await message_info.value).text == "hello" async with page.expect_popup(): await page.evaluate("window._popup = window.open(document.location.href)") trace_file_path = tmpdir / "trace.zip" await context.tracing.stop(path=trace_file_path) (_, events) = parse_trace(trace_file_path) assert events[0]["type"] == "context-options" assert get_actions(events) == [ "Page.goto", "Page.set_content", "Page.expect_console_message", "Page.evaluate", "Page.click", "Page.expect_popup", "Page.evaluate", "Tracing.stop", ]
async def test_console_should_work(page: Page, server): messages: List[ConsoleMessage] = [] page.once("console", lambda m: messages.append(m)) async with page.expect_console_message() as message_info: await page.evaluate('() => console.log("hello", 5, {foo: "bar"})') message = await message_info.value assert message.text == "hello 5 JSHandle@object" assert str(message) == "hello 5 JSHandle@object" assert message.type == "log" assert await message.args[0].json_value() == "hello" assert await message.args[1].json_value() == 5 assert await message.args[2].json_value() == {"foo": "bar"}