Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run Playwright tests against Dendrite & Pinecone periodically #28888

Draft
wants to merge 72 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
00b25f5
Switch to TestContainers for manging services in Playwright
t3chguy Jan 3, 2025
87a0acb
Iterate
t3chguy Jan 3, 2025
7ba1d3e
Flip fixture dependency order
t3chguy Jan 3, 2025
c0337f1
Remove mas dep
t3chguy Jan 6, 2025
a4ba79a
Iterate
t3chguy Jan 6, 2025
94697fe
Iterate
t3chguy Jan 6, 2025
9c52986
Iterate
t3chguy Jan 6, 2025
f176473
Iterate
t3chguy Jan 6, 2025
75ba4f2
Iterate
t3chguy Jan 6, 2025
99af4a4
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 6, 2025
4fce001
Iterate
t3chguy Jan 6, 2025
4eefa27
Update matrix-authentication-service in Playwright tests
t3chguy Jan 6, 2025
1cd1dcd
delint
t3chguy Jan 6, 2025
f1c392d
Fix SMTP port
t3chguy Jan 6, 2025
84126e8
Iterate
t3chguy Jan 6, 2025
eaca3f8
Comments
t3chguy Jan 6, 2025
edefe02
Strip ansi from playwright logs to make them more readable
t3chguy Jan 6, 2025
d506dec
Actually do the update
t3chguy Jan 6, 2025
63e855e
Iterate
t3chguy Jan 6, 2025
8e1372b
Remove access to homeserver.config.baseUrl field in favour of homeser…
t3chguy Jan 6, 2025
d80ad9d
Use sane default_server_config and specify server.invalid in the spec…
t3chguy Jan 6, 2025
4cacb83
Fix mas run
t3chguy Jan 6, 2025
08bb07e
break cycle
t3chguy Jan 6, 2025
7104429
Merge branch 't3chguy/playwright-update-mas' of https://github.com/ve…
t3chguy Jan 6, 2025
e7b62c3
Merge branch 't3chguy/prepare-playwright-testcontainers' of https://g…
t3chguy Jan 6, 2025
f6ea850
Iterate
t3chguy Jan 6, 2025
b2fb036
typo
t3chguy Jan 6, 2025
1368dc0
Iterate
t3chguy Jan 6, 2025
27652d0
Iterate
t3chguy Jan 6, 2025
ac53bab
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 6, 2025
69723c5
Merge branch 't3chguy/prepare-playwright-testcontainers' of https://g…
t3chguy Jan 6, 2025
9ba9f1c
Iterate
t3chguy Jan 6, 2025
ea61320
prettier
t3chguy Jan 6, 2025
7ceced6
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 6, 2025
fd44732
Merge branch 't3chguy/prepare-playwright-testcontainers' of https://g…
t3chguy Jan 6, 2025
0410574
Wire up basics of dendriteHomeserver
t3chguy Jan 6, 2025
40d755a
Run Playwright tests against Dendrite & Pinecone periodically
t3chguy Jan 7, 2025
df510dc
Iterate
t3chguy Jan 7, 2025
7d8f00f
Iterate
t3chguy Jan 7, 2025
e4cff3f
Iterate
t3chguy Jan 7, 2025
4142c80
Iterate
t3chguy Jan 7, 2025
5e304be
Iterate
t3chguy Jan 7, 2025
18a3e72
Iterate
t3chguy Jan 7, 2025
757a22a
Iterate
t3chguy Jan 7, 2025
048563a
Iterate
t3chguy Jan 7, 2025
af8935e
Iterate
t3chguy Jan 7, 2025
cc871a6
Fix playwright-image-updates.yaml workflow
t3chguy Jan 8, 2025
30c82d8
Add `X-Run-All-Tests` label for running all tests
t3chguy Jan 8, 2025
0f5e135
Ignore failing tests in stale-screenshot-reporter.ts to avoid confusi…
t3chguy Jan 8, 2025
6cdfdc0
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 8, 2025
13527e7
Iterate
t3chguy Jan 8, 2025
9a89876
Merge branch 't3chguy/playwright-fixes' of https://github.com/vector-…
t3chguy Jan 8, 2025
4a2a93e
Iterate
t3chguy Jan 8, 2025
b10fa4e
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 8, 2025
91370c6
Specify Synapse ui_auth.session_timeout only on tests which require it
t3chguy Jan 8, 2025
ca38b0f
Iterate
t3chguy Jan 8, 2025
dc08e02
Merge branch 't3chguy/playwright-uia-timeout' of https://github.com/v…
t3chguy Jan 8, 2025
f7170ea
Iterate
t3chguy Jan 8, 2025
c890dfc
Iterate
t3chguy Jan 8, 2025
65936e6
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 8, 2025
9f5c32a
Iterate
t3chguy Jan 8, 2025
bde3142
React to MatrixEvent sender/target sentinels being updated for render…
t3chguy Jan 8, 2025
5ca8d74
Iterate
t3chguy Jan 8, 2025
4b79bb6
Merge branch 't3chguy/sentinels' of https://github.com/vector-im/elem…
t3chguy Jan 8, 2025
668da48
Iterate
t3chguy Jan 9, 2025
3d93ab8
Remove test code
t3chguy Jan 9, 2025
658527c
Iterate
t3chguy Jan 9, 2025
f3bbfae
React to sentinel changes in EventListSummary
t3chguy Jan 9, 2025
3051a95
Iterate
t3chguy Jan 9, 2025
e8910d9
Iterate
t3chguy Jan 9, 2025
40d9b3e
Merge branch 't3chguy/sentinels' of https://github.com/vector-im/elem…
t3chguy Jan 9, 2025
c75da32
Merge branch 'develop' of https://github.com/vector-im/element-web in…
t3chguy Jan 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/end-to-end-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ jobs:
- Chrome
- Firefox
- WebKit
- Dendrite
- Pinecone
runAllTests:
- ${{ github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'X-Run-All-Tests') }}
# Skip the Firefox & Safari runs unless this was a cron trigger or PR has X-Run-All-Tests label
Expand All @@ -122,6 +124,10 @@ jobs:
project: Firefox
- runAllTests: false
project: WebKit
- runAllTests: false
project: Dendrite
- runAllTests: false
project: Pinecone
steps:
- uses: actions/checkout@v4
with:
Expand Down
36 changes: 29 additions & 7 deletions playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,25 @@ Please see LICENSE files in the repository root for full details.

