GitHub source

Setting up Selenium with chromedriver for PHPUnit tests was causing me some headaches. Lots of Googling and experimenting later I have it working stably and you can borrow all of the config/files I used from GitHub.

Let's get crackin'

Partially from GitHub





Linux Server/Vagrant

  • Run on your Vagrant box or server to automatically install all dependencies, and run selenium - this was tested on Ubuntu 14.04
  • Run PHPUnit: composer install; vendor/bin/phpunit
  • Look at all that green, oh yea!


If you know how to run this on Windows, please let me know or create a pull request!

Now for the tests


class SeleniumTests extends PHPUnit_Extensions_Selenium2TestCase {

    public function setUp() {
        $this->setHost('localhost'); // Our Selenium instance is on localhost
        $this->setPort(4444); // This is the default selenium port

        $this->setBrowser('chrome'); // We're using the chromdriver.  You can also use firefox or IE
        $this->setBrowserUrl(''); // What we're testing

    public function tearDown()
        $this->closeWindow(); // The class says we should have the 'close' method but we don't, so we're using closeWindow

    public function testGoogleSearchButtonExists() {

        $this->assertContains('Google Search', $this->source());

    public function testCanSearch() {

	$inputElement = $this->byName('q');
	$this->keys('Cheese Burger');

	$that = $this;

	// Wait until the AJAX loads the results (as we submitted the search form just above, so our chrome is currently AJAXing the results)
	$this->waitUntil(function() use($that) {
		return $that->byId('resultStats');
	}, 5000);

        $this->assertContains('McDonalds', $this->source()); // This is a dreadful test as McDonalds won't always be on the first page of Google Results :)