describe("Форма Создания Тарифа", () => { beforeEach(() => { cy.visit("http://localhost:3000"); cy.get('input[name="email"]').type("valid_user@example.com"); cy.get('input[name="password"]').type("valid_password"); cy.get('button[type="submit"]').click(); cy.wait(3000); cy.url().should("include", "http://localhost:3000/users"); cy.visit("http://localhost:3000/tariffs"); }); it("должна отображать сообщение об ошибке при пустом названии тарифа", () => { cy.get('input[id="tariff-amount"]').type("10"); // Выбрать первую привилегию с нужным текстом из выпадающего списка cy.get("#privilege-select").click(); cy.get(`[data-cy = "select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.contains("Пустое название тарифа"); }); it("должна отображать сообщение об ошибке при отсутствии выбора привилегии", () => { cy.get('input[id="tariff-name"]').type("Тестовый Тариф"); cy.get('input[id="tariff-amount"]').type("10"); cy.get(".btn_createTariffBackend").click({ force: true }); cy.contains("Не выбрана привилегия"); }); it("Создание трех тарифов", () => { cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1"); cy.get('input[id="tariff-amount"]').type("10"); cy.get("#privilege-select").click(); cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.wait(5000); }); }); describe("Форма Создания Тарифа", () => { beforeEach(() => { cy.visit("http://localhost:3000"); cy.get('input[name="email"]').type("valid_user@example.com"); cy.get('input[name="password"]').type("valid_password"); cy.get('button[type="submit"]').click(); cy.wait(3000); cy.url().should("include", "http://localhost:3000/users"); cy.visit("http://localhost:3000/tariffs"); }); it("Удаление тарифа единично, одного за другим ", () => { const tariffNamesToFind = ["Тестовый Тариф 1", "Тестовый Тариф 2", "Тестовый Тариф 3"]; // Поиск каждого тарифа в DataGrid cy.wait(3000); tariffNamesToFind.forEach((tariffName) => { cy.get(".tariffs-data-grid").scrollIntoView().contains(tariffName).should("be.visible"); }); const deleteTariffs = () => { let tariffsFound = true; cy.get(".tariffs-data-grid .MuiDataGrid-row").then(($rows) => { const rowCount = $rows.length; if (rowCount === 1) { cy.log("Тарифы не найдены. Тест завершен."); tariffsFound = false; } cy.wrap($rows).each(($row) => { // Шаг 2: В каждом элементе найдите все дивы вложенные внутрь и выберите последний див cy.wrap($row).find("div").last().scrollIntoView().get(".delete-tariff-button").last().click({ force: true }); }); cy.wait(2000); cy.contains("Да") .click() .then(() => { if (!tariffsFound) { return; } cy.wait(5000); deleteTariffs(); }); }); }; deleteTariffs(); // Проверяем что Дата грид тарифов пустой cy.wait(2000); cy.get(".tariffs-data-grid .MuiDataGrid-row").should("not.exist"); }); it("Удаление тарифов массово через DataGrid", () => { // Добавляем 3 тариффа cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1"); cy.get('input[id="tariff-amount"]').type("10"); cy.get("#privilege-select").click(); cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); // Добавляем 3 тариффа cy.wait(3000); cy.get(".tariffs-data-grid .PrivateSwitchBase-input").first().click({ multiple: true }); // Проверить, что кнопка "Удалить" появилась cy.wait(2000); cy.contains("Удаление").should("be.visible"); // Нажать на кнопку "Удалить" cy.contains("Удаление").click(); // Подтверждение удаления (если нужно) cy.contains("Да").click(); // Проверяем что Дата грид тарифов пустой cy.wait(2000); cy.get(".tariffs-data-grid .MuiDataGrid-row").should("not.exist"); }); it("Добавление тарифом в корзину", () => { // Добавляем 3 тариффа cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1"); cy.get('input[id="tariff-amount"]').type("10"); cy.get("#privilege-select").click(); cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 2"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("15"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Количество дней, в течении которых пользование сервисом безлимитно"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.get('input[id="tariff-name"]').scrollIntoView().clear({ force: true }).type("Тестовый Тариф 3"); cy.get('input[id="tariff-amount"]').scrollIntoView().clear({ force: true }).type("20"); cy.get("#privilege-select").click(); cy.wait(800); cy.get(`[data-cy="select-option-Обьём ПенаДиска для хранения шаблонов и результатов шаблонизации"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); // Добавляем 3 тариффа cy.wait(3000); cy.get(".tariffs-data-grid .PrivateSwitchBase-input").first().click({ multiple: true }); // Проверить, что кнопка "Удалить" появилась cy.wait(2000); cy.contains("рассчитать").should("be.visible"); // Нажать на кнопку "Удалить" cy.contains("рассчитать").click(); // смотрим что в корзине ровно столько тарифом, сколько мы добовляли cy.wait(5000); cy.get(".MuiTable-root tbody tr").its("length").should("eq", 3); }); }); describe("Определение поведения кастомной цены тарифа", () => { beforeEach(() => { cy.visit("http://localhost:3000"); cy.get('input[name="email"]').type("valid_user@example.com"); cy.get('input[name="password"]').type("valid_password"); cy.get('button[type="submit"]').click(); cy.wait(3000); cy.url().should("include", "http://localhost:3000/users"); cy.visit("http://localhost:3000/tariffs"); }); it("Смотрим чтобы при указание кастомной цены тарифа поля суммы и Цены за ед отображались верно", () => { cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1"); cy.get('input[id="tariff-amount"]').type("60"); cy.get('input[id="tariff-custom-price"]').type("5"); cy.get("#privilege-select").click(); cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.wait(3000); // Сумму cy.get(".tariffs-data-grid").get(`[data-field="total"]`).contains("300"); // Проверяем цену за ед cy.get(".tariffs-data-grid").get(`[data-field="pricePerUnit"]`).contains("5"); }); it("Проверка установки цены тарифа по умолчанию при отсутствии кастомной цены", () => { cy.get('input[id="tariff-name"]').type("Тестовый Тариф 1"); cy.get('input[id="tariff-amount"]').type("80"); cy.get("#privilege-select").click(); cy.get(`[data-cy="select-option-Количество шаблонов, которые может сделать пользователь сервиса"]`).click(); cy.get(".btn_createTariffBackend").click({ force: true }); cy.wait(3000); // Сумму cy.get(".tariffs-data-grid").get(`[data-field="total"]`).contains("0.8"); // Проверяем цену за ед cy.get(".tariffs-data-grid").get(`[data-field="pricePerUnit"]`).contains("0.01"); }); });