import { defineConfig, devices } from "@playwright/test";

import { Options } from "./playwright/services";

const baseURL = process.env["BASE_URL"] ?? "http://localhost:8080";

export default defineConfig({
const chromeProject = {
...devices["Desktop Chrome"],
channel: "chromium",
permissions: ["clipboard-write", "clipboard-read", "microphone"],
launchOptions: {
args: ["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream", "--mute-audio"],
},
};

export default defineConfig<Options>({
projects: [
{
name: "Chrome",
use: {
...devices["Desktop Chrome"],
channel: "chromium",
permissions: ["clipboard-write", "clipboard-read", "microphone"],
launchOptions: {
args: ["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream", "--mute-audio"],
},
...chromeProject,
},
},
{
Expand Down Expand Up @@ -48,6 +54,22 @@ export default defineConfig({
},
ignoreSnapshots: true,
},
{
name: "Dendrite",
use: {
...chromeProject,
homeserverType: "dendrite",
},
ignoreSnapshots: true,
},
{
name: "Pinecone",
use: {
...chromeProject,
homeserverType: "pinecone",
},
ignoreSnapshots: true,
},
],
use: {
viewport: { width: 1280, height: 720 },
Expand Down
2 changes: 1 addition & 1 deletion playwright/e2e/create-room/create-room.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ test.describe("Create Room", () => {
// Submit
await dialog.getByRole("button", { name: "Create room" }).click();

await expect(page).toHaveURL(/\/#\/room\/#test-room-1:localhost/);
await expect(page).toHaveURL(new RegExp(`/#/room/#test-room-1:${user.homeServer}`));
const header = page.locator(".mx_RoomHeader");
await expect(header).toContainText(name);
});
Expand Down
2 changes: 1 addition & 1 deletion playwright/e2e/crypto/backups-mas.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery

1) [WebKit] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery Test timeout of 30000ms exceeded.

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere

2) [WebKit] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere Test timeout of 30000ms exceeded.

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery

1) [Firefox] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery Test timeout of 30000ms exceeded.

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere

2) [Firefox] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere Test timeout of 30000ms exceeded.

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery

1) [Chrome] › crypto/backups-mas.spec.ts:31:9 › Encryption state after registration › user is prompted to set up recovery Test timeout of 30000ms exceeded.

Check failure on line 1 in playwright/e2e/crypto/backups-mas.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere

2) [Chrome] › crypto/backups-mas.spec.ts:48:9 › Key backup reset from elsewhere › Key backup is disabled when reset from elsewhere Test timeout of 30000ms exceeded.
Copyright 2024 New Vector Ltd.
Copyright 2023 The Matrix.org Foundation C.I.C.

Expand All @@ -13,7 +13,7 @@
import { masHomeserver } from "../../plugins/homeserver/synapse/masHomeserver.ts";

// These tests register an account with MAS because then we go through the "normal" registration flow
// and crypto gets set up. Using the 'user' fixture create a a user an synthesizes an existing login,
// and crypto gets set up. Using the 'user' fixture create a user and synthesizes an existing login,
// which is faster but leaves us without crypto set up.
test.use(masHomeserver);
test.describe("Encryption state after registration", () => {
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/crypto/backups.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Please see LICENSE files in the repository root for full details.
import { type Page } from "@playwright/test";

import { test, expect } from "../../element-web-test";
import { isDendrite } from "../../plugins/homeserver/dendrite";

async function expectBackupVersionToBe(page: Page, version: string) {
await expect(page.locator(".mx_SecureBackupPanel_statusList tr:nth-child(5) td")).toHaveText(
Expand All @@ -19,6 +20,7 @@ async function expectBackupVersionToBe(page: Page, version: string) {
}

test.describe("Backups", () => {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");
test.use({
displayName: "Hanako",
});
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/crypto/complete-security.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ Please see LICENSE files in the repository root for full details.

import { test, expect } from "../../element-web-test";
import { logIntoElement } from "./utils";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Complete security", () => {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");
test.use({
displayName: "Jeff",
});
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/crypto/crypto.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { expect, test } from "../../element-web-test";
import { autoJoin, copyAndContinue, createSharedRoomWithUser, enableKeyBackup, verify } from "./utils";
import { Bot } from "../../pages/bot";
import { ElementAppPage } from "../../pages/ElementAppPage";
import { isDendrite } from "../../plugins/homeserver/dendrite";

const checkDMRoom = async (page: Page) => {
const body = page.locator(".mx_RoomView_body");
Expand Down Expand Up @@ -67,6 +68,7 @@ const bobJoin = async (page: Page, bob: Bot) => {
};

test.describe("Cryptography", function () {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");
test.use({
displayName: "Alice",
botCreateOpts: {
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/crypto/decryption-failure-messages.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ test.describe("Cryptography", function () {
});

test.describe("decryption failure messages", () => {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");

test("should handle device-relative historical messages", async ({
homeserver,
page,
Expand Down
7 changes: 4 additions & 3 deletions playwright/e2e/crypto/device-verification.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,10 @@ test.describe("Device verification", { tag: "@no-webkit" }, () => {
/* And we're all done! */
const infoDialog = page.locator(".mx_InfoDialog");
await infoDialog.getByRole("button", { name: "They match" }).click();
await expect(
infoDialog.getByText(`You've successfully verified (${aliceBotClient.credentials.deviceId})!`),
).toBeVisible();
// We don't assert the full string as the device name is unset on Synapse but set to the user ID on Dendrite
await expect(infoDialog.getByText(`You've successfully verified`)).toContainText(
`(${aliceBotClient.credentials.deviceId})`,
);
await infoDialog.getByRole("button", { name: "Got it" }).click();
});
});
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/crypto/logout.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ Please see LICENSE files in the repository root for full details.

import { test, expect } from "../../element-web-test";
import { createRoom, enableKeyBackup, logIntoElement, sendMessageInCurrentRoom } from "./utils";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Logout tests", () => {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");
test.beforeEach(async ({ page, homeserver, credentials }) => {
await logIntoElement(page, credentials);
});
Expand Down
3 changes: 3 additions & 0 deletions playwright/e2e/editing/editing.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type { EventType, IContent, ISendEventResponse, MsgType, Visibility } fro
import { expect, test } from "../../element-web-test";
import { ElementAppPage } from "../../pages/ElementAppPage";
import { SettingLevel } from "../../../src/settings/SettingLevel";
import { isDendrite } from "../../plugins/homeserver/dendrite";

async function sendEvent(app: ElementAppPage, roomId: string): Promise<ISendEventResponse> {
return app.client.sendEvent(roomId, null, "m.room.message" as EventType, {
Expand All @@ -31,6 +32,8 @@ function mkPadding(n: number): IContent {
}

test.describe("Editing", () => {
test.skip(isDendrite, "due to a Dendrite bug https://github.com/element-hq/dendrite/issues/3488");

// Edit "Message"
const editLastMessage = async (page: Page, edit: string) => {
const eventTile = page.locator(".mx_RoomView_MessageList .mx_EventTile_last");
Expand Down
26 changes: 6 additions & 20 deletions playwright/e2e/integration-manager/kick.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,29 +69,15 @@ async function sendActionFromIntegrationManager(
await iframe.getByRole("button", { name: "Press to send action" }).click();
}

async function clickUntilGone(page: Page, selector: string, attempt = 0) {
if (attempt === 11) {
throw new Error("clickUntilGone attempt count exceeded");
}

await page.locator(selector).last().click();

const count = await page.locator(selector).count();
if (count > 0) {
return clickUntilGone(page, selector, ++attempt);
}
}

async function expectKickedMessage(page: Page, shouldExist: boolean) {
// Expand any event summaries, we can't use a click multiple here because clicking one might de-render others
// This is quite horrible but seems the most stable way of clicking 0-N buttons,
// one at a time with a full re-evaluation after each click
await clickUntilGone(page, ".mx_GenericEventListSummary_toggle[aria-expanded=false]");
await expect(async () => {
await page.locator(".mx_GenericEventListSummary_toggle[aria-expanded=false]").last().click();
await expect(page.getByText(`${USER_DISPLAY_NAME} removed ${BOT_DISPLAY_NAME}: ${KICK_REASON}`)).toBeVisible({
visible: shouldExist,
});
}).toPass();

// Check for the event message (or lack thereof)
await expect(page.getByText(`${USER_DISPLAY_NAME} removed ${BOT_DISPLAY_NAME}: ${KICK_REASON}`)).toBeVisible({
visible: shouldExist,
});
}

test.describe("Integration Manager: Kick", () => {
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/knock/create-knock-room.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ Please see LICENSE files in the repository root for full details.
import { test, expect } from "../../element-web-test";
import { waitForRoom } from "../utils";
import { Filter } from "../../pages/Spotlight";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Create Knock Room", () => {
test.skip(isDendrite, "Dendrite does not have support for knocking");
test.use({
displayName: "Alice",
labsFlags: ["feature_ask_to_join"],
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/knock/knock-into-room.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ import { type Visibility } from "matrix-js-sdk/src/matrix";
import { test, expect } from "../../element-web-test";
import { waitForRoom } from "../utils";
import { Filter } from "../../pages/Spotlight";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Knock Into Room", () => {
test.skip(isDendrite, "Dendrite does not have support for knocking");
test.use({
displayName: "Alice",
labsFlags: ["feature_ask_to_join"],
Expand Down
2 changes: 2 additions & 0 deletions playwright/e2e/knock/manage-knocks.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ Please see LICENSE files in the repository root for full details.

import { test, expect } from "../../element-web-test";
import { waitForRoom } from "../utils";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Manage Knocks", () => {
test.skip(isDendrite, "Dendrite does not have support for knocking");
test.use({
displayName: "Alice",
labsFlags: ["feature_ask_to_join"],
Expand Down
28 changes: 22 additions & 6 deletions playwright/e2e/lazy-loading/lazy-loading.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@ import { Bot } from "../../pages/bot";
import type { Locator, Page } from "@playwright/test";
import type { ElementAppPage } from "../../pages/ElementAppPage";
import { test, expect } from "../../element-web-test";
import { Credentials } from "../../plugins/homeserver";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Lazy Loading", () => {
test.skip(isDendrite, "due to a Dendrite bug https://github.com/element-hq/dendrite/issues/3488");

const charlies: Bot[] = [];

test.use({
Expand All @@ -35,12 +39,18 @@ test.describe("Lazy Loading", () => {
});

const name = "Lazy Loading Test";
const alias = "#lltest:localhost";
const charlyMsg1 = "hi bob!";
const charlyMsg2 = "how's it going??";
let roomId: string;

async function setupRoomWithBobAliceAndCharlies(page: Page, app: ElementAppPage, bob: Bot, charlies: Bot[]) {
async function setupRoomWithBobAliceAndCharlies(
page: Page,
app: ElementAppPage,
user: Credentials,
bob: Bot,
charlies: Bot[],
) {
const alias = `#lltest:${user.homeServer}`;
const visibility = await page.evaluate(() => (window as any).matrixcs.Visibility.Public);
roomId = await bob.createRoom({
name,
Expand Down Expand Up @@ -95,7 +105,13 @@ test.describe("Lazy Loading", () => {
}
}

async function joinCharliesWhileAliceIsOffline(page: Page, app: ElementAppPage, charlies: Bot[]) {
async function joinCharliesWhileAliceIsOffline(
page: Page,
app: ElementAppPage,
user: Credentials,
charlies: Bot[],
) {
const alias = `#lltest:${user.homeServer}`;
await app.client.network.goOffline();
for (const charly of charlies) {
await charly.joinRoom(alias);
Expand All @@ -107,19 +123,19 @@ test.describe("Lazy Loading", () => {
await app.client.waitForNextSync();
}

test("should handle lazy loading properly even when offline", async ({ page, app, bot }) => {
test("should handle lazy loading properly even when offline", async ({ page, app, bot, user }) => {
test.slow();
const charly1to5 = charlies.slice(0, 5);
const charly6to10 = charlies.slice(5);

// Set up room with alice, bob & charlies 1-5
await setupRoomWithBobAliceAndCharlies(page, app, bot, charly1to5);
await setupRoomWithBobAliceAndCharlies(page, app, user, bot, charly1to5);
// Alice should see 2 messages from every charly with the correct display name
await checkPaginatedDisplayNames(app, charly1to5);

await openMemberlist(app);
await checkMemberList(page, charly1to5);
await joinCharliesWhileAliceIsOffline(page, app, charly6to10);
await joinCharliesWhileAliceIsOffline(page, app, user, charly6to10);
await checkMemberList(page, charly6to10);

for (const charly of charlies) {
Expand Down
3 changes: 3 additions & 0 deletions playwright/e2e/login/login-consent.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login

3) [WebKit] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up

4) [WebKit] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up, skippable by default { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up

5) [WebKit] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up

6) [WebKit] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [WebKit] 6/6

[WebKit] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout

7) [WebKit] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login

3) [Firefox] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up

4) [Firefox] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up, skippable by default { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up

5) [Firefox] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up

6) [Firefox] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Firefox] 6/6

[Firefox] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout

7) [Firefox] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login

3) [Chrome] › login/login-consent.spec.ts:150:13 › Login › Password login › Follows the original link after login { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up

4) [Chrome] › login/login-consent.spec.ts:159:17 › Login › Password login › verification after login › Shows verification prompt after login if signing keys are set up, skippable by default { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up

5) [Chrome] › login/login-consent.spec.ts:189:21 › Login › Password login › verification after login › with force_verification off › Shows skippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up

6) [Chrome] › login/login-consent.spec.ts:223:21 › Login › Password login › verification after login › with force_verification on › Shows unskippable verification prompt after login if signing keys are set up { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }

Check failure on line 1 in playwright/e2e/login/login-consent.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 6/6

[Chrome] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout

7) [Chrome] › login/login-consent.spec.ts:255:13 › Login › logout › should go to login page on logout { errcode: 'M_USER_IN_USE', error: 'User ID already taken.' }
Copyright 2024 New Vector Ltd.
Copyright 2023 The Matrix.org Foundation C.I.C.

Expand All @@ -12,6 +12,7 @@
import { selectHomeserver } from "../utils";
import { Credentials, HomeserverInstance } from "../../plugins/homeserver";
import { consentHomeserver } from "../../plugins/homeserver/synapse/consentHomeserver.ts";
import { isDendrite } from "../../plugins/homeserver/dendrite";

// This test requires fixed credentials for the device signing keys below to work
const username = "user1234";
Expand Down Expand Up @@ -102,6 +103,8 @@

test.describe("Login", () => {
test.describe("Password login", () => {
test.skip(isDendrite, "Dendrite lacks support for MSC3967 so requires additional auth here");

test("Loads the welcome page by default; then logs in with an existing account and lands on the home screen", async ({
credentials,
page,
Expand Down
2 changes: 0 additions & 2 deletions playwright/e2e/oidc/oidc-native.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@ Please see LICENSE files in the repository root for full details.
import { test, expect } from "../../element-web-test.ts";
import { registerAccountMas } from ".";
import { ElementAppPage } from "../../pages/ElementAppPage.ts";
import { isDendrite } from "../../plugins/homeserver/dendrite";
import { masHomeserver } from "../../plugins/homeserver/synapse/masHomeserver.ts";

test.use(masHomeserver);
test.describe("OIDC Native", { tag: ["@no-firefox", "@no-webkit"] }, () => {
test.skip(isDendrite, "does not yet support MAS");
test.slow(); // trace recording takes a while here

test("can register the oauth2 client and an account", async ({ context, page, homeserver, mailhogClient, mas }) => {
Expand Down
3 changes: 3 additions & 0 deletions playwright/e2e/one-to-one-chat/one-to-one-chat.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@ Please see LICENSE files in the repository root for full details.

import { test as base, expect } from "../../element-web-test";
import { Credentials } from "../../plugins/homeserver";
import { isDendrite } from "../../plugins/homeserver/dendrite";

const test = base.extend<{
user2?: Credentials;
}>({});

test.describe("1:1 chat room", () => {
test.skip(isDendrite, "due to a Dendrite bug https://github.com/element-hq/dendrite/issues/3492");

test.use({
displayName: "Jeff",
user2: async ({ homeserver }, use) => {
Expand Down
2 changes: 1 addition & 1 deletion playwright/e2e/permalinks/permalinks.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ test.describe("permalinks", () => {
await charlotte.prepareClient();

// We don't use a bot for danielle as we want a stable MXID.
const danielleId = "@danielle:localhost";
const danielleId = `@danielle:${user.homeServer}`;

const room1Id = await app.client.createRoom({ name: room1Name });
const room2Id = await app.client.createRoom({ name: room2Name });
Expand Down
3 changes: 3 additions & 0 deletions playwright/e2e/polls/polls.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@ import { Bot } from "../../pages/bot";
import { SettingLevel } from "../../../src/settings/SettingLevel";
import { Layout } from "../../../src/settings/enums/Layout";
import type { Locator, Page } from "@playwright/test";
import { isDendrite } from "../../plugins/homeserver/dendrite";

test.describe("Polls", () => {
test.skip(isDendrite, "due to a Dendrite bug https://github.com/element-hq/dendrite/issues/3492");

type CreatePollOptions = {
title: string;
options: string[];
Expand Down
Loading
Loading