Запуск 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])

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

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