概要
Travis CI で GUI を利用しない Firefox を使ってエンドツーエンドテストする方法を調べました。
動作試験
.travis.yml
では before_script
で関連する gem のインストールと Xvfb の起動を行います。ここでは ブラウザの自動操作に watir-webdriver を使います。Xvfb の起動方法は Travis CI のドキュメントに従い、下記のようにします。
travis.yml
language: ruby
before_script:
- "gem install rspec"
- "gem install headless"
- "gem install watir-webdriver"
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
script:
- "rspec"
下記は Travis CI で Firefox を起動して Qiita のトップページのタイトルが正しいか確かめるテストです。(Travis CI から Qiita にアクセスするとタイトルが英語になるようです。)
spec/e2e_spec.rb
# encoding: utf-8
require 'watir-webdriver'
require 'headless'
describe "qiita.com" do
before do
@headless = Headless.new
@headless.start
@browser = Watir::Browser.new :ff
end
it "has valid title" do
@browser.goto "http://qiita.com"
expect(@browser.title).to eq("Qiita - A technical knowledge sharing platform for programmers.")
end
after do
@browser.quit
@headless.destroy
end
end
Travis CI にてテストがパスすることが確認できました。
$ rspec
.
Finished in 30.14 seconds (files took 0.24446 seconds to load)
1 example, 0 failures
上記の動作試験を行った GitHub のリポジトリです。
https://github.com/suzuki86/sample-of-using-headless-firefox-on-travisci
Travis CI での実行結果です。
https://travis-ci.org/suzuki86/sample-of-using-headless-firefox-on-travisci