SeleniumCucumber
SeleniumCucumber copied to clipboard
BDD framework for automation using Selenium Cucumber and TestNg
Selenium Framework with Cucumber
BDD framework for automation using Selenium Cucumber and TestNg
The framework has following features
- Modular Design
- Maven based framework
- Log4j enabled for logging
- Report Generation (cucumber-reporting)
- Helper class to handle web component such as (Button,Link etc)
- Centralized Configuration (Using Properties file)
- POM
- Hooks for different browser support (using tag @chrome,@firefox...)
YouTube Playlist
- Cucumber Framework https://www.youtube.com/playlist?list=PLlsKgYi2Lw73j-yB8SBzrUBpMYL1Jr3M7
- TestNg https://www.youtube.com/playlist?list=PLlsKgYi2Lw73Cs109qNoAc-V0rDnXzpAY
Here is the basic code:
To use the class for handling the web component create the object and use it
GridHelper grid = new GridHelper(driver);
grid.typeInGrid(item,GridLocator.cartId,1,1,qty);
Add the Feature file
Add the feature file under test\resources\featurefile
Feature: Adding a laptop to the Cart
@chrome
Scenario: Search Laptop and add it to the cart
Given : I am at the home page
When : I click on the "Laptops" search filter
Then : I should be at the "Laptops" search page with "35 items"
And : The title should be "Laptops" search page
Then : I select the "APPLE MacBook Pro Retina" with description as "15-inch, 256GB"
And : Add it to the cart
Then : Navigate to user details page and provide the following details
| Destination | Singapore |
| Airline | AirAsia |
| FlightNo | A089 |
| FlightDate | 24/08/2016 |
| FlightTime | 5:00 |
| Terminal | Terminal 1 |
| FirstName | Selenium |
| LastName | Java |
| Email | [email protected] |
| Phone | 121212121 |
use the tag @chrome
to launch the specific browser or no-tag to use the browser form the config.properties
file
Create the Runner
/**
* @author rahul.rathore
*
* 14-Aug-2016
*/
package com.cucumber.framework.runner;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(features = { "classpath:featurefile/Search.feature" }, glue = {
"classpath:com.cucumber.framework.stepdefinition",
"classpath:com.cucumber.framework.helper" }, plugin = { "pretty",
"json:target/SearchFeatureRunner.json" })
public class SearchFeatureRunner extends AbstractTestNGCucumberTests {
}
Use the testng.xml file to run the test cases
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener
class-name="com.cucumber.framework.listeners.reportlistener.CucumberReport" />
</listeners>
<test name="Test - 1">
<classes>
<class name="com.cucumber.framework.runner.SearchFeatureRunner" />
<class name="com.cucumber.framework.runner.LaptopFeatureRunner" />
<class name="com.cucumber.framework.runner.TabletFeatureRunner" />
<class name="com.cucumber.framework.runner.SearchWithFilterRunner" />
</classes>
</test>
</suite>
To see this whole thing running simply checkout this project and run this command:
mvn clean generate-sources test
Cucumber Report
There is a feature overview page:
And there are also feature specific results pages:
And useful information for failures:
If you have tags in your cucumber features you can see a tag overview:
And you can drill down into tag specific reports: