Skip to content

Commit cc6302a

Browse files
Add files via upload
1 parent 437e6c7 commit cc6302a

17 files changed

+541
-0
lines changed

docker-compose.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
mvn:
2+
3+
image : markhobson/maven-chrome:jdk-18
4+
volumes:
5+
- ./:/usr/src/mvn-src
6+
working_dir: /usr/src/mvn-src
7+
command: mvn clean test -Dmaven.wagon.http.ssl.insecure=true
8+

pom.xml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>rahulshettyacademy</groupId>
8+
<artifactId>CucumberFramework</artifactId>
9+
<version>0.0.1-SNAPSHOT</version>
10+
<packaging>jar</packaging>
11+
12+
<name>CucumberFramework</name>
13+
<url>http://www.example.com</url>
14+
15+
<properties>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
<maven.compiler.source>1.8</maven.compiler.source>
18+
<maven.compiler.target>1.8</maven.compiler.target>
19+
20+
</properties>
21+
22+
<dependencies>
23+
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
24+
<dependency>
25+
<groupId>io.cucumber</groupId>
26+
<artifactId>cucumber-java</artifactId>
27+
<version>7.2.3</version>
28+
</dependency>
29+
30+
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
31+
<dependency>
32+
<groupId>commons-io</groupId>
33+
<artifactId>commons-io</artifactId>
34+
<version>2.11.0</version>
35+
</dependency>
36+
37+
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
38+
<dependency>
39+
<groupId>io.github.bonigarcia</groupId>
40+
<artifactId>webdrivermanager</artifactId>
41+
<version>5.2.0</version>
42+
</dependency>
43+
<!-- https://mvnrepository.com/artifact/tech.grasshopper/extentreports-cucumber7-adapter -->
44+
<dependency>
45+
<groupId>tech.grasshopper</groupId>
46+
<artifactId>extentreports-cucumber7-adapter</artifactId>
47+
<version>1.2.0</version>
48+
</dependency>
49+
50+
51+
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
52+
<dependency>
53+
<groupId>com.aventstack</groupId>
54+
<artifactId>extentreports</artifactId>
55+
<version>5.0.9</version>
56+
</dependency>
57+
58+
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
59+
<dependency>
60+
<groupId>io.cucumber</groupId>
61+
<artifactId>cucumber-picocontainer</artifactId>
62+
<version>7.2.3</version>
63+
</dependency>
64+
65+
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
66+
<dependency>
67+
<groupId>io.cucumber</groupId>
68+
<artifactId>cucumber-testng</artifactId>
69+
<version>7.2.3</version>
70+
</dependency>
71+
72+
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
73+
<dependency>
74+
<groupId>org.seleniumhq.selenium</groupId>
75+
<artifactId>selenium-java</artifactId>
76+
<version>4.1.1</version>
77+
</dependency>
78+
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
79+
<dependency>
80+
<groupId>io.cucumber</groupId>
81+
<artifactId>cucumber-junit</artifactId>
82+
<version>7.3.4</version>
83+
<scope>test</scope>
84+
</dependency>
85+
86+
87+
88+
</dependencies>
89+
90+
<build>
91+
<plugins>
92+
<plugin>
93+
<groupId>org.apache.maven.plugins</groupId>
94+
<artifactId>maven-surefire-plugin</artifactId>
95+
<version>3.0.0-M5</version>
96+
</plugin>
97+
</plugins>
98+
</build>
99+
</project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package CucumberOptions;
2+
3+
import org.junit.runner.RunWith;
4+
import io.cucumber.junit.CucumberOptions;
5+
import io.cucumber.junit.Cucumber;
6+
7+
@RunWith(Cucumber.class)
8+
@CucumberOptions(
9+
//specify fetaure ,step definitition,reporting plugin
10+
features = "src/test/java/features/login1.feature",
11+
glue="StepDefinitions",
12+
stepNotifications=true,
13+
tags="@RegTest or @SmokeTest",
14+
//monochrome=true,
15+
plugin= {"pretty","html:target/cucumber.html","json:target/cucumber.json","junit:target/cukes.xml"
16+
})
17+
public class TestRunner {}
18+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package CucumberOptions;
2+
3+
import io.cucumber.testng.CucumberOptions;
4+
import org.testng.annotations.DataProvider;
5+
import io.cucumber.testng.AbstractTestNGCucumberTests;
6+
7+
8+
@CucumberOptions(
9+
//specifying the feature File,StepDefinitions and reporting plugin using Extent Report
10+
features = "src/test/java/features/login1.feature"
11+
,glue="StepDefinitions",
12+
plugin= {"pretty","html:target/cucumber.html",
13+
"com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:",
14+
"rerun:target/failedscenarios.txt",
15+
"json:target/cucumber.json"
16+
})
17+
18+
public class TestRunner_testng extends AbstractTestNGCucumberTests{
19+
20+
//Run Tests in parallel
21+
@Override
22+
@DataProvider(parallel=true)
23+
public Object[][] scenarios(){
24+
return super.scenarios();}
25+
}
26+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package StepDefinitions;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import org.apache.commons.io.FileUtils;
6+
import org.openqa.selenium.OutputType;
7+
import org.openqa.selenium.TakesScreenshot;
8+
import org.openqa.selenium.WebDriver;
9+
import Utilities.TestContextSetUp;
10+
import io.cucumber.java.After;
11+
import io.cucumber.java.AfterStep;
12+
import io.cucumber.java.Before;
13+
import io.cucumber.java.Scenario;
14+
15+
public class Hooks {
16+
TestContextSetUp testsetup;
17+
18+
public Hooks(TestContextSetUp testsetup1) {
19+
this.testsetup=testsetup1;}
20+
21+
@Before("@RegTest")
22+
public void beforesceanrio() {
23+
System.out.println("Before Hooks ...");}
24+
25+
@After("@RegTest")
26+
public void aftersceanrio() throws IOException {
27+
System.out.println("After Hooks ...");
28+
testsetup.testbase.webmanager().quit();}
29+
30+
@AfterStep("@RegTest")
31+
public void addscreenshots(Scenario scenario) throws IOException {
32+
//Taking screenshots when Test Fail
33+
WebDriver driver=testsetup.testbase.driver;
34+
if(scenario.isFailed()) {
35+
//Convert web driver object to TakeScreenshot
36+
TakesScreenshot scrShot =((TakesScreenshot)driver);
37+
//Call getScreenshotAs method to create image file
38+
File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);
39+
byte[] fileContent=FileUtils.readFileToByteArray(SrcFile);
40+
scenario.attach(fileContent, "image/png", "image");}
41+
42+
}}
43+
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package StepDefinitions;
2+
import io.cucumber.java.en.And;
3+
import io.cucumber.java.en.Given;
4+
import io.cucumber.java.en.Then;
5+
import java.util.*;
6+
import io.cucumber.java.en.When;
7+
import org.openqa.selenium.By;
8+
import org.openqa.selenium.WebDriver;
9+
import org.openqa.selenium.chrome.ChromeDriver;
10+
import org.openqa.selenium.chrome.ChromeOptions;
11+
import org.openqa.selenium.remote.RemoteWebDriver;
12+
import io.github.bonigarcia.wdm.WebDriverManager;
13+
14+
public class Stepdefinition {
15+
16+
public RemoteWebDriver driver;
17+
18+
@Given("^website is launched$")
19+
public void launchwebsite() {
20+
System.out.println("Given...");
21+
WebDriverManager.chromedriver().setup();
22+
driver = new ChromeDriver();
23+
driver.get("https://www.saucedemo.com/");}
24+
25+
@When("^form is displayed$")
26+
public void loginform() {
27+
System.out.println("When...");}
28+
@And("enter valid credentials for {string} and {string}")
29+
public void enter_valid_credentials_for_and(String string1, String string2) {
30+
31+
System.out.println("And...");
32+
System.out.println(string1);
33+
System.out.println(string2);
34+
driver.findElement(By.xpath("//*[@id=\"user-name\"]")).sendKeys(string1);
35+
driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(string2);
36+
driver.findElement(By.xpath("//*[@id=\"login-button\"]")).click();}
37+
38+
@Then("^product page must be displayed")
39+
public void productpage() {
40+
System.out.println("Then...");}
41+
42+
43+
@And("^enter valid credentials for users$")
44+
public void enter_valid_credentials_for_users(io.cucumber.datatable.DataTable table) {
45+
List<List<String>> rows = table.asLists(String.class);
46+
System.out.println("Data Tables");
47+
for(int i=0;i<rows.size();i++) {
48+
49+
System.out.println(rows.get(i).get(0));
50+
System.out.println(rows.get(i).get(1));}}
51+
52+
@And("^enter valid credentials for users with (.+) and (.+)$")
53+
public void enter_valid_credentials_for_users_with_locked_out_user_and_secret_sauce(String uname,String pwd) {
54+
System.out.println("Examples");
55+
System.out.println(uname);
56+
System.out.println(pwd);}
57+
58+
@Given("validate the browser")
59+
public void validate_the_browser() {
60+
System.out.println("Background : given");}
61+
62+
@When("browser is triggered")
63+
public void browser_is_triggered() {
64+
System.out.println("Background : when");}
65+
66+
@Then("check if the browser is started")
67+
public void check_if_the_browser_is_started() {
68+
System.out.println("Background : Then");}
69+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package StepDefinitions;
2+
3+
4+
5+
import io.cucumber.java.en.And;
6+
import io.cucumber.java.en.Given;
7+
import io.cucumber.java.en.Then;
8+
import java.io.IOException;
9+
import java.util.*;
10+
import io.cucumber.java.en.When;
11+
import org.openqa.selenium.By;
12+
import org.openqa.selenium.WebDriver;
13+
import org.openqa.selenium.chrome.ChromeDriver;
14+
import org.openqa.selenium.chrome.ChromeOptions;
15+
import org.openqa.selenium.remote.RemoteWebDriver;
16+
import Utilities.TestContextSetUp;
17+
import io.github.bonigarcia.wdm.WebDriverManager;
18+
import pageObjects.LoginFormpage;
19+
20+
public class loginusingcredentials {
21+
22+
TestContextSetUp testsetup;
23+
24+
public loginusingcredentials(TestContextSetUp testsetup1) {
25+
this.testsetup=testsetup1;}
26+
27+
28+
@Given("^website1 is launched$")
29+
public void launchwebsite() throws IOException {
30+
System.out.println("Given...");
31+
testsetup.testbase.webmanager();}
32+
33+
@When("^form1 is displayed$")
34+
public void loginform() {
35+
36+
//testsetup.driver.get("https://www.saucedemo.com/");
37+
38+
System.out.println("When...");}
39+
@And("^enter valid credentials for1 (.+) and (.+)$")
40+
public void enter_valid_credentials_for_and(String string1, String string2) throws IOException {
41+
42+
System.out.println("And...");
43+
System.out.println(string1);
44+
System.out.println(string2);
45+
46+
LoginFormpage login=testsetup.pageobjectmanager.login(testsetup.testbase.webmanager());
47+
login.entertxt(string1, string2);
48+
login.submitform();}}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package StepDefinitions;
2+
import io.cucumber.java.en.And;
3+
import io.cucumber.java.en.Given;
4+
import io.cucumber.java.en.Then;
5+
import java.io.IOException;
6+
import java.util.*;
7+
import io.cucumber.java.en.When;
8+
import org.openqa.selenium.By;
9+
import org.openqa.selenium.WebDriver;
10+
import org.openqa.selenium.chrome.ChromeDriver;
11+
import org.openqa.selenium.chrome.ChromeOptions;
12+
import org.openqa.selenium.remote.RemoteWebDriver;
13+
import Utilities.TestContextSetUp;
14+
import io.github.bonigarcia.wdm.WebDriverManager;
15+
import pageObjects.productspage;
16+
17+
public class validatepage {
18+
19+
20+
TestContextSetUp testsetup;
21+
public validatepage(TestContextSetUp testsetup) {
22+
this.testsetup=testsetup;}
23+
24+
@Then("^product page must be displayed1")
25+
public void productpage() throws IOException {
26+
System.out.println("Then...");
27+
productspage vp=testsetup.pageobjectmanager.productpage(testsetup.testbase.webmanager());
28+
String ptxt=vp.txt();
29+
if(ptxt.equalsIgnoreCase(ptxt))
30+
{
31+
System.out.println("yes...");}
32+
else
33+
{System.out.println("No...");}
34+
}}
35+

0 commit comments

Comments
 (0)