Getting started

Choosing Driver

Selenium2 (with a browser)

It is recommended to run tests locally with the Selenium driver. Using the Selenium driver on a real browser allows you to see the tests running (as opposed to using a headless browser as detailed in the following sections).

You can download Selenium server from here, or install it as follows:

$ mkdir ~/jars
$ cd jars
$ wget http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar

You can then run it:

$ java -jar selenium-server-standalone-2.44.0.jar -browserSessionReuse -singleWindow

The -browserSessionReuse tells selenium NOT to close the window after every test and -singleWindow will cause Selenium not to use more than one window.

Note

You will need to install the Java Runtime Environment. On a debian based system you could do apt-get install default-jre

Selenium2 (headless, with PhantomJs)

Note

It is not currently recommended to run tests on PhantomJS - the results may be unpredictable.

PhantomJS can be installed with npm:

$ npm install phantomjs

You can then run it as follows:

$ phantomjs --webdriver=8643

Then you will need to copy the default behat.yml.dist to behat.yml and add the wd_host option as follows:

defaults:
    # ...
    extensions:
        # ...
        Behat\MinkExtension:
            sessions:
                default:
                    selenium2:
                        wd_host: "http://localhost:8643/wd/hub"

Sauce Labs

Our continuous integration system will run the tests on the Sauce Labs service. See Sauce Labs to find out how to run them yourself or for more information.

Running the tests

You can run all the tests as follows:

$ ./vendor/behat/behat/bin/behat -p <profile>

Where <profile> is one of:

  • selenium: Tests on your local machine via Selenium using a real browser above)

  • sauce_labs: Run the tests on Sauce Labs (see Sauce Labs).

Note

If you want to run the tests on your local machine with the default configuration you have to make sure that a Sulu instance is running on 127.0.0.1:8001. You can use the command ./app/console server:run 127.0.0.1:8001 –router=app/config/router_admin.php for that.

The tests are split up into a number of suites. There is one suite for each bundle, named after the bundle in lowercase, for example SuluContactBundle has the suite named contact.

Run specific suites as follows:

$ ./vendor/behat/behat/bin/behat --suite=contact -p <profile>

Further more you can filter for specific tests using the name option:

$ ./vendor/behat/behat/bin/behat --suite=contact --name="Create" -p <profile>

The above will run all scenarios in the contact suite which contain the word Create.