Cypress.io - сохранить значение с помощью JavaScript window.prompt

Я новичок в Cypress, и у меня есть проблема.

В приложении у меня есть кнопка "Сохранить". При нажатии на кнопку срабатывает JS window.prompt(). Внутри подсказки вы пишете имя сохранения (например, «Сохранить от Джона») и нажимаете «ОК» — внутри подсказки.

Мне нужно охватить эту пользовательскую историю тестом E2E в Cypress.io.

Проблема в том, что когда я нажимаю кнопку «Сохранить», кипарис зависает в событии Click(), когда отображается приглашение.

it('Make a new save with JS prompt', () => {
   cy.get('#save-changes-button')
   .should('be.visible')
   .click() //here the prompt is displayed, cypress stop and wait for click() event finish
})

Могу я попросить помощи? Я не нашел подходящего решения в документах Cypress.io или где-либо еще.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
2 730
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Хорошо, факт в том, что текущая версия Cypress.io не поддерживает взаимодействие с событиями window. Способ, как обмануть это метод cy.stub().

Это мое решение. Сценарий:

  1. Нажмите кнопку «Сохранить» в графическом интерфейсе.
  2. window.prompt() открыт.
  3. Напишите имя сохранения (например, «Сохранено Томасом») в подсказке.
  4. Нажмите «ОК» в подсказке и сохраните значение.

И код в Cypress:

    it('Save the value inside Prompt', () => {
            cy.window().then(win => {
                cy.stub(win, 'prompt').returns('The value you write inside prompt')
                cy.get('#save-changes-in-gui-button').click();
                //... Saved value assert
            })
    })

Cypress по умолчанию изменяет событие window.pompt() на заглушку и имитирует нажатие «ОК». Это решение работает для меня сейчас. Надеюсь, это может помочь кому-то еще :)

Сторона HTML:

<button id = "createDirectory" (click) = "createDirectory()">Create</button>

Функция createDirectory() запрашивает имя каталога

Сторона JAVASCRIPT:

createDirectory() {
  const x = prompt('Enter directory name');
  console.info(x);
}

Как добиться этого в кипарисе?

it('Creating new directory level 1', () => {
    cy.window().then(win => {
        /* In case of writing something in prompt, use stub and then click on button on which prompt opens */
        cy.stub(win, 'prompt').returns('level1');
        cy.get('button#createDirectory').click();
    });
});
  • Строка 1-й уровень:, которую мы напишем в поле подсказки

Другие вопросы по теме