2025-06-16 05:24:10 +00:00
|
|
|
|
/// <reference types="cypress" />
|
|
|
|
|
|
|
|
|
|
describe('Personalization Flow', () => {
|
|
|
|
|
beforeEach(() => {
|
|
|
|
|
// Логинимся перед каждым тестом
|
2025-06-17 21:23:50 +00:00
|
|
|
|
cy.login();
|
2025-06-16 05:24:10 +00:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should complete personalization flow and open link in new tab', () => {
|
2025-06-17 21:23:50 +00:00
|
|
|
|
// Ищем нужный квиз и нажимаем редактировать
|
|
|
|
|
cy.contains('Сочетание перестановки и размещения')
|
|
|
|
|
.parent()
|
|
|
|
|
.parent()
|
|
|
|
|
.contains('Редактировать')
|
|
|
|
|
.click();
|
2025-06-16 05:24:10 +00:00
|
|
|
|
|
2025-06-17 21:23:50 +00:00
|
|
|
|
// Переходим на вкладку персонализации
|
|
|
|
|
cy.contains('Персонализация').click();
|
|
|
|
|
|
|
|
|
|
// Ждем загрузки данных
|
|
|
|
|
cy.get('.MuiSkeleton-root', { timeout: 30000 }).should('not.exist');
|
|
|
|
|
cy.wait(6000);
|
|
|
|
|
|
|
|
|
|
// Удаляем все существующие ссылки
|
|
|
|
|
cy.get('body').then(($body) => {
|
|
|
|
|
if ($body.find('.delete_aud').length > 0) {
|
|
|
|
|
// Пока есть кнопки удаления - удаляем ссылки
|
|
|
|
|
const deleteLinks = () => {
|
|
|
|
|
// Находим первую кнопку удаления и кликаем по ней
|
|
|
|
|
cy.get('.delete_aud').first().click();
|
|
|
|
|
// Подтверждаем удаление
|
|
|
|
|
cy.get('#delete_OK').click();
|
|
|
|
|
// Проверяем, остались ли еще кнопки удаления
|
|
|
|
|
cy.get('body').then(($body) => {
|
|
|
|
|
if ($body.find('.delete_aud').length > 0) {
|
|
|
|
|
deleteLinks();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
deleteLinks();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Выбираем пол (М)
|
|
|
|
|
cy.contains('М').click();
|
2025-06-16 05:24:10 +00:00
|
|
|
|
|
|
|
|
|
// Генерируем случайный возраст от 1 до 99
|
|
|
|
|
const randomAge = Math.floor(Math.random() * 99) + 1;
|
|
|
|
|
|
|
|
|
|
// Вводим возраст
|
2025-06-17 21:23:50 +00:00
|
|
|
|
cy.get('input[placeholder="Введите возраст"]')
|
2025-06-16 05:24:10 +00:00
|
|
|
|
.type(randomAge.toString())
|
|
|
|
|
.should('have.value', randomAge.toString());
|
|
|
|
|
|
2025-06-17 21:23:50 +00:00
|
|
|
|
// Нажимаем кнопку Ок
|
|
|
|
|
cy.contains('Ок').click();
|
2025-06-16 05:24:10 +00:00
|
|
|
|
|
2025-06-17 21:23:50 +00:00
|
|
|
|
// Ждем появления ссылки и получаем её текст
|
|
|
|
|
cy.get('.link', { timeout: 30000 })
|
|
|
|
|
.should('be.visible')
|
|
|
|
|
.invoke('text')
|
|
|
|
|
.then((text) => {
|
|
|
|
|
// Исправляем домен в ссылке
|
|
|
|
|
const url = new URL(text);
|
|
|
|
|
url.hostname = 's.hbpn.link';
|
|
|
|
|
const correctUrl = url.toString();
|
|
|
|
|
|
|
|
|
|
// Переходим на страницу по исправленной ссылке
|
|
|
|
|
cy.visit(correctUrl);
|
|
|
|
|
|
|
|
|
|
// Проверяем содержимое страницы
|
|
|
|
|
cy.contains('Сочетание перестановки и размещения').should('exist');
|
2025-06-16 05:24:10 +00:00
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|