blob: 10a60a8d5d7df89c500451942c7889c31fc55748 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
This file is tests/etc/selenium/tests/readme.txt
You can run Selenium web unit tests in one of two ways:
1) Automatically, using Ant
2) Manually, using Selenium IDE (a Firefox plugin)
RUNNING SELENIUM TESTS AUTOMATICALLY
------------------------------------
Here's a quick start to selenium web unit tests
* Type 'ant webtests' from the command line
RUNNING SELENIUM TESTS MANUALLY IN FIREFOX
---------------------------------
Start Tomcat and deploy the test-custom WAR.
Start the Selenium server...
java -jar tests/lib/selenium-server-standalone-2.25.0.jar -interactive
Open Firefox.
Set the browser proxy to localhost:4444
Open URL:
chrome://selenium-ide/content/selenium/TestRunner.html?test=file:///Users/arj/workspace/JSPWiki-SVN/tests/build/selenium/test-custom/JSPWikiTestSuite.html&baseURL=http://localhost:8080
CREATING TESTS
--------------
Selenium-IDE is the preferred way to create test files. The master
test suite file is tests/etc/selenium/tests/TestSuite.html.
You can add a new test file (such as one recorded in Selenium-IDE) to
the suite file by appending a table row like this:
<tr><td><a href="./JSPWikiTestAnonymousView.html">JSPWikiTestAnonymousView</a></td></tr>
Add the new test file (in this case, JSPWikiTestAnonymousView.html) to the test
directory (tests/etc/selenium/tests).
However, simply adding the file to the suite is NOT enough. To make it run
for all of the five sample webapp contexts we test (test-custom, test-container, etc),
you MUST add a short preamble to each test file so that the Selenium-RC
test runner starts at the correct URL. Here is that preamble:
<tr><td>store</td> <td>/@selenium.context@</td> <td>baseUrl</td></tr>
<tr><td>open</td> <td>$${baseUrl}/Wiki.jsp?page=Main</td> <td>&nbsp;</td></tr>
The first line is important: at build time (that is, when the Ant webtests
target executes), the @selenium.context@ variable will be replaced with the
correct test context (e.g., test-custom). You MUST ensure that the first
Selenese 'open' command (such as the one shown in the second line, above)
opens to the correct context. Setting, then using, the ${baseUrl} property
is the recommended way.
To put it simply: just make sure you add somethign similar to the two lines shown above
to the top of your test, and you should be good to go.
You need to keep in mind two other issues:
1) Creating unique resources for each test
2) Restoring the correct session state at the end of your test
Web unit tests should NOT make any assumptions about what wiki pages, users and groups
are present in the test context, other than these:
Users: janne, admin, user
Groups: Admin
Pages: Main
If you need to run tests that create, delete or rename users, groups or pages,
you should always write tests that use unique names for those resources.
The best way to do this is to store a unique value in a variable, then
use the value of that variable in your script. Generating unique values is easy:
<tr><td>store</td> <td>javascript{'Test-group-'+new Date().getTime()}</td> <td>group</td></tr>
(from JSPWikiTestCreateGroupWikiName.html)
Second, you should make sure that a particular unit test doesn't hose the next one, and
restore the user session to an anonymous state. Make sure your unit test includes
the following Selenese at the end of the test script:
<!-- Log out -->
<tr><td>clickAndWait</td> <td>link=Log out</td> <td>&nbsp;</td></tr>
BUILD NOTES
-----------