browser-runnerという指定したURLへIE、Firefox、Chrome、PhantomJSなどブラウザでアクセスさせられるシンプルなNodeモジュールを書きました。

コマンドライン または Nodeモジュールとして利用することができます。 ブラウザはWebDriverに対応していれば何でも動きます。

作った目的

このbrowser-runnerはローカルのHTMLにも対応しているのですが、 PhantomJSであるHTMLにアクセスしたログを見たいときにわざわざJSを書く必要があるのが面倒だったのでこれを作りました。

ローカルHTMLは自動的にローカルサーバを立てた上でアクセスするのでXHRなどもちゃんと動作するようになってます。

インストール

コマンドラインツールとして使う場合は -g オプション付きでインストール

npm install -g browser-runner

-bオプションでブラウザ名、引数にHTMLのファイルパス or URLを指定すれば、そのブラウザでアクセスしてくれます。

$ browser-runner -b firefox path/to/index.html

アクセスするとconsole.logの内容はそのまま標準出力に出してくれたりします。 PhantomJSの場合はphantomjs.logあたりにも出力されます。

Nodeモジュールとして使う

browser-runnerはNodeモジュールとしても使えます。

example/example.jsにURLにアクセスするサンプルがありますが、以下のように書くだけです。

var BrowserRunner = require("browser-runner");
var runner = new BrowserRunner({
    "browser": "phantomjs"
});
runner.runBrowser("http://example.com").then(function () {
    console.log("FINISH EXAMPLE!");
}).catch(console.error.bind(console));

ローカルファイルへのアクセスも同じでexample/local-example.jsにサンプルがありますが、自動的にURLかどうかをみて判別します。

var BrowserRunner = require("browser-runner");
var path = require("path");
var runner = new BrowserRunner({
    "browser": "phantomjs"
});
runner.runBrowser(path.join(__dirname, "local.html")).then(function () {
    console.log("FINISH LOCAL EXAMPLE!");
}).catch(console.error.bind(console));

またローカルサーバを内蔵していますが、そこに任意のサーバスクリプトをかませたり、runner.runBrowserをするとselenium-webderiverオブジェクトが渡ってくるので、それを使ってwebdriver経由でブラウザの操作を追加することができます。

例えば、URLにアクセスしてある要素をクリックして、class属性が変わったかをテストするというようなものが書けたりします。(若干おまけ感がある)

browser-runnerの仕組みはReftest-runnerのものがベースでそれを別モジュールに取り出したという感じです。

類似