async def test_should_emit_event(page: Page, server): await page.setContent("<input type=file>") fc_done: asyncio.Future = asyncio.Future() page.once("filechooser", lambda file_chooser: fc_done.set_result(file_chooser)) await page.click("input") file_chooser = await fc_done assert file_chooser
async def test_should_be_able_to_reset_selected_files_with_empty_file_list( page: Page, server): await page.set_content("<input type=file>") page.once("filechooser", lambda file_chooser: file_chooser.set_files(FILE_TO_UPLOAD)) file_length = 0 async with page.expect_file_chooser(): file_length = await page.eval_on_selector( "input", """async picker => { picker.click(); await new Promise(x => picker.oninput = x); return picker.files.length; }""", ) assert file_length == 1 page.once("filechooser", lambda file_chooser: file_chooser.set_files([])) async with page.expect_file_chooser(): file_length = await page.eval_on_selector( "input", """async picker => { picker.click(); await new Promise(x => picker.oninput = x); return picker.files.length; }""", ) assert file_length == 0
async def test_should_emit_event(page: Page): await page.set_content("<input type=file>") fc_done: asyncio.Future = asyncio.Future() page.once("filechooser", lambda file_chooser: fc_done.set_result(file_chooser)) await page.click("input") file_chooser = await fc_done assert file_chooser assert ( repr(file_chooser) == f"<FileChooser page={file_chooser.page} element={file_chooser.element}>" )
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"}
async def test_console_should_work(page: Page, server): messages: List[ConsoleMessage] = [] page.once("console", lambda m: messages.append(m)) await asyncio.gather( page.evaluate('() => console.log("hello", 5, {foo: "bar"})'), page.wait_for_event("console"), ) assert len(messages) == 1 message = messages[0] 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"}
async def test_should_be_able_to_read_selected_file(page: Page): page.once("filechooser", lambda file_chooser: file_chooser.set_files(FILE_TO_UPLOAD)) await page.set_content("<input type=file>") content = await page.eval_on_selector( "input", """async picker => { picker.click(); await new Promise(x => picker.oninput = x); const reader = new FileReader(); const promise = new Promise(fulfill => reader.onload = fulfill); reader.readAsText(picker.files[0]); return promise.then(() => reader.result); }""", ) assert content == "contents of the file\n"
async def test_should_be_able_to_reset_selected_files_with_empty_file_list( page: Page, server ): await page.setContent("<input type=file>") page.once( "filechooser", lambda file_chooser: asyncio.create_task(file_chooser.setFiles(FILE_TO_UPLOAD)), ) file_length_1 = ( await asyncio.gather( page.waitForEvent("filechooser"), page.evalOnSelector( "input", """async picker => { picker.click(); await new Promise(x => picker.oninput = x); return picker.files.length; }""", ), ) )[1] assert file_length_1 == 1 page.once( "filechooser", lambda file_chooser: asyncio.create_task(file_chooser.setFiles([])), ) file_length_2 = ( await asyncio.gather( page.waitForEvent("filechooser"), page.evalOnSelector( "input", """async picker => { picker.click() await new Promise(x => picker.oninput = x) return picker.files.length }""", ), ) )[1] assert file_length_2 == 0