tanaka's Programming Memo

プログラミングについてのメモ。

macのCodeceptionを使ってBrowserでテストをする(Firefoxでも動いた)

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)

環境

前提

手順

WebDriver のインストール

テストしたいブラウザー用の WebDriver をインストールします。以下、Google ChromeFirefox 用のインストールです。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ファイルを解凍して、プロジェクトフォルダーにプログラムを置く

- FirefoxReleases · 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

以上で、Chromeが起動して、Googleのホームページが開かれて、Googleの文字があるのでテストは成功します。

まとめ

基本的には、Codeceptionの公式ページのWebDriverのヘルプの通りです。新しいFirefoxだと、署名のないAdd-onが使えなくなったことで、そのまま動かなくなっています。方法はあるようですが、面倒なので、browserの部分を「chrome」に変えればとりあえずChromeでのテストはできます。→2017/2/25 現在、 Firefox も動くようになりました。

もしかしたら、Chromeに開発用の設定が必要かも知れません。うちでは上記の通りで動作しました。