This project is a base project for Java-Selenium-Cucumber Test Automation Projects.
It includes processes such as parallel execution and rerunning failed test cases. Allure Report is used for reporting.
- Java/Javascript - Development Language
- IntelliJ IDE - Development IDE
- Maven - Package Management
- Cucumber - Gherkin Syntax Framework
- Selenium - Web APP Test Automation Tool
- TestNG - Web App Test Automation Tool and Testing Framework
- Initiate a Selenium-Java Setup documentation
- Browser documentation
- Element documentation
- To install the necessary libraries , the following command is run in the project directory.
mvn clean install
mvn clean test
mvn clean test -Dtest=Runner -D"cucumber.filter.tags=@regression" -Dheadless=true -DthreadCount=5
mvn clean test -D"cucumber.filter.tags=@register" -Dheadless=true -DthreadCount=5
Example for @register
tag:
mvn clean test -D"cucumber.filter.tags=@register"
allure serve allure-results
.
|-- src
| |-- test
| | |-- java
| | | | |-- config
| | | | | |-- BaseConfig
| | | | |-- pages
| | | | | |-- BasePage
| | | | | |-- HomePage
| | | | | |-- SignUpPage
| | | | |-- runners
| | | | | |-- Runner
| | | | |-- stepDefinitions
| | | | | |-- BaseSteps
| | | | | |-- HomeSteps
| | | | | |-- Hooks
| | | | | |-- SignUpSteps
| | | | |-- utilities
| | | | | |-- DataGenerator
| | | | | |-- LogUtil
| | | | | |-- PageHelper
| | | | | |-- ResourceFileReader
| | |-- resources
| | | |-- features
| | | | |-- register.feature
|-- git.ignore
|-- pom.xml
|-- testng.xml
|-- README.md
We use camelCase
for identifier names (variables and functions).
Use PascalCase
only when naming constructors or classes
All names start with a letter.
At the bottom of this page, you will find a wider discussion about naming rules
folder name = my_folder
js file name = my_file.js
feature file name = my_feature.rb
class name = MyClass
function name = myMethod
variable name = myVariable
element name = btnMyElement, lblMyElement, txtMyElement
Enum = ALL_CAPITAL = 'value'
Constant = MY_CONSTANT
tag name = @my_tag
Prefix | Example | Locator |
---|---|---|
btn | btnLogin | Button |
chk | chkStatus | Checkbox |
cbx | cbxEnglish | Combo box |
lbl | lblUsername | Label |
drp | drpList | Drop down |
slc | slcList | Selectbox |
txt | txtEmail | Textbox |
img | imgLogo | Image |
rdx | rdxFemale | Radiobox |
Prefix | Action | Description |
---|---|---|
click | clickRegister | Click button or link |
fill | fillEmail | Type textbox |
check | checkGender | Check a check box |
select | selectYear | Select value from drop down |
verify | verifyMenu | Assertion |
- Scenarios will be written in
feature
file. - The syntax
Given, When, Then, And
will be used. - At the beginning of the feature file, after the
Feature
keyword, the relevant feature will be named.. - Scenarios will be written after the
Scenario
keyword. Scenario name must be unique. - Each scenario should be tagged. Relevant tags should be placed at the top of the script. Like @regression, @smoke.
- The following sample scenario will be followed while the scenario steps are being written.
Given prerequisite
And if there are additional conditions
When the action is taken
And if there is additional action
Then where relevant verifications are made
And additional verifications
Scenario Example
Given homepage is opened
And click login button
And fill the valid credentials
When click login button
Then verify my account icon
And verify the title is changed to "My Title"
- action + object + location
And click login button on homepage
- action + object + value + location
And set email with "[email protected]" on homepage
- verification action + object + location
Then verify the new address on my delivery addresses page
- verification action + object + value + location
Then verify the new address title is "Home" on my delivery addresses page
@wip = Scenario / feature that has not been developed yet
@smoke = Scenario / feature expected to work within the scope of Smoke
@excluded = Scenario / feature that no longer exists on the application, but whose scenario has been improved
@bug_fix = Scenario / feature pending bug fix due to an existing bug on the application
@prod = Scenarios to run in the prod
@regression = Scenarios to run in the regression
@feature_tag = The tag name to be given to each feature file
@scenario_tag = The tag name to be given to each scenarios
* Branch names must be opened with the ticket id of the job. Example: QA-74
* As much as possible, commits should be committed with clear explanations.
* Commit should be progressed in as small pieces as possible (Atomic). This will make the rollback easier.
* It will be merged into the master after the review of the obligatory reviewers from the PR QA team.
* Before merging to the master, the pipeline will be run on the relevant branch and it will be verified that there is no problem.