読者です 読者をやめる 読者になる 読者になる

Yii に関する覚え書き (Selenium)

Yii というか、Selenium に関してなのだが。

環境

問題

テストに関するチュートリアル を試していたのだが、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 秒も掛かるのか...。もうちょっと速くならんかね。