frontPanel/cypress/e2e/personalization.cy.ts

55 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-06-16 05:24:10 +00:00
/// <reference types="cypress" />
describe('Personalization Flow', () => {
beforeEach(() => {
// Логинимся перед каждым тестом
cy.login(); // Предполагается, что у вас есть команда для логина
});
it('should complete personalization flow and open link in new tab', () => {
// Переходим на страницу персонализации
cy.visit('/personalization');
// Выбираем пол (мужской)
cy.get('[data-testid="gender-male"]').click();
// Генерируем случайный возраст от 1 до 99
const randomAge = Math.floor(Math.random() * 99) + 1;
// Вводим возраст
cy.get('[data-testid="age-input"]')
.type(randomAge.toString())
.should('have.value', randomAge.toString());
// Нажимаем кнопку OK
cy.get('[data-testid="submit-button"]').click();
// Ждем появления скелетона загрузки
cy.get('[data-testid="loading-skeleton"]').should('be.visible');
// Ждем 3 минуты (в реальном тесте это будет быстрее из-за моков)
cy.wait(180000);
// Ждем появления кнопки копирования
cy.get('[data-testid="copy-button"]').should('be.visible');
// Копируем ссылку
cy.get('[data-testid="copy-button"]').click();
// Проверяем появление уведомления об успешном копировании
cy.contains('Ссылка успешно скопирована').should('be.visible');
// Получаем ссылку из буфера обмена
cy.window().then((win) => {
win.navigator.clipboard.readText().then((text) => {
// Открываем ссылку в новой вкладке
cy.window().then((win) => {
const newWindow = win.open(text, '_blank');
// Проверяем, что новая вкладка открылась
expect(newWindow).to.not.be.null;
});
});
});
});
});