プレイヤーズ・ハイ

 雑多な日記

Selenium テストを Amazon Linux 上で定時自動実行する

Selenium IDE で作成・実行したテストを Amazon Linux 上で定時自動実行するための環境構築メモです。

Selenium IDE の導入や使用方法については,ここでは割愛します。

テストケースのエクスポート

作成したテストケースを選択し「ファイル」->「テストをエクスポート」->「Ruby / RSpec / WebDriver」と選択しエクスポートします。

エクスポートしたファイルに ${receiver} の記載がある場合は @driver に置換します。

Amazon Linux 環境構築

以下のとおり必要なものをインストールします。

コンパイルに必要なものたち

$ sudo yum install -y gcc readline-devel openssl-devel sqlite-devel bzip2-devel

Ruby 関連

$ sudo yum install ruby-devel ruby18-devel ruby19-devel ruby20-devel

rspec と selenium-webdriver

$ sudo gem install rspec
$ sudo gem install selenium-webdriver

Firefox のインストール

t1.micro だと数時間かかります。

$ sudo wget -qO- https://gist.github.com/alingogo/5325484/raw | sudo bash

hicolor-icon-theme のインストール

これを入れていないと Xvbf 使用時にエラーが出たので入れていますが,必要ないかもしれません。

$ wget http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.13.tar.gz
$ tar xvf hicolor-icon-theme-0.13.tar.gz
$ cd hicolor-icon-theme-0.13
$ ./configure --prefix=/usr
$ sudo make install

仮想フレームバッファツールのインストール

$ sudo yum install -y Xvfb xorg-x11-fonts* ImageMagick

日本語フォントのインストール

これもケースによっては必要ないかもしれません。必要と思われるケースは,例えば,日本語がテキストとして使用されているウェブサイトのスクリーンショットを取る場合です。その場合これがないと日本語が化けます。

$ sudo yum install -y ipa-gothic-fonts

定時自動実行の仕組み

シェルスクリプト内で仮想フレームバッファを立ち上げ,Firefox を起動し,Selenium IDE からエクスポートしたテストを実行させます。これを cron で動かします。

Selenium テスト

エクスポートしたテストを test.rb とします。

cron で動かすために,この中に以下を追記します。

Selenium::WebDriver::Firefox::Binary.path='/usr/local/bin/firefox'

シェルスクリプト

  • test.sh
#!/bin/sh
DISPLAY=:8
/usr/bin/Xvfb $DISPLAY -screen 0 1024x768x24 +extension RANDR &
export DISPLAY
/usr/local/bin/firefox &
/usr/local/bin/rspec /home/ec2-user/test.rb
exit 0

cron

普通に crontab に登録します。

以上です。

私の環境では,上記テストが実行される少し前に,あるサーバーから EC2 インスタンスを立ち上げ,テストが終わる時刻を見計らってあるサーバーから EC 2 インスタンスを停止しています。

あるサーバーは Zabbix で監視しているので何かあるとすぐ分かるようになっています。