AWS(Amazon) Cloud9環境でHeadless Chromeを使う

この記事を書いたひと: @t4traw 2018年3月12日

AWS(Amazon) Cloud9環境にHeadless Chromeをインストールします。

Amazon LinuxではChromeを入れるのがめちゃくちゃ大変で苦労しましたorz 便利な.shを提供してくれている所があったので、そこを紹介します。

参考: INSTALLING GOOGLE CHROME ON CENTOS, AMAZON LINUX, OR RHEL

以下のコマンドでサクっとChromeをインストールする事ができます、

$ curl https://intoli.com/install-google-chrome.sh | bash

※ちなみに、こういう.shファイルはよく無くなっていたりするので、gistなどにコピーしておくのがオススメです。

無事インストールできたら、次はフォントパックをインストールしておきます。

$ sudo yum -y install ipa-gothic-fonts

そして、Gemfileにchrome-driverを追加します。

Gemfile
gem 'chrome-driver'

最後に、Railsプロジェクトの中のtest/application_system_test_case.rbの中身をこんな感じに変更します。

test/application_system_test_case.rb
require "test_helper"

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => %w(--headless)})
  driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { desired_capabilities: caps }
end

試しに適当なテストを書いてtestを実行してみましょう。

$ rails test test/*
Run options: --seed 33191

# Running:

Puma starting in single mode...
* Version 3.11.3 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 0, max threads: 1
* Environment: test
* Listening on tcp://0.0.0.0:35187
Use Ctrl-C to stop
.

Finished in 3.159344s, 0.3165 runs/s, 0.3165 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

無事いけたようです。

PhantomJSの開発が終了し、ヘッドレスブラウザでテストといったらChromeになると思うので、もちっと楽に環境が作れると楽なんだけどなぁ。

それでは👐