Codeception + Vagrant + Laravel + Selenium
Seleniumを使う機会があったので、その際に行った手順をまとめました CodeceptionのAcceptanceTest(受け入れテスト)のシナリオを、Selenium通じてブラウザ上で行います Laravelとタイトルに入れているもののあんまりLaravelは関係ないかも
環境としては以下を想定
- Windowsのホストマシン上に, VagrantでCentOSの開発環境が構築されている
- Codeceptionの実行はVagrantゲストマシン上から行う
- ブラウザのテストはWindowsのホストマシン上で行う
前提
- Vagrant上のゲストマシンにLaravel, Codeceptionが導入されていて、AcceptanceTestが作成済み
- ホストマシンにJavaがインストール済み
- 以降、ホストマシンで行う作業を[host], ゲストマシンで行う作業を[guest]で表しています
Selenium Serverダウンロード [host]
Selenium Serverダウンロード
Selenium Standalone Serverの download x.x.x のリンクを選択(執筆時点では3.4.0)
jarが落ちてくるので、 C:\selenium-java-3.4.0
に置く
※ Java7だとselenium-java-3.4.0がうまく動かないという情報がありました Javaのバージョンを上げられない場合は、previous versionからバージョンの古いStandalone Serverを入れる
WebDriverダウンロード [host]
- Firefoxの場合(geckodriver) gecko driverダウンロード
- Chromeの場合(ChromeDriver) ChromeDriverダウンロード
使用するほうをダウンロードし、C:\selenium-java-3.4.0
に置く
ホストマシンのIPアドレスを調べる [guest]
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
調べたアドレスをWebDriverのIPアドレスとして設定する
$ vi ./vendor/Codeception/Codeception/src/Codeception/Module/WebDriver.php
// 略
protected $requiredFields = ['browser', 'url'];
protected $config = [
'protocol' => 'http',
'host' => '10.0.2.2', // ホストマシンのIPを設定
'port' => '4444'
※Vagrantでゲストからホスト見た時のIPは調べるまでもなくだいたい10.0.2.2っぽい。。。
テスト設定ファイルを修正 [guest]
vi ./tests/acceptance.suite.yml
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: {アプリケーションのURL}
browser: chrome
- \Helper\Acceptance
※ もちろんFirefox使う場合は、browser: の部分はfirefoxって書く。
Seleniumサーバー起動 [host]
Chromeの場合
C:\selenium-java-3.4.0>java -jar -Dwebdriver.chrome.driver=./chromedriver.exe selenium-server-standalone-3.4.0.jar
FireFoxの場合
C:\selenium-java-3.4.0>java -jar -Dwebdriver.gecko.driver=./geckodriver.exe selenium-server-standalone-3.4.0.jar
テスト実行 [guest]
./vendor/bin/codecept run
Codeception PHP Testing Framework v2.3.3
Powered by PHPUnit 5.7.14 by Sebastian Bergmann and contributors.
Acceptance Tests (1) -------------------------------------------------------------------------------------------------------------
✔ FirstCest: Try to test (2.51s)
----------------------------------------------------------------------------------------------------------------------------------
Functional Tests (0) -------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
Unit Tests (0) -------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
Time: 6.27 seconds, Memory: 10.00MB
OK (1 tests, 9 assertions)
ホストマシンのブラウザが起動してテストが実行される