Запуск тестов e2e для комплекта prod с webpack-dev-server
В Angular можно запускать тесты транспортира для сборки prod, используя
"e2e:prod": "ng e2e --prod"
Это будетсоберите пакет prod, запустите webpack-dev-server и запустите транспортир.Как только это будет сделано, webpack-dev-server будет отключен.В любом случае, это не то, что мы ищем ... см. Ниже
Как отключить сервер узла после завершения транспортира?
Для нашей непрерывной интеграции нам нужен e2eтесты для запуска на сервере узла, а не на webpack-dev-server.Поэтому мы попытались запустить сервер узла и затем запустить тесты транспортира.
Для этого мы ввели новый скрипт в наш package.json, который выполняет наш сервер ci:
npm run e2e:ci
Решение 1 - использовать одновременно (не работает):
"e2e:ci": "concurrently -k \"npm:e2e:ci:serve\" \"npm:e2e:ci:protractor\"",
"e2e:ci:serve": "node server.js",
"e2e:ci:protractor": "ng e2e --base-url=http://localhost:8080/ --dev-server-target="
Это решение почти работает.Наличие --dev-server-target=
без цели остановит угловой, чтобы построить связку (мы находимся на угловом 7).e2e:ci:serve
запускает сервер узла, предполагая, что пакет prod был собран ранее, чтобы его можно было обслуживать. НО - как только транспортир будет завершен, он уничтожит сервер узла, поэтому он существует с кодом 1:
--> Sending SIGTERM to other processes..
[serve:server] npm run serve:server exited with code 1
npm ERR! code ELIFECYCLE
Поскольку я использовал параллелизм с -k
(kill), сервер узла останавливается один разтранспортир закончен.Но с кодом выхода 1 наш ci предполагает, что тест e2e не выполнен.
Решение 2 - использовать npm-run-all (не работает)
мы также попробовали npm-run-all вместо одновременного с флагом гонки -r
:
"e2e:ci": "npm-run-all -p -r e2e:ci:serve e2e:ci:protractor",
Но это приведет к тому, что сервер будет работать после завершения транспортира.Таким образом, тест e2e никогда не останавливается.
Кто-нибудь знает, как это сделать правильно?Либо корректно завершить работу сервера узлов, либо, может быть, есть другой подход к архивированию запущенных тестов e2e на сервере узлов?