SeleniumTestCase Improvements in PHPUnit 3.2

Version 3.2 of PHPUnit is shaping up nicely. In this blog posting I want to highlight the improvements to SeleniumTestCase, PHPUnit's extension for Selenium. Probably the most important improvement to SeleniumTestCase is the fact that you can now run each test using a set of browsers instead of just one browser:

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
    public static $browsers = array(
      array(
        'name'    => 'Firefox on Linux',
        'browser' => '*firefox /usr/lib/firefox/firefox-bin',
        'host'    => 'my.linux.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Safari on MacOS X',
        'browser' => '*safari',
        'host'    => 'my.macosx.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Internet Explorer on Windows XP',
        'browser' => '*iexplore',
        'host'    => 'my.windowsxp.box',
        'port'    => 4444,
        'timeout' => 30000,
      )
    );
 
    protected function setUp()
    {
        $this->setBrowserUrl('http://www.example.com/');
    }
 
    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}
?>
In the above example, the test declared in the testTitle() method will be run three times: once using Firefox on Linux, once using Safari on MacOS X, and once using Internet Explorer on Windows XP. Other improvements to SeleniumTestCase include more robust error handling and better error messages.