Запуск Meteor с тестом Velocity без всплывающего окна Chrome

В своем стремлении собрать знания о том, как использовать Velocity, я наткнулся на фрагмент, в котором упоминалась переменная оболочки для установки браузера Velocity, используемого для запуска Karma в PhantomJS, вместо создания всплывающего окна Chrome каждый раз, когда я запускаю свое приложение в DEV-режим. В то время я не обращал на это внимания, но после того, как я реализовал некоторые тесты в двух моих приложениях, я могу сказать, что это раздражает, когда тесты выполняются во всплывающем окне.

Кто-нибудь знает, как можно запустить тесты, чтобы они запускались в PhantomJS, а не во всплывающих окнах Chrome? Я думал, что переменная похожа на VEOCITY_BROWSER=PhantomJS, но, похоже, это не работает. Кроме того, есть ли способ настроить Meteor так, чтобы он просто устанавливал это по умолчанию, чтобы мне не приходилось каждый раз создавать переменную, например, в конфигурации или что-то в этом роде?


person CodeChimp    schedule 29.01.2015    source источник


Ответы (2)


Я нашел ответ для тех, кто нашел это, а также задавался вопросом, как предотвратить всплывающее окно Karma.

Я использую набор тестов sanjo:jasmine, который использует Karma для тестов интеграции клиента. Вы можете установить браузер по умолчанию на PhantomJS, просто добавив его в свою среду при запуске метеора:

JASMINE_BROWSER=PhantomJS

Или, если вы просто хотите полностью отключить клиентские интеграционные тесты, просто добавьте это:

JASMINE_CLIENT_UNIT=0

Так, например, вы можете запустить свое приложение как JASMINE_BROWSER=PhantomJS meteor, и вы больше не будете получать всплывающее окно. Что я сделал, так это создал meteor.sh в корневой папке моего приложения, который я использую для запуска с такими переменными среды:

#!/bin/sh
JASMINE_BROWSER=PhantomJS meteor

Это только для удобства, поэтому мне не нужно было бы запоминать переменную, чтобы сделать это. Это должно работать на любой ОС на основе * nix. Вы также можете создать псевдоним, если хотите. Это будет выглядеть примерно так:

alias meteor=JASMINE_BROWSER=PhantomJS meteor

Я могу немного ошибиться в синтаксисе, но я думаю, что это должно сработать.

Чтобы использовать PhantomJS, вам необходимо установить его, поэтому запустите его в терминале:

npm install -g phantomjs

Или, если вы работаете на Mac (вам потребуется установить brew):

brew install phantomjs

Надеюсь, это поможет кому-то в будущем.

person CodeChimp    schedule 31.01.2015
comment
Этот! Тысячу раз это! Спасибо! - person tolmark; 26.02.2015
comment
При чтении проблем с Jasmine кажется, что автор планирует сделать PhantomJS по умолчанию, так что теперь это может понадобиться утром. Тем временем я начал все, используя свой сценарий оболочки, и фактически изменил его, чтобы он был немного более надежным, изменив его на чтение JASMINE_BROWSER=PhantomJS meteor $@. Таким образом, любые переданные ему аргументы будут просто переданы вызову метеора. Вы также можете изменить это, чтобы установить любые другие параметры, которые могут вам понадобиться. - person CodeChimp; 26.02.2015
comment
(OSX) Кроме того, если по какой-то причине, как в моем случае, журнал сообщает вам, что он не может найти исполняемый файл phantomjs, вам необходимо установить файл PHANTOMJS_BIN. Я установил phantomjs с помощью homebrew, поэтому обновленная команда псевдонима может выглядеть так: alias phantommeteor="PHANTOMJS_BIN=\"/usr/local/bin/phantomjs\" JASMINE_BROWSER=PhantomJS meteor" - person Codebryo; 04.08.2015
comment
Для отладки полезно посмотреть лог-файл, который у меня находился по адресу <your-app-dir>/.meteor/local/log/jasmine-client-integration.log. Вот как я узнал, что мне нужно установить PHANTOMJS_BIN. - person Tim Fletcher; 25.08.2015

В sanjo:jasmine 0.17.0 для Windows у PhantomJS есть некоторые проблемы с функцией автообновления метеора. У вас могут возникнуть проблемы с повторным запуском тестов при изменении кода приложения.

Если вы хотите придерживаться окна Chrome, его можно несколько скрыть с помощью параметров командной строки Chrome, но вам нужно обновить karma-chrome-launcher\index.js, чтобы включить следующее:

return [
  '--user-data-dir=' + this._tempDir,
  '--no-default-browser-check',
  '--no-first-run',
  '--disable-default-apps',
  '--disable-popup-blocking',
  '--disable-translate',
  '--window-position=-800,0',    // <-- added
  '--window-size=800,600'        // <-- added
].concat(flags, [url])

Окно появится, но будет создано за пределами экрана и, к счастью, даже не украдет фокус клавиатуры.

person quetzalcoatl    schedule 19.08.2015