Как запустить Cypress Test, Vue front-end и back-end за один раз? - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу настроить тесты E2E с помощью Cypress в приложении Vue.js. Когда я запускаю тест Cypress, он предупреждает меня, что приложение Vue (на localhost: 8080) не запущено, что сначала удивило меня. Как я и думал, приложение Vue будет запускаться автоматически (автоматически?) При запуске тестов Cypress. Но, как оказалось, он этого не делает.

Что я хотел бы сейчас сделать, так это создать тестовый скрипт, который будет запускать тесты Cypress, интерфейсное приложение Vue.js и фоновое приложение Node.Js / Express в унисон. (Внешнее и внутреннее приложения на данный момент не очень большие, поэтому их запуск не должен занимать так много времени. Когда они станут больше, я, скорее всего, добавлю заглушки для внутренних вызовов.)

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

Из того, что я собрал, я думаю, что мне нужно создать какой-то скрипт Webpack, чтобы это произошло, но это все, что я могу выяснить (у меня нет опыта работы с Webpack, что тоже не помогает. ..). Как я могу создать скрипт (shell?) Для этого?

1 Ответ

0 голосов
/ 03 апреля 2019

Я считаю, что вы должны проверить документацию Cypress - https://docs.cypress.io/guides/guides/continuous-integration.html#Boot-your-server

Вот выдержка из содержания,

Многие люди подходят к этой ситуации, выполняя команду, подобную следующей:

npm start & cypress run // Do not do this

Проблема в том, что произойдет, если вашему серверу потребуется время для загрузки? Не гарантируется, что при выполнении следующей команды (cypress run) ваш веб-сервер будет доступен и доступен. Таким образом, ваш Cypress-тест может запуститься и попытаться посетить ваш локальный сервер, прежде чем он будет готов для посещения.

Решение

К счастью, для этого есть несколько решений. Вместо того, чтобы вводить произвольные ожидания (например, сон 20), вы можете использовать лучший вариант.

ожидание модуль

Используя модуль ожидания, вы можете заблокировать выполнение команды cypress run до загрузки вашего сервера.

npm start & wait-on http://localhost:8080

cypress run
...