雑文発散

«前の日記(2015-05-31) 最新 次の日記(2015-06-02)» 編集
過去の日記

2015-06-01 [長年日記]

[Karma] Karma でブラウザのプロファイルを切り替えて使う方法

PHP カンファレンス関西2015で「PHPer だからこそ知っておきたい、JavaScript のテストを複数ブラウザで自動実行する話」を発表した時に頂いた質問で、「プロファイルを指定したブラウザを使いたい場合はどうするのか?」という内容のものがあった。

以前調べているときに、どこかでそれに似た話を見かけたような気がしたので「なにかでできると思います」という超あいまいな返事をしてしまったので、ちょっと調べてみることにした。ちなみにその質問者の方は「自分でやったときにはうまくいかなかった」とおっしゃっていたので、どうなることやら。。。

プロファイル切り替えといえば、先陣を切ったのが Firefox だという認識があるので、Firefox で試す。独自プロファイルの作り方や指定の仕方なんかは、Mozilla の「プロファイルの管理」だとか「コマンドラインオプション」あたりを読めば分かると思うので、ここでは省略する。

で、今のところの結論を言うと「プロファイルを指定した Firefox を Karma で利用する」には、次のステップを実行すれば良いことがわかった。ただし、「今のところ」と言っているのは、まだ良くわかってないところがあるため。むしろ、知っていたら誰か教えて欲しい。

  1. Karma 用の Firefox プロファイルを作る
  2. 「1 のプロファイルを指定した Firefox」を起動するシェルスクリプトを作る
  3. karma-script-launcher をインストールする
  4. karma.conf.js の browsers 配列に 2 で作ったシェルスクリプトを指定する

1 は、先程も言ったように説明は省略。今回は「karma」という名前のプロファイルを作成した。

2 は、だいたいこんな感じ。karma-firefox.sh というファイル名にしてみた。あ、ちなみに環境は OS X である。この記述でとりあえずは動くようなのだが、ちょっとまだ不明点がある。それは Firefox に渡している URL のid=11111111 のところ。

#!/bin/sh

FIREFOX='/Applications/Firefox.app/Contents/MacOS/firefox'
PROFILE='karma'

$FIREFOX -p $PROFILE 'http://localhost:9876/?id=11111111'

この id は、karma.conf.js 内の browsers 配列に渡すブラウザごとに違った id 値を割り振るようなのだけど、それを動的に割り当てる方法が分からない。karma-script-launcher 以外で立ち上げたブラウザ(例えば karma-chrome-launcher で立ち上げた Chrome)の URL 欄をよく見ると、毎回違った id が割り振られているので、Karma が起動時に動的に割り当てていそう。それをシェルスクリプトへ渡せればいいんだけど。

ただ、今のところ固定値にしておいても、他のブラウザと被らなければ大丈夫そうな気配ではある。

3 は、npm コマンドでインストールするだけ。

% npm install karma-script-launcher --save-dev
  1. はこのような記述になる。
// karma.conf.js
// [snip]
browsers: [
  '/path/to/karma-firefox.sh'
],
// [snip]

あるいは、--browsers オプションを利用して、次のようにしても起動できた。ちなみにシェルスクリプトの path はフルパスじゃないとダメみたい。

% ./node_modules/karma/bin/karma start --browsers '/path/to/karma-firefox.sh'

完璧な回答にはなってないけど、「プロファイルを指定したブラウザ」での実行はこんな感じなのではないだろうか。

発表のあと、質問して頂いた方とお話できなかった(他の方とのお話が長引いた)ので、お名前とか伺えなかたので、この回答が何かで届くといいなと思いつつ書いてみた。質問の意図が違ってたら申し訳ない。


【追記】「Karma でブラウザのプロファイルを切り替えて使う方法 #2 (たぶんこちらが本命の方法)」という日記を書いたので、こちらもどうぞ。