| Feature | 59 |Description | 60 |
|---|---|
| JUnit based | 63 |For use ONLY with JUnit 4.11 or higher because of the usage of the parameterized capability of JUnit. 64 | This dependency is configured by the Gradle build script. | 65 |
| Parallel runner using JUnit |
68 | A parallel runner using the Gradle maxParallelForks method. | 69 |
| Native automation support | 72 |For use with Sikuli 1.0.1 or higher to test native elements that WebDriver "Action" is unable to 73 | control. This dependency is configured in the Gradle build script. If you implement this however, you 74 | may not be able to use the remote webdriver option in your project. | 75 |
| Uses RemoteWebDriver JSON Hub Server |
78 | I have included an implementation of a WebDriverServer class that starts a RemoteWebDriver JSON 79 | Hub server instance in the BeforeClass method of tests. This server is a static member of the utility 80 | class that the tests extend. | 81 |
| Parameterized data driven capability |
84 | Unit tests are parameterized from a csv file. Can also load tests from XML, XLS, a database, etc. | 85 |
| Logging and Reporting | 88 |Logs test output to console and to a file using SLF4j/LogBack API, and configured by a logback.xml 89 | file. Will generate reports of JUnit test results at build/reports/test/index.html . Will place a 90 | junit.log file at build/logs/junit.log . | 91 |
| Page Object design pattern |
94 | Uses the WebDriver "page object" design pattern, enhanced by the Selenium "LoadableComponent" 95 | extendable class. | 96 |
| Fluent API design pattern |
99 | Implemented examples of the Fluent API design pattern while retaining capability of 100 | the traditional page object pattern. | 101 |
| Multi-project build configuration |
104 | Implemented multiple project build. The root project has a subproject called "core" and all 105 | subprojects of "core" inherit classes from it. | 106 |
| Run Options | 109 |You have three different options for running the tests: via the Gradle GUI, via your IDE Gradle 110 | plugin, or via Gradle command line. To run with the JUnit runner in your IDE, you would need to manually 111 | export your project as a normal Java project, because this template does not support that. | 112 |
| Core utility package | 115 |All projects inherit from a "core" project that contains classes where you can store methods 116 | that all of your projects can share between them. | 117 |
| Feature | 124 |Description | 125 |
|---|---|
| Gradle Wrapper | 128 |Did not choose to implement the Gradle wrapper because I believe that downloading Gradle and 129 | configuring GRADLE_HOME and PATH are easy enough. Also, a manual setup of Gradle gives us more 130 | control using a batch script. Also, the development IDE is usually configured to use the 131 | statically defined Gradle home. | 132 |
| Jar executable option | 135 |Creates an uberJar of all projects and subprojects that can be ran by double clicking 136 | the .jar file. If you don't have the file association supporting it, we include a 137 | jarAssociation.bat file to setup the file association on your Windows system. I was planning 138 | to implement this but currently having trouble getting it to work. | 139 |