From 5ad3a810ef8bcfdf9ee8b45e1d0266228805f608 Mon Sep 17 00:00:00 2001 From: Nastya Date: Mon, 16 Jun 2025 08:24:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/e2e/personalization.cy.ts | 54 +++++++++++++++++++ jest.config.js | 15 ++++++ .../PersonalizationAI/PersonalizationAI.tsx | 17 ++++-- src/ui_kit/Toolbars/TooltipClickInfo.tsx | 12 +++-- 4 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 cypress/e2e/personalization.cy.ts create mode 100644 jest.config.js diff --git a/cypress/e2e/personalization.cy.ts b/cypress/e2e/personalization.cy.ts new file mode 100644 index 00000000..cd4c13a8 --- /dev/null +++ b/cypress/e2e/personalization.cy.ts @@ -0,0 +1,54 @@ +/// + +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; + }); + }); + }); + }); +}); diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..b51269e5 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,15 @@ +module.exports = { + transformIgnorePatterns: [ + '/node_modules/(?!(@frontend/kitui|@frontend/squzanswerer)/)' + ], + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + '^@utils/(.*)$': '/src/utils/$1', + '^@assets/(.*)$': '/src/assets/$1' + }, + setupFilesAfterEnv: ['/src/setupTests.ts'], + testEnvironment: 'jsdom', + transform: { + '^.+\\.(ts|tsx)$': 'ts-jest' + } +}; \ No newline at end of file diff --git a/src/pages/PersonalizationAI/PersonalizationAI.tsx b/src/pages/PersonalizationAI/PersonalizationAI.tsx index 8a5b4dd1..065d7b4c 100644 --- a/src/pages/PersonalizationAI/PersonalizationAI.tsx +++ b/src/pages/PersonalizationAI/PersonalizationAI.tsx @@ -20,6 +20,7 @@ import { makeRequest } from "@api/makeRequest"; import { setUserAccount, setCustomerAccount } from "@/stores/user"; import { quizApi } from "@api/quiz"; import { setQuizes } from "@root/quizes/actions"; +import TooltipClickInfo from "@/ui_kit/Toolbars/TooltipClickInfo"; const tariff = "6844b8858258f5cc35791ef7"; export default function PersonalizationAI() { @@ -287,8 +288,13 @@ export default function PersonalizationAI() { wordSpacing: "0.1px", lineHeight: "21.4px" }}> - Данный раздел позволяет вам создавать персонализированный опрос под каждую целевую аудиторию отдельно, наш AI перефразирует ваши вопросы согласно настройкам. Для этого нужно выбрать пол и возраст вашей аудитории и получите персональную ссылку с нужными настройками в списке ниже. Так же вы можете обогатить свою ссылку UTM метками - {/* Первый белый блок */} +Данный раздел позволяет вам создавать персонализированный опрос под каждую целевую аудиторию отдельно, наш AI перефразирует ваши вопросы согласно настройкам. +Для этого нужно выбрать пол и возраст вашей аудитории и получите персональную ссылку с нужными настройками в списке ниже. + +Так же вы можете обогатить свою ссылку UTM метками в поле "вставьте свою ссылку"и этим метки применятся ко всем вашим ссылкам. + +ВАЖНО: если ваши вопросы уже подходят целевой аудитории, то персонализированы они скорее всего не будут. {/* Первый белый блок */} + Ссылка - + + {/* + + Данное поле создано для обогащения utm метками вашей ссылки. Нужно скопировать ссылку вашего квиза, задать настройки ца, вставить ссылку в поле, прописать метки(советуем использовать динамические), и нажать "ок" выше поля. Метки будут применены ко всем ссылкам с персонализацией в рамках данного квиза. + + */}