diff --git a/web/e2e-tests/admin.test.ts b/web/e2e-tests/admin.test.ts index 918dca5143..7fe686bede 100644 --- a/web/e2e-tests/admin.test.ts +++ b/web/e2e-tests/admin.test.ts @@ -1,6 +1,6 @@ import {strict as assert} from "assert"; -import type {ElementHandle, Page} from "puppeteer"; +import type {Page} from "puppeteer"; import * as common from "./lib/common"; @@ -156,11 +156,9 @@ async function test_organization_permissions(page: Page): Promise { async function test_add_emoji(page: Page): Promise { await common.fill_form(page, "#add-custom-emoji-form", {name: "zulip logo"}); - const emoji_upload_handle = await page.$("#emoji_file_input"); + const emoji_upload_handle = await page.$("input#emoji_file_input"); assert.ok(emoji_upload_handle); - await (emoji_upload_handle as ElementHandle).uploadFile( - "static/images/logo/zulip-icon-128x128.png", - ); + await emoji_upload_handle.uploadFile("static/images/logo/zulip-icon-128x128.png"); await page.click("#add-custom-emoji-modal .dialog_submit_button"); await common.wait_for_micromodal_to_close(page); @@ -194,11 +192,9 @@ async function test_custom_realm_emoji(page: Page): Promise { } async function test_upload_realm_icon_image(page: Page): Promise { - const upload_handle = await page.$("#realm-icon-upload-widget .image_file_input"); + const upload_handle = await page.$("#realm-icon-upload-widget input.image_file_input"); assert.ok(upload_handle); - await (upload_handle as ElementHandle).uploadFile( - "static/images/logo/zulip-icon-128x128.png", - ); + await upload_handle.uploadFile("static/images/logo/zulip-icon-128x128.png"); await page.waitForSelector("#realm-icon-upload-widget .upload-spinner-background", { visible: true, diff --git a/web/e2e-tests/copy-and-paste.test.ts b/web/e2e-tests/copy-and-paste.test.ts index 0e00be444c..4a892ec2bb 100644 --- a/web/e2e-tests/copy-and-paste.test.ts +++ b/web/e2e-tests/copy-and-paste.test.ts @@ -37,7 +37,7 @@ async function copy_messages( ctrlKey: true, keyCode: 67, which: 67, - } as KeyboardEventInit), + }), ); // find temp div with copied text diff --git a/web/e2e-tests/lib/common.ts b/web/e2e-tests/lib/common.ts index 4f3df4767b..b8d85374ff 100644 --- a/web/e2e-tests/lib/common.ts +++ b/web/e2e-tests/lib/common.ts @@ -140,13 +140,12 @@ export async function fill_form( return (await page.$(`select[name="${CSS.escape(name)}"]`)) !== null; } for (const name of Object.keys(params)) { - const name_selector = `${form_selector} [name="${name}"]`; const value = params[name]; if (typeof value === "boolean") { await page.$eval( - name_selector, + `${form_selector} input[name="${CSS.escape(name)}"]`, (el, value) => { - if (el instanceof HTMLInputElement && el.checked !== value) { + if (el.checked !== value) { el.click(); } }, @@ -156,13 +155,9 @@ export async function fill_form( if (typeof value !== "string") { throw new TypeError(`Expected string for ${name}`); } - await page.select(name_selector, value); + await page.select(`${form_selector} select[name="${CSS.escape(name)}"]`, value); } else { - // clear any existing text in the input field before filling. - await page.$eval(name_selector, (el) => { - (el as HTMLInputElement).value = ""; - }); - await page.type(name_selector, value); + await clear_and_type(page, `${form_selector} [name="${CSS.escape(name)}"`, value); } } } @@ -173,17 +168,24 @@ export async function check_form_contents( params: Record, ): Promise { for (const name of Object.keys(params)) { - const name_selector = `${form_selector} [name="${name}"]`; const expected_value = params[name]; if (typeof expected_value === "boolean") { assert.equal( - await page.$eval(name_selector, (el) => (el as HTMLInputElement).checked), + await page.$eval( + `${form_selector} input[name="${CSS.escape(name)}"]`, + (el) => el.checked, + ), expected_value, "Form content is not as expected.", ); } else { assert.equal( - await page.$eval(name_selector, (el) => (el as HTMLInputElement).value), + await page.$eval(`${form_selector} [name="${CSS.escape(name)}"]`, (el) => { + if (!(el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement)) { + throw new TypeError("Expected or