66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
// page-objects/ProfileApplicantPage.ts
|
|
|
|
import { Page } from '@playwright/test';
|
|
|
|
export class ProfileApplicantPage {
|
|
readonly page: Page;
|
|
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
}
|
|
|
|
async goto() {
|
|
await this.page.goto('/account/profile');
|
|
}
|
|
|
|
async openBasicInfoEditor() {
|
|
await this.page.getByTestId('btn-pensil').nth(0).click();
|
|
}
|
|
|
|
async uploadAvatar(filePath: string) {
|
|
const [fileChooser] = await Promise.all([
|
|
this.page.waitForEvent('filechooser'),
|
|
this.page.getByTestId('ModalUserInfo').getByTestId('btn-pensil').first().click(),
|
|
]);
|
|
await fileChooser.setFiles(filePath);
|
|
}
|
|
|
|
async fillCity(city: string) {
|
|
await this.page.fill('input[name="city"]', city);
|
|
}
|
|
|
|
async saveBasicInfo() {
|
|
await this.page.getByTestId('btn-save').click();
|
|
}
|
|
|
|
async openRepresentativeEditor() {
|
|
await this.page.getByTestId('btn-pensil').nth(1).click();
|
|
}
|
|
|
|
async fillRepresentative(from: string, fullName: string, phone: string) {
|
|
await this.page.fill('input[name="parents.0.from"]', from);
|
|
await this.page.fill('input[name="parents.0.fio"]', fullName);
|
|
await this.page.fill('input[name="parents.0.phone"]', phone);
|
|
}
|
|
|
|
async saveRepresentative() {
|
|
await this.page.locator('button:has-text("Сохранить")').click();
|
|
}
|
|
|
|
async openDisabilityEditor() {
|
|
await this.page.getByTestId('btn-pensil').nth(2).click();
|
|
}
|
|
|
|
async selectDisability(disability: string) {
|
|
await this.page.getByText(disability).click();
|
|
}
|
|
|
|
async selectDisabilityGroup(group: string) {
|
|
await this.page.getByText(group).first().click();
|
|
}
|
|
|
|
async saveDisabilityInfo() {
|
|
await this.page.locator('button:has-text("Сохранить")').click();
|
|
}
|
|
}
|