CodeceptionのAcceptanceテストではWebDriverを使って、ブラウザー上で実際に動作テストができます。問題は、Seleniumの新しいバージョンだと、Firefoxでテストするのが面倒になったことです。特にFirefoxでテストする必要がない場合は、Chromeで簡単にテストできます。(2017/2/25、 Firefoxでも動くようになっていました。)
- WebDriver のインストールを Homebrew に変更しました(2017/2/27)
- Firefox でも動くようになっていました(2017/2/25)
- インストールに --dev フラグを追加 / 呼び出しを vendor/bin からに変更(2017/2/28)
環境
- macOS Sierra 10.12.1
- Google Chrome 54.0
- Firefox 51.0.1
- Codeception 1.2.1
- Selenium-Standalone-Server 3.0.1
- Java 1.8.0_65
- Homebrew 1.1.10
前提
- JRE(Java Runtime Environment)か、JDK(Java Development Kit)がインストール済みであること
- Composerが使えること
- Homebrewが使えること
手順
WebDriver のインストール
テストしたいブラウザー用の WebDriver をインストールします。以下、Google Chrome と Firefox 用のインストールです。Safari は現時点でネイティブサポートされていて、WebDriver をインストールしなくても Selenium で利用できます。
すでにインストール済みの場合は、 Homebrew の更新をしてください。
brew install chromedriver brew install geckodriver
以上できたら、環境セットアップへ進みます。インストール済みの場合は、以下で更新します。
Homebrewの更新
brew update brew upgrade
環境セットアップ
- プロジェクトフォルダーを作成する
- Seleniumの公式ページから、Selenium Standalone Serverをダウンロードする
- ダウンロードしたjarファイルをプロジェクトフォルダーに移動
- 以下で、codeceptionをインストールして、環境ファイルを作成
composer require --dev codeception/codeception php vendor/bin/codecept bootstrap
- tests/acceptance.suite.yml をエディターで開く
- 以下の内容にする
class_name: AcceptanceTester modules: enabled: - WebDriver: url: http://www.google.co.jp browser: chrome - \Helper\Acceptance
(WebDriver のインストールを Homebrew に変更したので、以下は不要です。Windows の場合は以下をやってください。 2017/2/27)
テストしたいブラウザーの WebDriver を、 Selenium Standalone サーバーを起動するときのフォルダー(プロジェクトフォルダー直下が良いでしょう)に用意します。
- Downloads - ChromeDriver - WebDriver for Chrome を開いて、最新版のChromeDriverを選択
- 該当するドライバーをダウンロード。macであれば chromedriver_mac64.zip
- zipファイルを解凍して、プロジェクトフォルダーにプログラムを置く
- Firefox は Releases · mozilla/geckodriver · GitHub
- それ以外のドライバーは、 http://www.seleniumhq.org/download/ の[Third Party Drivers, Bindings, and Plugins]以下から探してください
テストを作成
- ターミナルから以下を実行してテストファイルを作成
php vendor/bin/codecept g:cept acceptance Welcome
- tests/acceptance/WelcomeCept.php をエディターで開く
- 以下のコードを書く
<?php $I = new AcceptanceTester($scenario); $I->wantTo('ensure that frontpage works'); $I->amOnPage('/'); $I->see('Google');
テストの実行
- ターミナルを開いて、プロジェクトフォルダーに移動して、以下でサーバーを起動(テストに利用したい WebDriver が同フォルダーに必要です)
java -jar selenium-server-standalone-*.jar
- 以下で、テスト実行
php vendor/bin/codecept run