Как с помощью Jest или Puppeteer нажать на "ОК" на alert-е?

233
11 ноября 2021, 00:10

Дело в том, что мой тест Passed, если я вручную нажимаю на "ОК" в алерте. А если не нажимаю - он ждет до последнего, а потом Failed, и ругается на Timeout. Вопрос, как мне нажать на "ОК" скриптом?

Ещё один вопрос - а почему alert не заменяется на mock функцию? Я же заменяю его в третьей строке. В чём проблема?

Вот мой тест:

  it('should display an alert when the user tries to add empty value', async() => {
    jest.setTimeout(50000);
    const dialogHandler = jest.fn();
    page.on('dialog', dialogHandler);
    const addButtonSelector = '#root > div > div > div.ToDoInput > button';
    await expect(page).toClick(addButtonSelector);
    await expect(dialogHandler).toHaveBeenCalled();
    const [firstCall] = dialogHandler.mock.calls;
    const [dialog] = firstCall;
    expect(dialog.message()).toEqual('Please enter a todo!');
  })
Answer 1

Нужно создать обработчик диалогов и вызвать там метод:

async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  page.on('dialog', async dialog => { // создали обработчик диалогов
    console.log(dialog.message());
    await dialog.dismiss(); //или же dialog.accept()
    await browser.close();
  });
  page.evaluate(() => alert('1'));
})();
READ ALSO
Ошибка в команде yarn install

Ошибка в команде yarn install

Установил Docker Toolbox for Windows 81 В контейнеры через docker-compose установил nginx, php-fpm, php-cli, nodejs Установил symfony 4

204
Сложности в получении стилей нативным JS

Сложности в получении стилей нативным JS

Хочу получить высоту элементаПишу следующим образом:

219
Не распознается переменная Jquery validator

Не распознается переменная Jquery validator

Я пытаюсь добавить свой метод для валидации поля с помощью jQueryvalidator

267
Текст внутри контейнера

Текст внутри контейнера

Я делаю <v-card> во vuetify и хочу сделать так, чтобы текст у меня был ограниченТ

160