55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
/// <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;
|
||
});
|
||
});
|
||
});
|
||
});
|
||
});
|