PHP カンファレンス関西2015で「PHPer だからこそ知っておきたい、JavaScript のテストを複数ブラウザで自動実行する話」を発表した時に頂いた質問で、「プロファイルを指定したブラウザを使いたい場合はどうするのか?」という内容のものがあった。
以前調べているときに、どこかでそれに似た話を見かけたような気がしたので「なにかでできると思います」という超あいまいな返事をしてしまったので、ちょっと調べてみることにした。ちなみにその質問者の方は「自分でやったときにはうまくいかなかった」とおっしゃっていたので、どうなることやら。。。
プロファイル切り替えといえば、先陣を切ったのが Firefox だという認識があるので、Firefox で試す。独自プロファイルの作り方や指定の仕方なんかは、Mozilla の「プロファイルの管理」だとか「コマンドラインオプション」あたりを読めば分かると思うので、ここでは省略する。
で、今のところの結論を言うと「プロファイルを指定した Firefox を Karma で利用する」には、次のステップを実行すれば良いことがわかった。ただし、「今のところ」と言っているのは、まだ良くわかってないところがあるため。むしろ、知っていたら誰か教えて欲しい。
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
// 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 (たぶんこちらが本命の方法)」という日記を書いたので、こちらもどうぞ。