Files
HKSingleParty/99_references/cf-identity-wallet-main/tests/helpers/seed-phrase.ts
2025-05-28 09:55:51 +08:00

58 lines
1.7 KiB
TypeScript

import { log } from "./logger.js";
import { delay } from "../screen-objects/base.screen.js";
export function seedPhrase() {
const phrase: string[] = [];
const seedPhraseWordText = async (wordNumber: number) => {
return $(`[data-testid="word-index-${wordNumber.toString()}"]`);
};
const save = async (phraseLength= 18) => {
for (let i = 1; i <= phraseLength; i++) {
const wordValue = await (await seedPhraseWordText(i)).getText();
log.info(`Word number ${i}: ${wordValue}`);
phrase.push(wordValue);
}
return phrase;
};
const emptyWordLocator = async (index: number) => {
return $(`[data-testid=empty-word-${index + 1}]`);
};
const getWordValue = async (index: number) => {
const wordValueLocator = await $(
`[data-testid="matching-seed-phrase-container"] [data-testid="word-index-${
index + 1
}"]`
);
await wordValueLocator.waitForClickable();
return await wordValueLocator.getText();
};
const select = async (seedPhrase: string[]) => {
await delay(100);
for (let i = 0; i < seedPhrase.length; i++) {
let wordValue: string;
const locator = await $(
"[data-testid=\"original-seed-phrase-container\"]"
).$(`span=${seedPhrase[i]}`);
await expect(locator).toBeDisplayed();
await expect(await emptyWordLocator(i)).toBeDisplayed();
do {
await locator.waitForClickable({ timeout: 3000 });
await locator.click();
wordValue = await getWordValue(i);
} while (wordValue !== seedPhrase[i]);
await (await emptyWordLocator(i)).waitForDisplayed({ reverse: true });
}
};
return {
save,
select,
};
}