Добавил позитивные сценарии для UI, API регистрации организации

This commit is contained in:
Vlad Smykov
2026-01-28 16:39:23 +03:00
parent 94d7a97fe4
commit 018edfebbf
6 changed files with 259 additions and 11 deletions

View File

@@ -0,0 +1,81 @@
import { test, expect } from '@playwright/test';
import axios from 'axios';
import {
createTempEmail,
waitForConfirmationCode
} from '../../../utils/mailTmApi';
import {
generateFirstName,
generateLastName,
generateMiddleName,
generateLogin,
generatePhone,
generateKPP,
generateINN,
generateShortOrgName,
generateFullOrgName
} from '../../../utils/userGenerator';
const BASE_URL = 'https://rumc.dev.rdcenter.ru/api';
test('API: регистрация организации + подтверждение почты', async () => {
const { email, token: mailToken } = await createTempEmail();
const surname = generateLastName();
const name = generateFirstName();
const patronymic = generateMiddleName();
const representativeName = `${surname} ${name} ${patronymic}`;
const login = generateLogin();
const phone = '+7 (900) 000-00-00';
const password = '!Test123456';
const shortName = generateShortOrgName();
const fullName = generateFullOrgName();
const kpp = generateKPP();
const inn = generateINN();
const registerPayload = {
shortName,
fullName,
description: "Абсолютно неуникальное тестовое описание",
website: "https://test-org.ru",
address: "г. Таганрог, ул. Тестовая, д. 1",
inn,
kpp,
representativeName,
position: "Генеральный директор",
phone,
basis: "федерального закона",
email,
password,
login,
socialLinks: {
tg: "https://t.me/test_user",
vk: "https://vk.com/test_user"
}};
try {
const registerRes = await axios.post(`${BASE_URL}/auth/register/organization`, registerPayload);
expect(registerRes.status).toBe(200);
const userId = registerRes.data.userId;
console.log('🆔 ID зарегистрированного пользователя:', userId);
} catch (error: any) {
console.error('❌ Ошибка регистрации:', error.response?.data || error.message);
throw error;
}
console.log('📬 Ожидание письма с кодом подтверждения...');
const code = await waitForConfirmationCode(mailToken, 60000);
console.log('✅ Код получен:', code);
const confirmPayload = {
email,
code
};
const confirmRes = await axios.post(`${BASE_URL}/auth/confirm`, confirmPayload);
expect(confirmRes.status).toBe(200);
console.log('🎉 Почта подтверждена успешно');
});

View File

@@ -22,7 +22,7 @@ test('Полная регистрация выпускника с подтвер
const registerPage = new RegisterPage(page);
await registerPage.goto();
await registerPage.selectGraduateRole();
await registerPage.selectRole('Выпускник');
// Заполняем 1 этап регистрации
await registerPage.fillLastName(lastName);
@@ -42,7 +42,7 @@ test('Полная регистрация выпускника с подтвер
await registerPage.selectProgram();
await registerPage.selectEducationForm();
await registerPage.checkConsentCheckbox();
await registerPage.submitGraduate();
await registerPage.submitGeneral();
await page.waitForTimeout(5000);
await expect(page).toHaveURL(/confirmation-code/);

View File

@@ -0,0 +1,90 @@
// Позитивный тест регистрации организации
// Включает в себя:
// Ввод валидных тестовых данных
// Получение кода в письме
// Ввод кода из письма (is_confirm)
// Переход на главную (через модальное окно)
import { test, expect } from '@playwright/test';
import { RegisterPage } from '../../../page-objects/RegisterPage';
import {
generateFirstName,
generateLastName,
generateMiddleName,
generateLogin,
generatePhone,
generateKPP,
generateINN,
generateShortOrgName,
generateFullOrgName
} from '../../../utils/userGenerator';
import {
createTempEmail,
waitForConfirmationCode
} from '../../../utils/mailTmApi';
test('Полная регистрация организации с подтверждением почты', async ({ page }) => {
const registerPage = new RegisterPage(page);
const { email, token } = await createTempEmail();
const surname = generateLastName();
const name = generateFirstName();
const patronymic = generateMiddleName();
const directorFIO = `${surname} ${name} ${patronymic}`;
const login = generateLogin();
const phone = generatePhone();
const password = '!Test123456';
const shortName = generateShortOrgName();
const fullName = generateFullOrgName();
const address = 'г. Таганрог, ул. Тестовая, д. 1';
const kpp = generateKPP();
const inn = generateINN();
const site = 'https://test-org.ru';
const description = 'Абсолютно неуникальное тестовое описание';
const position = 'Генеральный директор';
const basis = 'закона';
const tg = 'https://t.me/test_user';
const vk = 'https://vk.com/test_user';
await registerPage.goto();
await registerPage.selectRole('Организация');
//Первый этап регистраци
await registerPage.fillLogin(login);
await registerPage.fillEmail(email);
await registerPage.fillPassword(password);
await registerPage.fillPasswordRepeat(password);
await registerPage.clickNextButton();
//Второй этап регистрации
await registerPage.fillShortName(shortName);
await registerPage.fillFullName(fullName);
await registerPage.fillAddress(address);
await registerPage.fillKPP(kpp);
await registerPage.fillINN(inn);
await registerPage.fillSite(site);
await registerPage.fillPhone(phone);
await registerPage.fillDescription(description);
await registerPage.clickNextButtonOrg();
//Третий этап регистрации
await registerPage.fillDirectorFIO(directorFIO);
await registerPage.fillPosition(position);
await registerPage.fillBasis(basis);
await registerPage.fillTelegram(tg);
await registerPage.fillVK(vk);
await registerPage.checkConsentCheckbox();
await registerPage.submitGeneral();
await expect(page).toHaveURL(/confirmation-code/);
const code = await waitForConfirmationCode(token, 60000);
await page.fill('input[name="code"]', code);
await page.click('button.RecoverPassword_button__5QDxM');
await registerPage.expectSuccessModal();
await expect(page).toHaveURL('https://rumc.dev.rdcenter.ru');
});