Files
playwright-tests-ssas/allure-report/data/attachments/f267138497001754.md

147 lines
6.6 KiB
Markdown
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.
# Test info
- Name: Позитивные сценарии регистрации >> Успешная регистрация нового пользователя
- Location: /Users/vladsmykov/Desktop/Work/AUTOTESTS/CCPC_playwright/tests/ui/registration/register.spec.ts:6:7
# Error details
```
Error: locator.fill: Target page, context or browser has been closed
Call log:
- waiting for getByPlaceholder('Учёное звание*')
- locator resolved to <input readonly value="" type="text" class=" false " name="academicTitle" autocomplete="new-password" placeholder="Учёное звание*"/>
- fill("Доцент")
- attempting fill action
2 × waiting for element to be visible, enabled and editable
- element is not editable
- retrying fill action
- waiting 20ms
2 × waiting for element to be visible, enabled and editable
- element is not editable
- retrying fill action
- waiting 100ms
128 × waiting for element to be visible, enabled and editable
- element is not editable
- retrying fill action
- waiting 500ms
at RegisterPage.register (/Users/vladsmykov/Desktop/Work/AUTOTESTS/CCPC_playwright/page-objects/RegisterPage.ts:100:35)
at /Users/vladsmykov/Desktop/Work/AUTOTESTS/CCPC_playwright/tests/ui/registration/register.spec.ts:15:5
```
# Test source
```ts
1 | import { Page, Locator } from '@playwright/test';
2 |
3 | export class RegisterPage {
4 | readonly page: Page;
5 |
6 | // Поля ввода
7 | readonly nameInput: Locator;
8 | readonly surnameInput: Locator;
9 | readonly patronymicInput: Locator;
10 | readonly academicTitleInput: Locator;
11 | readonly degreeInput: Locator;
12 | readonly positionInput: Locator;
13 | readonly organizationInput: Locator;
14 | readonly emailInput: Locator;
15 | readonly phoneInput: Locator;
16 | readonly passwordInput: Locator;
17 | readonly confirmPasswordInput: Locator;
18 |
19 | // Глазики
20 | readonly passwordToggle: Locator;
21 | readonly confirmPasswordToggle: Locator;
22 |
23 | // Кнопка регистрации
24 | readonly submitButton: Locator;
25 |
26 | // Ссылка "Авторизируйтесь"
27 | readonly loginLink: Locator;
28 |
29 | // Ошибки валидации
30 | readonly requiredFieldErrors: Locator;
31 | readonly nameError: Locator;
32 | readonly surnameError: Locator;
33 | readonly positionError: Locator;
34 | readonly emailFormatError: Locator;
35 | readonly passwordLengthError: Locator;
36 | readonly confirmPasswordRequiredError: Locator;
37 |
38 | // Модалки
39 | readonly duplicateUserModal: Locator;
40 | readonly invalidOrgModal: Locator;
41 |
42 | constructor(page: Page) {
43 | this.page = page;
44 |
45 | // Инпуты
46 | this.nameInput = page.getByPlaceholder('Имя*');
47 | this.surnameInput = page.getByPlaceholder('Фамилия*');
48 | this.patronymicInput = page.getByPlaceholder('Отчество');
49 | this.academicTitleInput = page.getByPlaceholder('Учёное звание*');
50 | this.degreeInput = page.getByPlaceholder('Учёная степень*');
51 | this.positionInput = page.getByPlaceholder('Должность');
52 | this.organizationInput = page.getByPlaceholder('Организация*');
53 | this.emailInput = page.getByPlaceholder('Email (логин)*');
54 | this.phoneInput = page.getByPlaceholder('Номер телефона*');
55 | this.passwordInput = page.getByPlaceholder('Придумайте пароль*');
56 | this.confirmPasswordInput = page.getByPlaceholder('Повторите пароль*');
57 |
58 | // Глазики
59 | this.passwordToggle = page.locator('input[name="password"] + img');
60 | this.confirmPasswordToggle = page.locator('input[name="confirmPassword"] + img');
61 |
62 | // Кнопки
63 | this.submitButton = page.getByRole('button', { name: 'Зарегистрироваться' });
64 | this.loginLink = page.getByText('Авторизируйтесь');
65 |
66 | // Ошибки
67 | this.requiredFieldErrors = page.locator('div[name="error"]', { hasText: 'Поле обязательно для заполнения' });
68 | this.nameError = page.getByText('Некорректное имя');
69 | this.surnameError = page.getByText('Некорректная фамилия');
70 | this.positionError = page.getByText('Не более 200 символов!');
71 | this.emailFormatError = page.getByText('Некорректный Email');
72 | this.passwordLengthError = page.getByText('Не менее 8 символов');
73 | this.confirmPasswordRequiredError = page.getByText('Поле обязательно для заполнения');
74 |
75 | // Модальные окна
76 | this.duplicateUserModal = page.getByText('Пользователь с таким email или телефоном уже зарегистрирован!');
77 | this.invalidOrgModal = page.getByText('Некорректное название организации!');
78 | }
79 |
80 | async goto() {
81 | await this.page.goto('/login/registration');
82 | }
83 |
84 | async register(data: {
85 | name: string,
86 | surname: string,
87 | patronymic?: string,
88 | academicTitle: string,
89 | degree: string,
90 | position?: string,
91 | organization: string,
92 | email: string,
93 | phone: string,
94 | password: string,
95 | confirmPassword: string
96 | }) {
97 | await this.nameInput.fill(data.name);
98 | await this.surnameInput.fill(data.surname);
99 | if (data.patronymic) await this.patronymicInput.fill(data.patronymic);
> 100 | await this.academicTitleInput.fill(data.academicTitle);
| ^ Error: locator.fill: Target page, context or browser has been closed
101 | await this.degreeInput.fill(data.degree);
102 | if (data.position) await this.positionInput.fill(data.position);
103 | await this.organizationInput.fill(data.organization);
104 | await this.emailInput.fill(data.email);
105 | await this.phoneInput.fill(data.phone);
106 | await this.passwordInput.fill(data.password);
107 | await this.confirmPasswordInput.fill(data.confirmPassword);
108 | await this.submitButton.click();
109 | }
110 | }
111 |
```