Условный повторный тест в Транспортире - PullRequest
0 голосов
/ 15 января 2019

Я начал использовать Protractor для автоматического регрессионного тестирования, и я новичок в идее асинхронного выполнения, обещаний и т. Д. Недавно я столкнулся с тестом, который я не могу понять, как реализовать

На одной веб-странице есть таблица со ссылками в одном столбце. При нажатии на ссылку появляется окно с информацией, касающейся определенного элемента. Это не открывает новую веб-страницу / вкладку / окно, а просто показывает больше элементов веб-страницы и готовую кнопку, чтобы избавиться от всплывающего окна. Тест, который я пытаюсь реализовать, состоит в том, чтобы убедиться, что хотя бы одна из ссылок покажет определенный элемент во всплывающем окне, с которым он связан. В псевдокоде я пытаюсь сделать:

нажмите на ссылку-> проверить элемент-> если элемент появляется, то завершите тестирование-> если элемент не появляется, выполните цикл и нажмите следующую ссылку-> если больше ссылок для тестирования нет, то тест не пройден

Я провел исследование о том, как обещания и циклы плохо взаимодействуют, и после исследования попытался использовать замыкание функций и карты для достижения того, что я пытаюсь сделать без успеха. У кого-нибудь есть предложения по внедрению этого теста?

1 Ответ

0 голосов
/ 15 января 2019

Вы не предоставили некоторый код, поэтому мне придется угадывать структуру, но обещания и циклы на самом деле do довольно хорошо перемешиваются, если вы используете async / await !

const sleepPromise = ms => new Promise(r => setTimeout(r, ms));

(async () => {
  for (let i=0; i<5; i++) {
    await sleepPromise(1000);
    console.log('one second passed');
  }
})()

Внутри асинхронных функций вы можете поставить await перед обещаниями, чтобы они вели себя как синхронные функции. Под капотом они все еще являются обещаниями, но позволяют писать чистые циклы, используя обещания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...