From ddc292407285641b9a36290051194472011e31a7 Mon Sep 17 00:00:00 2001 From: Timo K Date: Fri, 5 Dec 2025 15:06:06 +0100 Subject: [PATCH] add playwright test to crash the widget. --- .../widget/error-screen-can-close.spec.ts | 50 +++++++++++++++++++ yarn.lock | 22 ++------ 2 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 playwright/widget/error-screen-can-close.spec.ts diff --git a/playwright/widget/error-screen-can-close.spec.ts b/playwright/widget/error-screen-can-close.spec.ts new file mode 100644 index 00000000..d671b0d6 --- /dev/null +++ b/playwright/widget/error-screen-can-close.spec.ts @@ -0,0 +1,50 @@ +/* +Copyright 2025 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE in the repository root for full details. +*/ + +import { expect, test } from "@playwright/test"; + +import { widgetTest } from "../fixtures/widget-user.ts"; + +// Skip test, including Fixtures +widgetTest.skip( + ({ browserName }) => browserName === "firefox", + "This test is not working on firefox, after hangup brooks is locked in a strange state with a blank widget", +); + +widgetTest("Exit a widget in the error screen", async ({ asWidget }) => { + test.slow(); // Triples the timeout + + const { brooks } = asWidget; + + await expect( + brooks.page.getByRole("button", { name: "Video call" }), + ).toBeVisible(); + await brooks.page.getByRole("button", { name: "Video call" }).click(); + + await expect( + brooks.page.getByRole("menuitem", { name: "Legacy Call" }), + ).toBeVisible(); + await expect( + brooks.page.getByRole("menuitem", { name: "Element Call" }), + ).toBeVisible(); + + await brooks.page.getByRole("menuitem", { name: "Element Call" }).click(); + + const widgetContent = brooks.page + .locator('iframe[title="Element Call"]') + .contentFrame(); + await widgetContent.getByTestId("lobby_joinCall").click(); + + await widgetContent.getByRole("button", { name: "Settings" }).click(); + await widgetContent.getByRole("tab", { name: "Preferences" }).click(); + await widgetContent.getByText("Developer mode", { exact: true }).click(); + await widgetContent.getByRole("tab", { name: "Developer" }).click(); + await widgetContent.getByRole("button", { name: "CrashMe" }).click(); + await widgetContent.getByRole("button", { name: "Close" }).click(); + + await expect(brooks.page.locator(".mx_BasicMessageComposer")).toBeVisible(); +}); diff --git a/yarn.lock b/yarn.lock index 94b73130..a51df248 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6571,24 +6571,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001701 - resolution: "caniuse-lite@npm:1.0.30001701" - checksum: 10c0/a814bd4dd8b49645ca51bc6ee42120660a36394bb54eb6084801d3f2bbb9471e5e1a9a8a25f44f83086a032d46e66b33031e2aa345f699b90a7e84a9836b819c - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001702": - version: 1.0.30001720 - resolution: "caniuse-lite@npm:1.0.30001720" - checksum: 10c0/ba9f963364ec4bfc8359d15d7e2cf365185fa1fddc90b4f534c71befedae9b3dd0cd2583a25ffc168a02d7b61b6c18b59bda0a1828ea2a5250fd3e35c2c049e9 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001726": - version: 1.0.30001726 - resolution: "caniuse-lite@npm:1.0.30001726" - checksum: 10c0/2c5f91da7fd9ebf8c6b432818b1498ea28aca8de22b30dafabe2a2a6da1e014f10e67e14f8e68e872a0867b6b4cd6001558dde04e3ab9770c9252ca5c8849d0e +"caniuse-lite@npm:^1.0.30001688, caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001726": + version: 1.0.30001759 + resolution: "caniuse-lite@npm:1.0.30001759" + checksum: 10c0/b0f415960ba34995cda18e0d25c4e602f6917b9179290a76bdd0311423505b78cc93e558a90c98a22a1cc6b1781ab720ef6beea24ec7e29a1c1164ca72eac3a2 languageName: node linkType: hard