Запустите "тест на угасание" без PhantomJS, установленного глобально

У меня есть проект Ember CLI, который я создаю с использованием Maven, и я пытаюсь выяснить, как maven сможет запускать тесты без предварительного предположения, что PhantomJS установлен во всем мире. Я использую frontend-maven-plugin для установки конкретных версий узла и npm на лету, для вызова npm install, bower install и ember build; это все уже работает. То, что я пытаюсь сделать сейчас, также называется ember test, и, если тесты не пройдены, произойдет сбой сборки maven. В настоящее время это работает до тех пор, пока "phantomjs" находится на пути к машине, на которой выполняется сборка maven; однако, многие разработчики используют эту сборку, которые не являются разработчиками ember и не будут иметь фантомов на своем пути. Также я не хочу проверять глобальную установку phantomjs на моих CI-серверах.

Есть ли какой-нибудь способ указать PhantomJS как зависимость в package.json и заставить testem (запускающий тест по умолчанию для ember) подхватить установку в node_modules? Могу ли я указать путь к PhantomJS для testem каким-либо образом, что не очевидно из документации? Или мне просто нужно жить со скрытой зависимостью вручную, если я хочу запускать тесты?

1 ответ

Решение

Да, вы можете сделать именно это.

Сначала установите phantomjs-prebuilt как зависимость разработчика:

npm install --save-dev phantomjs-prebuilt

Затем измените свой package.json скрипты для добавления project-local node_modules в ваш путь перед запуском тестов:

    "scripts": {
      "build": "ember build",
      "start": "ember server",
      "test": "PATH=$PATH:./node_modules/.bin ember test"
    },

Затем проведите свои тесты как обычно

npm install && bower install && npm test

Это запустит вашу локальную версию проекта phantomjs для запуска тестов.

Другие вопросы по тегам