Japanese / English
Selenium Auto Exec Server(AES) is a tool to do a continuous regression test by Selenium.
Selenium AES aims help of the test in the project.
If Selenium AES is used, the test of the HTML form of Selenium is executed at the time decided every day, and the result can be transmitted with mail.
Various functions to help the regression test that uses Selenium are offered.
Selenium AES enhances Selenium RC and is made.
Moreover, the one named Selenium HTMLSuite Extension is opened to the public as a tool that improves convenience to HTMLSuite of Selenium RC, and Selenium AES uses this library.
(Selenium HTMLSuite Extension was made during the development of Selenium AES.)
Selenium AES has the following functions.
The test can be executed automatically at the time decided every day.
After the test case is acquired from the repository of Subversion, the test can be executed when beginning to test.
As a result, time when the test case is arranged in the machine for the test can be saved.
The test result can be transmitted as Mail(SMTP).
Test result is attached to this mail.
The test situation can be confirmed on a browser.
Moreover, the execution of the test can be directed on a browser.
It is also possible to operate in cooperation with other CI servers because there is API to direct the execution of the test with HTTP.
The plug-in is prepared for Hudson.
Jar that becomes a client to execute API of Selenium AES from the command line etc. is being offered, too.
Corresponding HTMLSuite to a specific file pattern ("suite" or "Suite" is included in the file name) in a specified directory can be collectively executed.
HTMLSuite need not be made.
HTMLSuite to execute those test cases can be generated with making the test case by a specific file pattern ("case" or "Case" is included in the file name) automatically, and it execute it.
It can be specified that the same test case is executed by two or more browsers.
Java Runtime Environment (JRE1.5 or more) is required.
I think that OS operates by Windows, Unix/Linux, and Mac OS X as well as Selenium RC.
(It is a confirmed operation in Windows XP and Mac OS X. )
The source code under development can be obtained in the following.
The downloaded zip file is defrosted.
(In the defrosted state, the test that uses Firefox and IE to http://www.google.com/ as a sample can be executed. )
Configuration file (setting.properties) is adjusted responding to the environment used.
The content of the configuration file is as follows.
Item | Required | Content |
---|---|---|
browser | Required |
An execution browser of the test is specified. The plural can be specified by switching off the comma district. etc: *iexplore,*firefox,*opera,*safari |
startURL | Required | URL that begins testing is specified. |
generateSuite | - |
"false" is specified when not doing "true" when automatic of HTMLSuite generating it. (Default is "true". ) The file that attaches "Case" or "case" in the directory specified with suite is judged to be HTML of the test case, and the HTMLSuite file is made. Please refer to the column of "suiteDir" for details. |
suiteDir | - |
The directory of test case and HTMLSuite are specified (The relative path is OK). The test case and HTMLSuite executed by setting generateSuite change. [The directory name is specified. (The test case is in a specified directory. ) : generateSuite=true or non set.] HTML of the test case is retrieved from a specified directory, HTMLSuite is made for this directory with the file "generatedTestSuite.html", and it executes it. [The directory name is specified. (The test case is not in a specified directory.) : generateSuite=true or non set.] HTMLSuite of each directory under the control of a specified directory is made when there is no test case in a specified directory. The file name of HTMLSuite becomes <directory name>.html. It is convenient to make HTMLSuite separately by the function. [File name specification : generateSuite=true or non set.] HTMLSuite is generated with the specified file name automatically. The test case becomes an object in the same directory as specified HTMLSuite. [generateSuite=false] HTMLSuite is retrieved ("Suite" or "Suite" is included in the file name), and executed in the directory. |
suiteRepo | - |
It is repository (Subversion) at the destination of the acquisition of the test case and HTMLSuite. It arranges it in the directory from the specified repository from which the file is specified with the import doing and suiteDir. |
suiteRepoUsername | - | It is an user-name of repository (Subversion) at the acquisition destination. |
suiteRepoPassword | - | It is a password of repository (Subversion) at the acquisition destination. |
permanentResult | - |
"true" is leave test result. When the test result is referred back, it is necessary to note it because a past test result cannot be referred when "false" is specified (The test result is always overwrited). |
resultDir | - |
The directory that outputs the test result is specified. The file of the test result is output under the control of a specified directory as "<test execution time *>/<browser name>/<HTMLSuite name>_result.html." (* The test execution time is not included in passing for permanentResult=false. It will always be output to the same directory.) It operates assuming that "Result" is specified when omitting it. |
autoExecTime | - |
execution time of day. The test is executed automatically at the time specified here every day. It specifies it with "hh:mm". (example: 1:00 and 14:30) |
port | - |
The port number in which the Selenium server is started is specified. Default is 4444. |
timeout | - |
The timeout period (second) when HTMLSuite is executed is specified. Default is 1800 seconds. |
singleWindow | - |
When "true" is specified, the test is executed in single window. |
debug | - | When "true" is specified, a detailed log (debugging log) is output. |
log | - | To output the log to the file, the file name is specified. |
userExtensions | - | User extension file of Selenium described by JavaScript. |
proxyHost | - |
The host of the proxy used is specified. |
proxyPort | - |
The port number of the proxy used is specified. |
avoidProxy | - | When "true" is specified, requests other than "/selenium-server" come not to be received with the Selenium server. |
firefoxProfileTemplate | - | The profile directory used with Firefox is specified. |
mail.host | - |
It is a host name with the mail server used when the test result is transmitted. It is transmitted with SMTP. The setting example concerning mail is described later, and give that to me in the reference in detail, please. |
mail.port | - |
It is a port number of the mail server used when the test result is transmitted. default is 25(standard port of SMTP). |
mail.ssl | - | When SSL is used by Mail Sending, "true" is specified. |
mail.username | - | It is an user-name used for the authenticate at Mail Sending. |
mail.password | - | It is a password used for the authenticate at Mail Sending. |
mail.to | - | It is a destination address of the test result mail. |
mail.from | - | It is a from address of the test result mail. |
mail.subject | - |
It is a subject of test result mail format. The variable named ${result} can be used. ("passed" and in case of failure "failed" when test result is normality) Default is the following formats. Selenium Test Report [${result}] |
mail.debug | - | When "true" is specified, the DEBUG log of Mail Sending is displayed in the console. |
beforeCommand | - | The command executed before it begins to test is specified. |
afterCommand | - | The command executed after the test ends is specified. |
trustAllSSLCertificates | - |
When "true" is specified, all SSL certificates are trusted. If this option is not specified when warning goes out by the SSL certificate that the server to be examined offers, it becomes an error. |
When the test case and HTMLSuite are acquired from the repository of Subversion, information on the repository is set to suiteRepo, suiteRepoUsername, and suiteRepoPassword of the configuration file.
# Repository URL where test case and HTMLSuite are arranged suiteRepo=http://192.168.0.1/svn/trunk/selenium/ # user/password to access the above-mentioned repository(When the attestation is unnecessary, you may not set anything. ) suiteRepoUsername=devuser suiteRepoPassword=devpass
The file of latest revision is acquired from a specified repository when the test is executed by setting it like the above-mentioned, and import is done to the directory specified for suiteDir of the configuration file.
The test case is arranged in a specified directory by hand power when not cooperating with Subversion.
In the defrosted state, the test case of the sample is arranged. Please delete it when actually using it by the project.
Start Selenium AES.
"start.bat" is executed for Windows. "start.sh" is executed for Linux.
If "Start Selenium Auto Exec Server" is displayed in the console, it is start completion.
The execution environment of Java (JRE1.5 or more) is needed for the execution of Selenium AES.
The test can be executed as follows by various methods.
It can be set that it executes it at the time decided every day.
The time that wants to be executed is specified for autoExecTime of the configuration file.
autoExecTime=1:30
It is executed at 1:30 every day when setting it as stated above.
It accesses the machine that starts Selenium AES from a browser, and the test can be executed on a browser.
URL is "http://<Machine that starts Selenium AES>:<Port number specified with "port" of configuration file>/selenium-server/autoexec/"
The following are URL when it refers by a browser on the machine that starts Selenium AES (Specification is not in port of the configuration file (Become 4444 of the defaults)).
http://localhost:4444/selenium-server/autoexec/
When the "Run Test" button is pressed on this screen, the test is executed. (Additionally, the content that can be confirmed on the screen is described later. )
To start Selenium AES from Hudson that is the CI tool, the plug-in is being offered.
The plug-in can be installed from the plug-in update center of Hudson.
The execution of Selenium AES can be added by using the plug-in as Bild procedure.
And, it comes to be able to refer to the execution result of Selenium AES on Hudson.
The jar file for the client is bundled. (selenium-autoexec-client-*.jar)
The test can be executed from the command line by using this.
"http://<Machine that starts Selenium AES>:<Port number specified with "port" of configuration file>/selenium-server/autoexec/" specified for a parameter.
java -jar selenium-autoexec-client-1.2.jar http://localhost:4444/selenium-server/autoexec/command/
Only when the execution of the test is instructed without waiting for the result of the test, "-a" is specified for a parameter.
java -jar selenium-autoexec-client-1.2.jar -a http://localhost:4444/selenium-server/autoexec/command/
Class (com.enjoyxstudy.selenium.autoexec.client.SeleniumAutoExecRemoteTest) that executes it as a test case of JUnit is included in jar file (selenium-autoexec-client-*.jar) for the client.
The test can be executed by using this as one of the test cases.
Bildfile to execute this with Ant is described to the following as an example.
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="junit-test" name="selenium-autoexec-client"> <path id="classpath"> <pathelement location="selenium-autoexec-client-1.2.jar"/> </path> <target name="junit-test"> <mkdir dir="junit-dist"/> <junit fork="yes" printsummary="withOutAndErr"> <!--<sysproperty key="seleniumaes.async" value="true"/>--> <sysproperty key="seleniumaes.url" value="http://localhost:4444/selenium-server/autoexec/command/"/> <formatter type="plain"/> <test name="com.enjoyxstudy.selenium.autoexec.client.SeleniumAutoExecRemoteTest" todir="junit-dist"/> <classpath refid="classpath"/> </junit> </target> </project>
The execution of the test can be directed by the HTTP request by using API.
All these API is used excluding regular execution and it operates it.
URL is "http://<Machine that starts Selenium AES>:<Port number specified with "port" of configuration file>/selenium-server/autoexec/command/run".
The following are URL when it refers by a browser on the machine that starts Selenium AES (Specification is not in port of the configuration file (Become 4444 of the defaults)).
http://localhost:4444/selenium-server/autoexec/command/run
The following test results are returned as body of the response.
result: passed number of cases: passed: 2 / failed: 0 / total: 2 start time: 2008-11-08 22:11:15 end time : 2008-11-08 22:12:02 ---------------------------------------------- generatedTestSuite.html: *firefox: passed generatedTestSuite.html: *iexplore: passed ----------------------------------------------
first line is "result: passed" for test passed. "result: failed" for test failed.
"type=json" is applied to query, the result is returned by the JSON form. (Undergone plastic operation on the following as seen easily. )
{ "result" : "passed", "totalCount" : 2, "passedCount" : 2, "failedCount" : 0, "startTime" : "2008-11-08 22:40:42", "endTime" : "2008-11-08 22:41:04", "suites" : [ { "suiteName" : "generatedTestSuite.html", "resultPath" : "/selenium-server/autoexec/result/20081108224042/firefox/generatedTestSuite_result.html", "browser" : "*firefox", "status" : "passed" }, { "suiteName" : "generatedTestSuite.html", "resultPath" : "/selenium-server/autoexec/result/20081108224042/iexplore/generatedTestSuite_result.html", "browser" : "*iexplore", "status" : "passed" } ] }
Only when the execution of the test is instructed without waiting for the result of the test, it specifies "/selenium-server/autoexec/command/run/async" for URL.
http://localhost:4444/selenium-server/autoexec/command/run/async
"result: success" is returned as body of the response at the acceptance completion.
The execution situation and the test result can be referred to on a browser.
URL is "http://<Machine that starts Selenium AES>:<Port number specified with "port" of configuration file>/selenium-server/autoexec/".
The following are URL when it refers by a browser on the machine that starts Selenium AES (Specification is not in port of the configuration file (Become 4444 of the defaults)).
http://localhost:4444/selenium-server/autoexec/
The content is updated as for this screen every 30 seconds.
The content of each display item is as follows.
Item | Content |
---|---|
status |
It is a state of Selenium AES.
|
result |
It is an execution result of the test.
|
number of cases |
It is a detail of the test result. The number of HTMLSuite of each results and the total of HTMLSuite are displayed. |
start time | It is a start time of the test. |
end time | It is a end time of the test. |
It is a content of the item of each HTMLSuite.
Item | Content |
---|---|
suite |
It is HTMLSuite file name. It changes to a detailed screen of the test result when the link is clicked. |
browser | It is an execution browser name. |
status |
It is a state of HTMLSuite.
|
The item described to the configuration file is different according to the setting of the mail server used.
The setting example is described to the following.
# server name mail.host=smtp.enjoyxstudy.com # The following are set, except when the port number is 25. #mail.port=925 # to address mail.to=dev-ml@sample.enjoyxstudy.com # from address mail.from=report@sample.enjoyxstudy.com
The authentication information is specified with "mail.username" and "mail.password".
# server name mail.host=smtp.enjoyxstudy.com # The following are set, except when the port number is 25. #mail.port=925 # authentication user name mail.username=userhoge # authentication password mail.password=paspaspas # to address mail.to=dev-ml@sample.enjoyxstudy.com # from address mail.from=report@sample.enjoyxstudy.com
It comes to use SSL by setting "true" to "mail.ssl".
# server name mail.host=smtp.enjoyxstudy.com # server port number mail.port=465 # use SSL mail.ssl=true # authentication user name mail.username=userhoge # authentication password mail.password=paspaspas # to address mail.to=dev-ml@sample.enjoyxstudy.com # from address mail.from=report@sample.enjoyxstudy.com