Как запустить Cypress test, интерфейс Vue и серверную часть за один раз?

#vue.js #e2e-testing #cypress

#vue.js #e2e-тестирование #cypress

Вопрос:

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

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

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

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

Комментарии:

1. простой сценарий запуска на Python? Если вы пытались вставить это в вопрос и возможные ошибки.

Ответ №1:

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

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

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

 npm start amp; cypress run // Do not do this
  

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

Решение

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

ожидающий модуль

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

 npm start amp; wait-on http://localhost:8080

cypress run
  

Комментарии:

1. Спасибо за этот совет! Я просмотрел весь сайт Cypress, но, по-видимому, умудрился пропустить эту часть…