Selenium functional tests mit PHPUnit

PHPUnit hat coolerweise eine Extension für Selenium Tests.

Dafür braucht man noch den PHP Client für die Selenium Remote Control.

pear install Testing_Selenium-0.4.3

Bei mir auf Debian Lenny, bzw. Mac OSX musste ich noch den include_path dafür anpassen,
damit phpunit Testing/Selenium.php gefunden hat.

Damit kann man mit PHP komfortabel einen Selenium Test Server über die Selenium RC ansprechen,
der dann beliebige Browser für functional Tests benutzt.

Der Selenium Server ist auch im Prinzip schnell installiert
und lokal ist das ganze einigermaßen unproblematisch, weil man ja schon mal die Browser seines OS zur Verfügung hat.

In einem Continuous Integration Setup möchte man aber vielleicht Selenium lieber auf einem Web Server laufen lassen.

Da sieht es dann erstmal weniger gut aus mit Browser executables.
Was also tun?

Eine Möglichkeit ist saucelabs.com.
Die bieten “Cross browser testing with Selenium in the cloud” an.
Sogar gratis für Firefox unter Linux.
Für die anderen Browser und OS muss man dann schon auf einen bezahlten Account umsteigen.

Dann einfach den saucelabs Selenium Server mit oben erwähnter Extension aus PHPUnit ansprechen:

Das Example.php Script von saucelabs

require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Framework/TestCase.php';

class Example extends PHPUnit_Framework_TestCase
{
    private $selenium;

    public function setUp()
    {
        $this->selenium = new Testing_Selenium(
            json_encode(array(
                "username" => "YOUR_USERNAME",
                "access-key" => "YOUR_ACCESS_KEY",
                "os" => "Windows 2003", 
                "browser" => "firefox",
                "browser-version" => "3.6.",
                "name" => $this->getName()
            )),
            "http://saucelabs.com", 
            "ondemand.saucelabs.com",
            80,
            90000);
        $this->selenium->start();
    }

    public function tearDown()
    {
        $this->selenium->stop();
    }

    public function testSauce()
    {
        $this->selenium->open("/");
        $this->assertEquals("Cross browser testing with Selenium - Sauce Labs",
                            $this->selenium->getTitle());
    }

}

und PHPUnit macht Selenium Tests:

phpunit Example.php

:)

One Reply to “Selenium functional tests mit PHPUnit”

  1. Hi! Ich habe deinen Blogpost mit grossen Interesse gelesen.

    Ich arbeite momentan für Sauce Labs und habe angefangen nebenbei einen deutschsprachigen Blog zum Thema Testautomatisierung zu führen. Speziell in Verbindung mit PHP hat sich auf Sauce Labs’ Seite eine Menge getan.

    Schau doch einfach mal rein: http://sourishkrout.de/2012/11/14/testautomatisierung-mit-selenium-und-php/

    Möchte in Zukunft auch über fortgeschrittenere Themen schreiben.

    Schöne Grüße aus San Francisco, Sebastian

Comments are closed.