One-Time Password (OTP) package added with comprehensive token management, including OTP verification for team account deletion and ownership transfer.
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
import { Page, expect } from '@playwright/test';
|
|
|
|
import { Mailbox } from './mailbox';
|
|
|
|
export class OtpPo {
|
|
private readonly page: Page;
|
|
private readonly mailbox: Mailbox;
|
|
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.mailbox = new Mailbox(page);
|
|
}
|
|
|
|
/**
|
|
* Completes the OTP verification process
|
|
* @param email The email address to send the OTP to
|
|
*/
|
|
async completeOtpVerification(email: string) {
|
|
// Click the "Send Verification Code" button
|
|
await this.page.click('[data-test="otp-send-verification-button"]');
|
|
|
|
// wait for the OTP to be sent
|
|
await this.page.waitForTimeout(500);
|
|
|
|
await expect(async () => {
|
|
// Get the OTP code from the email
|
|
const otpCode = await this.getOtpCodeFromEmail(email);
|
|
|
|
expect(otpCode).not.toBeNull();
|
|
|
|
// Enter the OTP code
|
|
await this.enterOtpCode(otpCode);
|
|
}).toPass();
|
|
|
|
// Click the "Verify Code" button
|
|
await this.page.click('[data-test="otp-verify-button"]');
|
|
}
|
|
|
|
/**
|
|
* Retrieves the OTP code from an email
|
|
* @param email The email address to check for the OTP
|
|
* @returns The OTP code
|
|
*/
|
|
async getOtpCodeFromEmail(email: string) {
|
|
// Get the OTP from the email
|
|
const otpCode = await this.mailbox.getOtpFromEmail(email);
|
|
|
|
if (!otpCode) {
|
|
throw new Error('Failed to retrieve OTP code from email');
|
|
}
|
|
|
|
return otpCode;
|
|
}
|
|
|
|
/**
|
|
* Enters the OTP code into the input fields
|
|
* @param otpCode The 6-digit OTP code
|
|
*/
|
|
async enterOtpCode(otpCode: string) {
|
|
console.log(`Entering OTP code: ${otpCode}`);
|
|
await this.page.fill('[data-input-otp]', otpCode);
|
|
}
|
|
}
|