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;
|
|||
|
});
|
|||
|
});
|
|||
|
});
|
|||
|
});
|
|||
|
});
|