mirror of
https://github.com/vector-im/element-call.git
synced 2026-01-30 03:15:55 +00:00
* Fix the interactivity of buttons while reconnecting or in earpiece mode When we're in one of these modes, we need to ensure that everything above the overlay (the header and footer buttons) is interactive, while everything obscured by the overlay (the media tiles) is non-interactive and removed from the accessibility tree. It's not a very easy task to trap focus *outside* an element, so the best solution I could come up with is to set tabindex="-1" manually on all interactive elements belonging to the media tiles. * Write a Playwright test for reconnecting * fix lints Signed-off-by: Timo K <toger5@hotmail.de> * fix test Signed-off-by: Timo K <toger5@hotmail.de> * enable http2 for matrx-rtc host to allow the jwt service to talk to the SFU * remove rate limit for delayed events * more time to connect to livekit SFU * Due to a Firefox issue we set the start anchor for the tab test to the Mute microphone button * adapt to most recent Element Web version * Use the "End call" button as proofe for a started call * Currrenty disabled due to recent Element Web - not indicating the number of participants - bypassing Lobby * linting * disable 'can only interact with header and footer while reconnecting' for firefox --------- Signed-off-by: Timo K <toger5@hotmail.de> Co-authored-by: Timo <16718859+toger5@users.noreply.github.com> Co-authored-by: Timo K <toger5@hotmail.de> Co-authored-by: fkwp <github-fkwp@w4ve.de>
106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
/*
|
|
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("Start a new call as widget", async ({ asWidget, browserName }) => {
|
|
test.slow(); // Triples the timeout
|
|
|
|
const { brooks, whistler } = 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();
|
|
|
|
await expect(
|
|
brooks.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame()
|
|
.getByTestId("lobby_joinCall"),
|
|
).toBeVisible();
|
|
|
|
await brooks.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame()
|
|
.getByTestId("lobby_joinCall")
|
|
.click();
|
|
|
|
// Check the join indicator on the room list
|
|
await expect(
|
|
brooks.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame()
|
|
.getByRole("button", { name: "End call" }),
|
|
).toBeVisible();
|
|
|
|
// Join from the other side
|
|
await expect(whistler.page.getByText("Video call started")).toBeVisible();
|
|
await expect(
|
|
whistler.page.getByRole("button", { name: "Join" }),
|
|
).toBeVisible();
|
|
await whistler.page.getByRole("button", { name: "Join" }).click();
|
|
|
|
// Currently disabled due to recent Element Web is bypassing Lobby
|
|
// await expect(
|
|
// whistler.page
|
|
// .locator('iframe[title="Element Call"]')
|
|
// .contentFrame()
|
|
// .getByTestId("lobby_joinCall"),
|
|
// ).toBeVisible();
|
|
//
|
|
// await whistler.page
|
|
// .locator('iframe[title="Element Call"]')
|
|
// .contentFrame()
|
|
// .getByTestId("lobby_joinCall")
|
|
// .click();
|
|
|
|
// Currrenty disabled due to recent Element Web not indicating the number of participants
|
|
// await expect(
|
|
// whistler.page.locator("div").filter({ hasText: /^Joined • 2$/ }),
|
|
// ).toBeVisible();
|
|
|
|
// await expect(
|
|
// brooks.page.locator("div").filter({ hasText: /^Joined • 2$/ }),
|
|
// ).toBeVisible();
|
|
|
|
// Whistler leaves
|
|
await whistler.page.waitForTimeout(1000);
|
|
await whistler.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame()
|
|
.getByTestId("incall_leave")
|
|
.click();
|
|
|
|
// Brooks leaves
|
|
await brooks.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame()
|
|
.getByTestId("incall_leave")
|
|
.click();
|
|
|
|
await expect(whistler.page.locator(".mx_BasicMessageComposer")).toBeVisible();
|
|
await expect(brooks.page.locator(".mx_BasicMessageComposer")).toBeVisible();
|
|
});
|