Migrate most of editing.spec.ts from Cypress to Playwright (#11947)
* Migrate location.spec.ts from Cypress to Playwright Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Migrate location.spec.ts from Cypress to Playwright Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add screenshot Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Deflake Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
372737d075
commit
83f0650ed4
6 changed files with 361 additions and 255 deletions
|
@ -15,11 +15,42 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { type Locator, type Page } from "@playwright/test";
|
||||
import { type ICreateRoomOpts } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import type { IContent, ICreateRoomOpts, ISendEventResponse } from "matrix-js-sdk/src/matrix";
|
||||
import type { SettingLevel } from "../../src/settings/SettingLevel";
|
||||
|
||||
export class ElementAppPage {
|
||||
public constructor(private readonly page: Page) {}
|
||||
|
||||
/**
|
||||
* Sets the value for a setting. The room ID is optional if the
|
||||
* setting is not being set for a particular room, otherwise it
|
||||
* should be supplied. The value may be null to indicate that the
|
||||
* level should no longer have an override.
|
||||
* @param {string} settingName The name of the setting to change.
|
||||
* @param {String} roomId The room ID to change the value in, may be
|
||||
* null.
|
||||
* @param {SettingLevel} level The level to change the value at.
|
||||
* @param {*} value The new value of the setting, may be null.
|
||||
* @return {Promise} Resolves when the setting has been changed.
|
||||
*/
|
||||
public async setSettingValue(settingName: string, roomId: string, level: SettingLevel, value: any): Promise<void> {
|
||||
return this.page.evaluate<
|
||||
Promise<void>,
|
||||
{
|
||||
settingName: string;
|
||||
roomId: string | null;
|
||||
level: SettingLevel;
|
||||
value: any;
|
||||
}
|
||||
>(
|
||||
({ settingName, roomId, level, value }) => {
|
||||
return window.mxSettingsStore.setValue(settingName, roomId, level, value);
|
||||
},
|
||||
{ settingName, roomId, level, value },
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the top left user menu, returning a Locator to the resulting context menu.
|
||||
*/
|
||||
|
@ -100,4 +131,32 @@ export class ElementAppPage {
|
|||
await composer.getByRole("button", { name: "More options", exact: true }).click();
|
||||
return this.page.getByRole("menu");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} roomId
|
||||
* @param {string} threadId
|
||||
* @param {string} eventType
|
||||
* @param {Object} content
|
||||
*/
|
||||
public async sendEvent(
|
||||
roomId: string,
|
||||
threadId: string | null,
|
||||
eventType: string,
|
||||
content: IContent,
|
||||
): Promise<ISendEventResponse> {
|
||||
return this.page.evaluate<
|
||||
Promise<ISendEventResponse>,
|
||||
{
|
||||
roomId: string;
|
||||
threadId: string | null;
|
||||
eventType: string;
|
||||
content: IContent;
|
||||
}
|
||||
>(
|
||||
async ({ roomId, threadId, eventType, content }) => {
|
||||
return window.mxMatrixClientPeg.get().sendEvent(roomId, threadId, eventType, content);
|
||||
},
|
||||
{ roomId, threadId, eventType, content },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue