Запуск Meteor с тестом Velocity без всплывающего окна Chrome
В своем стремлении собрать знания о том, как использовать Velocity, я натолкнулся на фрагмент, в котором упоминалась переменная оболочки для настройки скорости браузера, используемой для запуска Karma в PhantomJS, в отличие от создания всплывающего окна Chrome каждый раз, когда я запускаю свое приложение в DEV-режим. В то время я не обращал на это внимания, но после того, как я провел тестирование в двух моих приложениях, могу сказать, что досадно запускать тесты во всплывающем окне.
Кто-нибудь знает, можно ли запустить тесты так, чтобы они запускались в PhantomJS, а не во всплывающих окнах Chrome? Я думал, что переменная была что-то вроде VELOCITY_BROWSER=PhantomJS, но это, похоже, не работает. Кроме того, есть ли способ настроить Meteor, чтобы он просто устанавливал это как значение по умолчанию, чтобы мне не приходилось каждый раз создавать переменную, как в конфиге или что-то в этом роде?
2 ответа
Я нашел ответ для тех, кто нашел это и также задавался вопросом, как предотвратить всплывающее окно "Карма".
Я использую набор тестов sanjo:jasmine, который использует Karma для клиентских интеграционных тестов. Вы можете установить браузер по умолчанию PhantomJS, просто добавив его в свою среду, когда вы запустите meteor:
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
Надеюсь, это поможет кому-то в будущем.
В 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])
Окно появится, но будет создано за пределами экрана, и, к счастью, даже не крадет фокус клавиатуры.