Test Automation tips - use a code source control system

As soon as the test automation project has more than a few scripts, the test automation process should start including a source control system.

This allows having different versions of the code, rolling back to a previous version, having a history of all code changes, etc.

It makes sense to use source control for test automation projects as these are development projects.

For source control, typical options are:

- Subversion (https://subversion.apache.org/) if you want to keep the code changes locally or on a server

- GitHub (https://github.com/) if the code should be stored online

Test Automation tips - store all locators in one class

When starting on test automation, a frequent mistake is that

each page object class file has its own locators defined as class members:

This can be corrected easily by 

moving the locators from all page object class files to a single locator class file.


A new class is created and the locators from all page object classes are moved into it:

The code from the test class is changed then to use the new locator class:

You can remove the locator members from the HomePageScripts class and just use the Locator class members directly in the WebDriver commands like

WebElement searchLabel = driver.findElement(By.xpath(Locators.searchLabelLocator));If both the Locators class and the page object classes are in the same package, nothing else is needed.

If they are in different packages, you will need to import the Locator class package in the page object class file.

Test automation tips - create the correct project folder structure

When starting on test automation, a frequent mistake is that 

all project files are created in the src folder of the Eclipse project:

The src folder includes 

- test classes (HomePageScripts.java)

- page object classes (HomePage.java and ResultsPage.java)

- any other project files

This can be corrected easily by creating folders in the project for specific purposes:


framework folder

            page object class folder

            locator class folder

test scripts folder


Before working on the project folder structure, lets investigate a bit the project:

- source java files are stored in the src folder

- class files (created when the source files are compiled; the class files are needed for executing the code) are stored in the bin folder

The classpath file has 2 rules for this:

- first rule says that the source files are in the src folder

- the second rule says that, by default, all class files are created in the bin folder

Multiple steps are needed for getting the correct project structure:

1. remove the existing classpath entries

2. create a test folder under the src folder: src/test

3. add the following classpath entry

This rule means that for all java files from src/test, the class files will be created under target/test-classes.

4. build the project.

the target/test-classes folders are created as a result of the project build:

5. create the com.testproject.java package under the src/test folder:

6. move the HomePageScripts.java file to src/test/com/testproject/java

7. build the project

8. the following folders are added under target/test-classes: com/testproject/java

the HomePageScript.class file is stored in target/test-classes/com/testproject/java:

9. similarly, create a main folder under src

10. add a new entry to classpath for the src/main folder

This rule says that for all java files stored under src/main, the class files will be created under target/classes.

11. build the project

12. the target/classes folder is created

13. add the following package to src/main: com.testproject.java.framework.pageobject

14. move the page object class (HomePage.java) to the src/main/com/testproject/java/framework/pageobject

15. build the project and confirm that the class file is created in target/classes/com/testproject/java/framework/pageobject:

16. add the following package to src/main: com.testproject.java.framework.locators

17. move the Locators.java file to src/main/com/testproject/java/framework/locators

18. build the project

19. confirm that the Locators.class file is created in target/classes/com/testproject/java/framework/locators

20. open all java files and add the packages where different classes are stored:

21. run the project

At this moment, the project structure is much better than when we started:


    MAIN  --> folder used for framework files







   TEST  --> folder used for the test scripts