Project WONDER-Frameworks-ERSelenium

Version 36.1 by Kieran Kelleher on 2007/09/18 12:49

Really Quick Start

You can also use Selenium IDE to create and edit tests:

Success

Opening Tests in Selenium IDE

You need to select Selenese in the Options -> Format submenu before the Selenium IDE will allow you to open tests in the Selenese format

!Picture 4.jpg!

  • Play around with test cases from ERSeleniumExample/Resources/Selenium/ using Selenium IDE.

Overview and Usage Notes

ERSelenium provides several features for effective use of SeleniumCore with WebObjects applications including:

  • Custom setup/teardown actions that can be run before/after each test.
  • Base URL independence.
  • Support of HTML and Selenese test formats (Java support is planned).
  • "On-the-fly" generation of test suites from the files in your project's source tree.
  • Bookmarkable DirectAction url to run all tests (can be used for automated testing).
  • Metacommands (special instructions specified in comments).

SeleniumCore is the powerful javascript toolkit for web applications "black-box" testing. It emulates different kinds of user actions such as: clicking the hyperlink, editing text in the input field, choosing item from the list and so on.

Using ERSelenium

You can use ERSelenium directly from workspace:

  1. Specify it as your project's workspace dependency .
  2. Enable it in the project's Properties file:

SeleniumTestsEnabled=true

Debug output of ERSelenium can be enabled in Properties by:


log4j.logger.er.selenium = DEBUG

Other ERSelenium properties:

  • SeleniumTestsRoot="SomeOtherPath"  change the tests location. By default ERSelenium will search for tests in "Resources/Selenium".
  • SeleniumReportPath="PathName"  specified the path to the report file, which is created after the testing is done. "./Contents/Resources/" is the default value.

In your SeleniumTestsRoot folder (Resources/Selenium by default) you should create tests hierarchy. Tests are divided into groups, each group is located in its own folder. In each folder there should be a collection of test files, each in one of the formats, supported by ERSelenium. Example hierarchy:


./Resources
  ./Selenium
    ./registration
      ./successful.sel
      ./alreadyexists.sel
    ./shop
      ./buyitem.html
      ./notenoughmoney.html
      ./transfer.sel

You can use both standard HTML and wiki-like Selenese formats for writing tests although Selenese format is usually a preferred choice.

To run all tests point your browser to SeleniumStartTesting Direct Action:
http://baseurl/wa/SeleniumStartTesting

Example:
http://127.0.0.1/cgi-bin/WebObjects/SampleProject.woa/-42421/wa/SeleniumStartTesting

To run a specific group of tests, add "/TestGroupName":


http://baseurl/wa/SeleniumStartTesting/TestGroupName
http://127.0.0.1/cgi-bin/WebObjects/SampleProject.woa/-42421/wa/SeleniumStartTesting/registration

Some tips for writing tests for ERSelenium

  • Don't use full URLs with open/openWindow commands (http://baseurl part will be added by ERSelenium):

|open|/wa/EditPerson|
|open|/|
  • You can use setup/teardown methods. They should be implemented as direct actions in the separate class, which should be er.selenium.SeleniumAction-descendant. SeleniumAction class has some handy helper methods and automatically turns your selenium-related actions off when selenium is disabled in Properties. Here's the example of using selenium-related direct actions in the test (suppose that resetSessionAction() is defined in the class "Selenium"):

|open|/wa/Selenium/resetSession|
  • You can use @repeat-@values-@done metacommands to execute specific part of the test with additional values edited in textboxes, e.g.:

@repeat
    
...some actions...
    
@values user1 user2 user3
    
|type|user|user0|
    
@values pass1 pass2 pass3
    
|type|password|pass0|
    
...some more actions...
  
@done

The commands between @repeat and @done will be repeated several times, each time with new value in "user" and "password" input field. The values are seperated by spaces and if you have multiple @values lines, they all must have the same number of parameters. The @values section applies to the value of the next command.

Note: in Selenese format, lines that don't begin with "" are treated as comments, so metacommands in the example above will be safely processed by Selenium IDE.

  • Selenium IDE Firefox plugin and XPath Checker can be very handy for creating and editing Selenium tests. Selenium IDE Selenese source plugin with proper comments support resides in ERSelenium/Resources/selenese-ide-plugin.js.