1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-07-30 02:21:17 +03:00

Migrate timeline.spec.ts from Cypress to Playwright (#12025)

* Migrate timeline.spec.ts from Cypress to Playwright

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* Monospace font for timestamps

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* More expects

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* delint

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

---------

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2023-12-13 14:59:08 +00:00
committed by GitHub
parent 8040ed92a9
commit 4f19356492
35 changed files with 1194 additions and 1032 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -26,7 +26,10 @@ export default defineConfig<TestOptions>({
ignoreHTTPSErrors: true, ignoreHTTPSErrors: true,
video: "retain-on-failure", video: "retain-on-failure",
baseURL, baseURL,
permissions: ["clipboard-write", "clipboard-read"], permissions: ["clipboard-write", "clipboard-read", "microphone"],
launchOptions: {
args: ["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream", "--mute-audio"],
},
trace: "on-first-retry", trace: "on-first-retry",
}, },
webServer: { webServer: {

File diff suppressed because it is too large Load Diff

View File

@ -250,6 +250,10 @@ export const expect = baseExpect.extend({
.mx_ReplyChain { .mx_ReplyChain {
border-left-color: var(--cpd-color-blue-1200) !important; border-left-color: var(--cpd-color-blue-1200) !important;
} }
/* Use monospace font for timestamp for consistent mask width */
.mx_MessageTimestamp {
font-family: Inconsolata !important;
}
${options?.css ?? ""} ${options?.css ?? ""}
`, `,
})) as ElementHandle<Element>; })) as ElementHandle<Element>;

View File

@ -105,6 +105,14 @@ export class ElementAppPage {
return this.page.locator(`${panelClass} .mx_MessageComposer`); return this.page.locator(`${panelClass} .mx_MessageComposer`);
} }
/**
* Get the composer input field
* @param isRightPanel whether to select the right panel composer, otherwise the main timeline composer
*/
public getComposerField(isRightPanel?: boolean): Locator {
return this.getComposer(isRightPanel).locator("[contenteditable]");
}
/** /**
* Open the message composer kebab menu * Open the message composer kebab menu
* @param isRightPanel whether to select the right panel composer, otherwise the main timeline composer * @param isRightPanel whether to select the right panel composer, otherwise the main timeline composer
@ -155,4 +163,10 @@ export class ElementAppPage {
await spotlight.open(); await spotlight.open();
return spotlight; return spotlight;
} }
public async scrollToBottom(page: Page): Promise<void> {
await page
.locator(".mx_ScrollPanel")
.evaluate((scrollPanel) => scrollPanel.scrollTo(0, scrollPanel.scrollHeight));
}
} }

View File

@ -28,6 +28,8 @@ import type {
IRoomDirectoryOptions, IRoomDirectoryOptions,
KnockRoomOpts, KnockRoomOpts,
Visibility, Visibility,
UploadOpts,
Upload,
} from "matrix-js-sdk/src/matrix"; } from "matrix-js-sdk/src/matrix";
import { Credentials } from "../plugins/homeserver"; import { Credentials } from "../plugins/homeserver";
@ -293,6 +295,46 @@ export class Client {
}, options); }, options);
} }
/**
* @param {string} name
* @param {module:client.callback} callback Optional.
* @return {Promise} Resolves: {} an empty object.
* @return {module:http-api.MatrixError} Rejects: with an error response.
*/
public async setDisplayName(name: string): Promise<{}> {
const client = await this.prepareClient();
return client.evaluate(async (cli: MatrixClient, name) => cli.setDisplayName(name), name);
}
/**
* @param {string} url
* @param {module:client.callback} callback Optional.
* @return {Promise} Resolves: {} an empty object.
* @return {module:http-api.MatrixError} Rejects: with an error response.
*/
public async setAvatarUrl(url: string): Promise<{}> {
const client = await this.prepareClient();
return client.evaluate(async (cli: MatrixClient, url) => cli.setAvatarUrl(url), url);
}
/**
* Upload a file to the media repository on the homeserver.
*
* @param {object} file The object to upload. On a browser, something that
* can be sent to XMLHttpRequest.send (typically a File). Under node.js,
* a Buffer, String or ReadStream.
*/
public async uploadContent(file: Buffer, opts?: UploadOpts): Promise<Awaited<Upload["promise"]>> {
const client = await this.prepareClient();
return client.evaluate(
async (cli: MatrixClient, { file, opts }) => cli.uploadContent(new Uint8Array(file), opts),
{
file: [...file],
opts,
},
);
}
/** /**
* Boostraps cross-signing. * Boostraps cross-signing.
*/ */

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB