TestRunner Reference

Test Suites

A test suite is represented by an HTML document containing a single-column table. Each entry in the table should be a hyperlink to a test-case document. The first row will be ignored by Selenium, so this can be used for a title, and is typically used to hold a title.

By default Selenium will attempt to load the test-suite from "tests/TestSuite.html". An alternative test-suite source can be specified by appending a "test" parameter to the TestRunner.html URL, e.g.:

http://localhost:8000/TestRunner.html?test=AllTests.php

The "test" URL is interpreted relative to the location of TestRunner.html.

Test Cases

A test-case is represented by an HTML document, containing a table with 3 columns: command, target, value. Not all commands take a value, however. In this case either leave the column blank or use a   to make the table look better.

The first row will be ignored by Selenium, so this can be used for a title or any other information.

Example:

Simple Test Table
open /mypage  
type nameField John Smith
click submitButton True
verifyText name John Smith

SetUp / TearDown

There are no setUp and tearDown commands in Selenium, but there is a way to handle these common testing operations. On the site being tested, create URLs for setUp and tearDown. Then, when the test runner opens these URLs, the server can do whatever setUp or tearDown is necessary.

Example:

For the T&E project, we wanted the functional tests to run as a dummy user. Therefore, we made a /setUpFT URL that would create a dummy user and write the userID to the page. Then, we can store this value (using the command storeValue) and use it in the script. Finally, we made a /tearDownFT URL which takes the dummy userID as a parameter and deletes the user. Therefore, our tests look like this:

Setup and Teardown
open /setUpFT  
storeValue userid  
open /login  
type userID ${userid}
click submit  
open /tearDownFT?userid=${userid}  

Continuous Integration

Selenium can be integrated with an automated build. When the parameter "auto=true" is added to the URL, Selenium will run the entire suite of tests, and then post the results to a handling URL. The default URL is "/postResults", but an alternative handler location can be provided by specifying a "resultsUrl" parameter.

The fields of the post are:

Parameter Description
result the word "passed" or "failed" depending on whether the whole suite passed or at least one test failed.
totalTime the time in seconds for the whole suite to run
numTestPasses tht total number of tests which passed
numTestFailures the total number of tests which failed.
numCommandPasses the total number of commands which passed.
numCommandFailures the total number of commands which failed.
numCommandErrors the total number of commands which errored.
suite the suite table, including the hidden column of test results
testTable.1 the first test table
testTable.2 the second test table
... ...
testTable.N The Nth test table
Therefore, the steps for continuous integration are:
  1. Create a servlet-type application at the url /postResults which can read the parameters above and write them to a file

  2. Create a script which can start up a brower and send to to the URL: selenium?auto=true
  3. Make your continuous build:
    • Call the script from step 2, preferably using more than one browser
    • Wait for it to finish, possibly by checking for the existence of the file(s) from step 1
    • Parse these files to determine whether the build passed or failed
    • Act accordingly (send emails, update a build web page, etc.)

Authors:Paul Gross, Jason Huggins
Created Date:08/23/2004
Modified Date:28/01/2005
Created With:reStructuredText: http://docutils.sourceforge.net/rst.html