mirror of
https://github.com/element-hq/element-call.git
synced 2026-10-11 11:37:37 +00:00
- The standalone app at five window sizes, from a large desktop to a phone-shaped 360x640, on Chromium and Firefox: the camera menu stays inside the window, which is the call area there, and the last effect can still be scrolled to and chosen. - As a component in a host page, and as a widget in Element Web: a picture chosen reaches the preview, so the pipeline's model and WebAssembly load from those builds, and in a small container the last effect is reached and chosen. - Compound portals the menu to the page and takes no container for it, so there it has none of the component's scoped styles, as the microphone menu has none. - The colour checks the three share live in playwright/utils. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
/*
|
|
Copyright 2026 Element Creations 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";
|
|
import { TestHelpers } from "./test-helpers.ts";
|
|
import { averageColour, cameraColour, expectWearing } from "../utils/colour.ts";
|
|
|
|
// Background effects need WebGL2, and headless Firefox on a CI runner has none,
|
|
// so it rightly offers none of them.
|
|
test.skip(
|
|
({ browserName }) => browserName === "firefox",
|
|
"Background effects need WebGL2, which headless Firefox on CI does not have",
|
|
);
|
|
|
|
widgetTest(
|
|
"puts a picture on the preview inside Element Web",
|
|
async ({ asWidget }) => {
|
|
test.slow();
|
|
const { brooks } = asWidget;
|
|
await TestHelpers.startCallInCurrentRoom(brooks.page, false);
|
|
const frame = brooks.page
|
|
.locator('iframe[title="Element Call"]')
|
|
.contentFrame();
|
|
await expect(frame.getByTestId("lobby_joinCall")).toBeVisible();
|
|
const preview = frame.locator("video").first();
|
|
const camera = await cameraColour(preview);
|
|
|
|
await frame.getByRole("button", { name: "Camera", exact: true }).click();
|
|
const tile = frame
|
|
.getByRole("group", { name: "Background effects" })
|
|
.getByRole("menuitemradio", { name: "Background 1" });
|
|
const picture = await averageColour(tile.locator("img"));
|
|
await tile.click();
|
|
await expect(tile).toHaveAttribute("aria-checked", "true");
|
|
await expectWearing(preview, picture, camera);
|
|
},
|
|
);
|