Yii に関する覚え書き (Selenium)
Yii というか、Selenium に関してなのだが。
環境
- 主なのはこちらを参照
- Selenium Server 2.17.0
- PHPUnit 3.6.8
- PHPUnit_Selenium 1.2.0
問題
テストに関するチュートリアル を試していたのだが、Selenium を使ったテストどうしてもパスしない。テスト結果は以下の通り。
% phpunit functional/PostTest.php PHPUnit 3.6.8 by Sebastian Bergmann. Configuration read from /var/www/blog/protected/tests/phpunit.xml EE Time: 41 seconds, Memory: 10.75Mb There were 2 errors: 1) PostTest::testIndex PHPUnit_Framework_Exception: Current URL: OR Server Exception: sessionId led to start new browser session: Error while launching browser doesn't exist; perhaps this session was already stopped? Result is neither "true" nor "false": 'OR Server Exception: sessionId led to start new browser session: Error while launching browser doesn't exist; perhaps this session was already stopped?' 2) PostTest::testView PHPUnit_Framework_Exception: Current URL: OR Server Exception: sessionId led to start new browser session: Error while launching browser doesn't exist; perhaps this session was already stopped? Result is neither "true" nor "false": 'OR Server Exception: sessionId led to start new browser session: Error while launching browser doesn't exist; perhaps this session was already stopped?' FAILURES! Tests: 2, Assertions: 0, Errors: 2.
Selenium 側のログにもエラーが出力されている。
18:08:43.214 INFO - Allocated session bc318aca7f3e4e8597e0692017656acd for http://localhost/blog/index-test.php/, launching... 18:08:43.307 INFO - Preparing Firefox profile... 18:09:03.401 ERROR - Failed to start new browser session, shutdown browser and clear all session data
解決
Xvfb を使用することで解決。端末(?)にディスプレイが割り当てられていないので、FireFox が起動できなかったことが原因。
インストールと実行。Xvfb のコマンドの頭文字は "X"。大文字で始まるコマンドなんて珍しい!
% sudo apt-get install xvfb % Xvfb :1 -screen 0 1024x768x8 &
Selenium サーバを起動する前に環境変数を設定する。その後起動。
% export DISPLAY=localhost:1.0 % java -jar selenium-server-standalone-2.17.0.jar
再度テストを実行する。
% phpunit functional/PostTest.php PHPUnit 3.6.8 by Sebastian Bergmann. Configuration read from /var/www/blog/protected/tests/phpunit.xml .. Time: 10 seconds, Memory: 10.50Mb OK (2 tests, 4 assertions)
やった。
しかし、2 つのテストをするだけなのに 10 秒も掛かるのか...。もうちょっと速くならんかね。