FreeBSD(without X)で快適ブラウザテスト計画【turnip(capybara, rspec), poltergeist(phantomjs)】

明けましておめでとうございます。
今年も皆様にとって良い年となりますように!そんな年初めのネタは、X無しのサーバでブラウザテストをする話です。

使うライブラリは、

  • rspec (3.1.0)
  • capybara (2.4.4)
  • turnip (1.2.4)
  • poltergeist (1.5.1)
  • phantomjs (1.9.8)

です。ちなみに、OSは FreeBSD 10 p15。 Ruby は 2.1.5 です。

環境整備

まずは、pkg (FreeBSD のパッケージ管理システム) や gem(Rubyのパッケージ管理システム)を使い
必要そうなものをインストールします。
(rbenvを使いローカルに ruby環境を作っているので、gem のインストールはユーザ権限で行っています)

ちなみに、rpec とか capybara は、上記パッケージの前提パッケージなので一緒に入ります。

poltergeist の実験

Web で情報探すと、Rails を前提にしているモノが多く、
なかなか poltergeist を前提にしたサンプルが見当たりません。

しかたないので、ドキュメントとかみつつサンプル作成します。

あとは、

で実行!
結果…ちゃんと Yahoo!ブックマーク の HTML が出力されました…!

…が、

スクリーンショット'(screenshot.png)にお豆腐がたくさん(□ ←こればっかり)
日本語が文字化けていました(・ω・`)

poltergeist の日本語対応(失敗編)

日本語フォントを入れれば良いと聞き、

でフォントをインストールしてみました。でも、日本語は表示されません。

調べてみると、dejavu フォントがあると ipaフォントよりも優先されてしまうと書いてあったので、dejavu フォントを削除して実行してみましたが、駄目でした。

次は、ロケールを変えれば良いという情報にたどり着き、

で実行してみたところ、日本語が表示されました。
しかし、この挙動は正常な挙動に見えません…。もう少し解決策を模索します。

poltergeist の日本語対応(解決編)

poltergeist が使用している phantomjs がさらに使用している QtWebkit が、
日本語のfamily名を扱えないことがわかりました(フォーラムで問題提起されていたので、そのうち対策されるかも)。
実際、ipaフォントは family名に日本語を含むので、別のフォントを試しにインストールしてみました。

そして、先ほどのスクリプトを実行…

無事にスクリーンショットに日本語が表示されました。

Turnipを試す

Turnip について調べてみると、やはり Rails前提の情報が多く見つかります。
今回は Rails前提にしたくなかったので、適当にサンプルを作って動作を確かめてみます。

以下、それぞれのファイルの中身

あとは、.rspec のあるディレクトリで

と実行すれば、テストが実行できます。

ちなみに、spec_helper.rb と turnip_helper.rb は、rspec(with turnip) を実行するとデフォルトで読み込まれるファイルです。読み込まれる順序は turnip_helper が先で、その次に spec_helper でした。

テストは ruby で書きますが、Webアプリとは完全に独立してかけますので、いろんなWebテストに活用できそうですね…!

 

“FreeBSD(without X)で快適ブラウザテスト計画【turnip(capybara, rspec), poltergeist(phantomjs)】” への1件の返信

  1. 日本語のfamily名を扱えないことがわかりました(フォーラムで問題提起されていたので、そのうち対策されるかも)。

    つい最近、同等の環境を作ってみたのですが、対策されてましたね。
    IPAゴシック、使えました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*