Files
playwright-tests-ssas/page-objects/RecoverPage.ts
2025-06-16 13:32:08 +03:00

84 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { type Page, type Locator } from '@playwright/test';
export class RecoverPage {
readonly page: Page;
// Этап 1: Ввод email
readonly emailInput: Locator;
readonly continueButton: Locator;
readonly continueButton2: Locator;
// Этап 2: Ввод кода
readonly codeInputs: Locator;
readonly resendButton: Locator;
// Этап 3: Ввод нового пароля
readonly newPasswordInput: Locator;
readonly repeatPasswordInput: Locator;
readonly submitPasswordButton: Locator;
// --- Ошибки ---
readonly emailFormatError: Locator;
readonly codeError: Locator;
readonly passwordError: Locator;
readonly passwordRepeatError: Locator;
readonly mismatchPasswordError: Locator;
constructor(page: Page) {
this.page = page;
// Этап 1
this.emailInput = page.getByPlaceholder('Email');
this.continueButton = page.getByRole('button', { name: 'Далее' });
// Этап 2
this.codeInputs = page.locator('input[type="text"]'); // предполагаем, 6 полей или одно поле с 6 символами
this.resendButton = page.getByRole('button', { name: 'Отправить код повторно' });
// Этап 3
this.newPasswordInput = page.getByPlaceholder('Придумайте пароль');
this.repeatPasswordInput = page.getByPlaceholder('Повторите пароль');
this.submitPasswordButton = page.getByRole('button', { name: 'Продолжить' });
this.continueButton2 = page.getByRole('button', { name: 'Продолжить' });
// Ошибки
this.emailFormatError = page.getByText('Некорректный email*', { exact: true });
this.codeError = page.getByText('Ошибка подтверждения', { exact: true });
this.passwordError = page.getByText('Некорректный пароль', { exact: true });
this.passwordRepeatError = page.getByText('Поле обязательно для заполнения', { exact: true });
this.mismatchPasswordError = page.getByText('Пароли не совпадают', { exact: true });
}
async goto() {
await this.page.goto('/recoverpassword');
}
async enterEmail(email: string) {
await this.emailInput.fill(email);
await this.continueButton.click();
}
async enterVerificationCode(code: string) {
// Если это один input — просто заполни его
if (await this.codeInputs.count() === 1) {
await this.codeInputs.first().fill(code);
} else {
// Если 6 отдельных инпутов, разделяем
for (let i = 0; i < code.length; i++) {
await this.codeInputs.nth(i).fill(code[i]);
}
}
await this.continueButton2.click();
}
async resendCode() {
await this.resendButton.click();
}
async enterNewPassword(password: string, repeat: string) {
await this.newPasswordInput.fill(password);
await this.repeatPasswordInput.fill(repeat);
await this.submitPasswordButton.click();
}
}