В настоящее время я нахожусь в процессе пересмотра нашего процесса контроля качества, и одна из вещей, которые я делаю, - это локальная передача автоматизированных тестов разработчику. Я делаю это с хаски и крючком перед фиксацией в git.
У меня есть две части: набор тестов Cypress и веб-приложение .netcore.
мой процесс выглядит следующим образом - разработчики вносят локальные изменения и фиксируют и sh удаленные. На pu sh хаски запустит команду npm cmd. этот -
"pre-push-test": "concurrently --success 'first' \"npm run startApp\" \"npm run test:ci\""
Я использую одновременно для запуска webapp с инструментом do tnet cmdline, а затем запускаю свой тестовый набор cypress без головы.
Все работает нормально, запускается веб-приложение, затем тестовый пакет запускается против него. У меня проблема, когда закончился набор тестов.
То, что происходит сейчас, - мой набор тестов пройдет, но одновременно зависнет, поскольку второй процесс (веб-приложение) все еще работает.
Просматривая документы, я подумал, что это то, что мне нужно:
-s, --success Return exit code of zero or one based on the success or
failure of the "first" child to terminate, the "last
child", or succeed only if "all" child processes succeed.
[choices: "first", "last", "all"] [default: "all"]
Поскольку это из того, что я прочитал, означает, что (и я передаю --success 'first' в моем npm cmd), что первым процессом, завершившимся sh, будет код, который одновременно использует для выхода.
Теперь закончится только мой набор тестов, так как другой - это веб-приложение. Так что я всегда ожидаю, что мой набор тестов будет тем, который завершится первым (если веб-приложение завершится, скорее всего, оно выйдет из строя из-за дефекта, и я хочу, чтобы хаски все равно не работал). Я хотел бы, чтобы конечная цель была примерно такой -
- git pu sh
- хаски бежит
- npm команда с одновременным
- Запуск веб-приложения
- запуск тестов
- тесты пройдены
- код выхода 0 передан из тестов в одновременно (что закроет другой процесс с 0)
- код выхода 0 передается хаски
- хаски завершает pu sh.
Я думал, что сначала у меня это с --success, но тесты просто зависают, и поэтому он никогда не поднимается до хаски, чтобы пройти / не пройти pu sh.
Спасибо за уделенное время.