Как сделать Dockerfile для тестов e2e, написанных с помощью Puppeteer - PullRequest
0 голосов
/ 14 октября 2019

Я использую удивительный инструмент под названием Puppetry для создания тестов e2e. Тесты запускаются с помощью команды npm - npm test. Легко peasy.

Я запускаю эти тесты в конвейере развертывания, используя Dockerfile. Все работает нормально Я хотел бы знать, какой из этих двух подходов лучше (и почему):

# Dockerfile 
# other docker instructions

RUN npm run test  <== 1. running tests when the image builds
CMD npm test <== 2. running tests after the image builds

В настоящее время я использую второй подход.

Еще несколькоinfo:

Мой конвейер развертывания выглядит следующим образом:

BuildDev> DeployDev> TestDev

BuildDev использует сборку Dockerfile. TestDev использует тестовый Dockerfile.

1 Ответ

1 голос
/ 14 октября 2019

Вы не можете запустить сквозные тесты из команды Dockerfile RUN. Он запускается в среде, где нет постоянного хранилища и контейнер не может получить доступ к другим контейнерам. (Технически говоря, внешние тома не монтируются и работают в мостовой сети по умолчанию.) Это означает, что, если тестируемая система работает в Docker, тестовая сборка не может достичь этого, и в любом случае результаты могут 'не может быть записано где-либо, кроме встроенного образа.

Это также хороший кандидат для запуска чего-либо извне Docker. Часто сквозные тесты вызывают только внешне видимые конечные точки системы и проверяют поведение, наблюдаемое таким образом. Это означает, что вам не нужно вызывать случайные контейнеры в вашем стеке, только один прокси-контейнер nginx, который вы публикуете;нет особой необходимости быть во внутренней сети Docker. Вы также захотите получить опубликованные результаты, и изоляция файловой системы Докера может помешать вам, и вы можете захотеть повторно запустить тесты с незначительными изменениями (а не повторно docker build).

...