Files
HKSingleParty/99_references/cf-identity-wallet-main/tests/screen-objects/passcode.screen.ts
2025-05-28 09:55:51 +08:00

68 lines
1.9 KiB
TypeScript

import { expect } from "expect-webdriverio";
import { generateRandomNumbersArray } from "../helpers/generate.js";
import { log } from "../helpers/logger.js";
import { Passcode } from "../constants/text.constants.js";
export class PasscodeScreen {
get forgotYourPasscodeButton() {
return $("[data-testid=\"secondary-button-set-passcode\"]");
}
get id() {
return "[data-testid=\"set-passcode-page\"]";
}
get screenTitle() {
return $("[data-testid=\"set-passcode-title\"]");
}
get screenDescriptionText() {
return $("[data-testid=\"set-passcode-description\"]");
}
async digitButton(digit: number, parentElement = "") {
return $(
`${parentElement} [data-testid="passcode-button-${digit}"]`.trimStart()
);
}
async loads() {
await expect(this.screenTitle).toBeDisplayed();
await expect(this.screenTitle).toHaveText(Passcode.Title);
await expect(this.screenDescriptionText).toBeDisplayed();
await expect(this.screenDescriptionText).toHaveText(Passcode.Description);
for (let i = 0; i < 10; i++) {
await expect(this.digitButton(i)).toBeDisplayed();
}
}
async loadsReEnterScreen() {
await expect(this.screenTitle).toBeDisplayed();
await expect(this.screenTitle).toHaveText(Passcode.TitleReEnter);
}
async enterPasscode(passcode: number[], parentElement = "") {
const digitButtonMap: {
[key: number]: () => Promise<void>;
} = {};
for (let i = 0; i < 10; i++) {
digitButtonMap[i] = async () => {
await (await this.digitButton(i, parentElement)).click();
};
}
//clicking digits on the screen
for (const digit of passcode) {
await digitButtonMap[digit]();
}
}
async createAndEnterRandomPasscode() {
const randomPasscode = generateRandomNumbersArray();
log.info(`randomPasscode: ${randomPasscode}`);
await this.enterPasscode(randomPasscode);
return randomPasscode;
}
}
export default new PasscodeScreen();