Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,20 @@ jobs:
${{ runner.os }}-maven-

- name: Build with Maven
run: mvn -B package --file pom.xml
if: ${{ matrix.os == 'ubuntu-latest' }}
run: mvn clean -e install -Dmaven.test.skip=true

- name: Test Framework
if: ${{ matrix.os == 'ubuntu-latest' }}
run: mvn clean test -Dtest=FrameworkTest

- name: Test with Maven
run: mvn test
- name: Cross Browser Testing
if: ${{ matrix.os == 'ubuntu-latest' }}
run: mvn test -Dsurefire.suiteXmlFiles=xmlSuits/crossBrowser.xml

- name: Build and Test with Maven
if: ${{ matrix.os != 'ubuntu-latest' }}
run: mvn -B package --file pom.xml

- name: Dorny Test Reporter
uses: dorny/test-reporter@v1.9.1
Expand Down
7 changes: 4 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

<allure.version>2.24.0</allure.version>
<aspectj.version>1.9.20.1</aspectj.version>

<tests.skip>false</tests.skip>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -67,13 +69,12 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<skipTests>${tests.skip}</skipTests>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<suiteXmlFiles>
<suiteXmlFile>
testng.xml
</suiteXmlFile>
<suiteXmlFile>xmlSuits/chromeChromium.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<dependencies>
Expand Down
94 changes: 94 additions & 0 deletions src/test/java/com/file/UploadDownloadFileTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package com.file;

import com.lumatest.utils.DriverUtils;
import com.lumatest.utils.ReportUtils;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.annotations.*;

import java.awt.*;
import java.io.File;

public class UploadDownloadFileTest {
private WebDriver driver;
private final String chrome = "chrome";

@Parameters(chrome)
@BeforeMethod()
protected void setupDriver(@Optional(chrome) String browser, ITestResult result) {
Reporter.log("______________________________________________________________________", true);

if (browser.equalsIgnoreCase("chrome")) {
WebDriverManager.chromedriver().setup();
}

Reporter.log("RUN " + result.getMethod().getMethodName(), true);

this.driver = DriverUtils.createDriver(browser, this.driver);

if (this.driver == null) {
System.exit(1);
}

Reporter.log("INFO: " + browser.toUpperCase() + " driver created.", true);
}

@Test
public void testUploadFile() throws InterruptedException {
final String fileName = "image.jpg";
File file = new File("src/test/resources/" + fileName);

driver.get("https://blueimp.github.io/jQuery-File-Upload/");

WebElement addFile = driver.findElement(By.xpath(".//input[@type='file']"));
addFile.sendKeys(file.getAbsolutePath());

Thread.sleep(5000);
String actualFileToUploadName = driver.findElement(By.xpath("//p[@class = 'name']")).getText();

Assert.assertEquals(actualFileToUploadName, fileName);

driver.findElement(By.xpath("//button//span[text()='Start upload']")).click();
Thread.sleep(3000);

String actualFileUploadedName = driver.findElement(By.xpath("//p[@class = 'name']")).getText();

Assert.assertEquals(actualFileUploadedName, fileName);

WebElement deleteButton = driver.findElement(By.xpath("//button//span[text()='Delete']"));

Assert.assertTrue(deleteButton.isDisplayed());
}

@Test
public void fileDownload() throws AWTException, InterruptedException {

driver.get("https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/");
Thread.sleep(2000);
WebElement downloadButton = driver.findElement(By.xpath(".//a[text()='chromedriver_win32.zip']"));
downloadButton.click();

Thread.sleep(7000);
}

@Parameters(chrome)
@AfterMethod(alwaysRun = true)
protected void tearDown(@Optional(chrome) String browser, ITestResult result) {
Reporter.log(result.getMethod().getMethodName() + ": " + ReportUtils.getTestStatus(result),
true);

if (this.driver != null) {
this.driver.quit();
Reporter.log("INFO: " + browser.toUpperCase() + " driver closed.", true);

this.driver = null;
} else {
Reporter.log("INFO: Driver is null.", true);
}
}
}
24 changes: 17 additions & 7 deletions src/test/java/com/lumatest/base/BaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@
import com.lumatest.utils.ReportUtils;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.annotations.*;

public abstract class BaseTest {
private WebDriver driver;
private final ThreadLocal<WebDriver> threadLocalDriver = new ThreadLocal<>();

@BeforeSuite
protected void setupWebDriverManager() {
WebDriverManager.chromedriver().setup();
// WebDriverManager.firefoxdriver().setup();
WebDriverManager.firefoxdriver().setup();

// WebDriverManager.edgedriver().setup();
// WebDriverManager.operadriver().setup();
Expand All @@ -23,12 +25,16 @@ protected void setupWebDriverManager() {
}

@Parameters("browser")
@BeforeMethod()
protected void setupDriver(@Optional("chrome") String browser, ITestResult result) {
@BeforeMethod(alwaysRun = true)
protected void setupDriver(@Optional("chrome") String browser, ITestContext context, ITestResult result) {
Reporter.log("______________________________________________________________________", true);
Reporter.log("RUN " + result.getMethod().getMethodName(), true);

this.driver = DriverUtils.createDriver(browser, this.driver);
this.threadLocalDriver.set(driver);

Reporter.log("Test Thread ID: " + Thread.currentThread().getId(), true);
Reporter.log("TEST SUIT: " + context.getCurrentXmlTest().getSuite().getName(), true);
Reporter.log("RUN " + result.getMethod().getMethodName(), true);

if (getDriver() == null) {
Reporter.log("ERROR: Unknown parameter 'browser' - '" + browser + "'.", true);
Expand All @@ -43,19 +49,23 @@ protected void setupDriver(@Optional("chrome") String browser, ITestResult resul
@AfterMethod(alwaysRun = true)
protected void tearDown(@Optional("chrome") String browser, ITestResult result) {
Reporter.log(result.getMethod().getMethodName() + ": " + ReportUtils.getTestStatus(result),
true);
true);

if (getDriver() != null) {
getDriver().quit();
Reporter.log("INFO: " + browser.toUpperCase() + " driver closed.", true);

this.driver = null;
Reporter.log("After Test Thread ID: " + Thread.currentThread().getId(), true);
threadLocalDriver.remove();

driver = null;

} else {
Reporter.log("INFO: Driver is null.", true);
}
}

protected WebDriver getDriver() {
return this.driver;
return threadLocalDriver.get();
}
}
1 change: 1 addition & 0 deletions src/test/java/com/lumatest/data/TestData.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public static Object[][] getNavMenuData() {
}

//ProductPage
public static final String DRIVEN_BACKPACK_PRODUCT_URL = BASE_URL + "/driven-backpack.html";
public static final String DRIVEN_BACKPACK_PRODUCT_NAME = "Driven Backpack";
public static final String DRIVEN_BACKPACK_PRODUCT_PAGE_BREADCRUMBS_MENU = "Home Gear Bags Driven Backpack";
}
4 changes: 2 additions & 2 deletions src/test/java/com/lumatest/test/NavigationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class NavigationTest extends BaseTest {

@Test(
description = "TC-01 Open Base URL",
groups = {"Smoke", "Regression"},
groups = {"smoke", "regression"},
testName = "NAVIGATION | Open Base URL"
)
@Story("Navigation")
Expand All @@ -37,7 +37,7 @@ public void testOpenBaseURL() {
}

@Test(
groups = {"Smoke", "Regression"},
groups = {"smoke", "regression"},
description = "TC-02 Top Menu Navigation",
dataProvider = "navigationData",
dataProviderClass = TestData.class,
Expand Down
16 changes: 15 additions & 1 deletion src/test/java/com/lumatest/test/ProductPageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,26 @@
import com.lumatest.model.HomePage;
import com.lumatest.model.ProductPage;
import io.qameta.allure.Allure;
import io.qameta.allure.Severity;
import io.qameta.allure.SeverityLevel;
import io.qameta.allure.Story;
import io.qameta.allure.Description;
import io.qameta.allure.Link;
import org.testng.Assert;
import org.testng.annotations.Test;

public class ProductPageTest extends BaseTest {

@Test
@Test(
testName = "PRODUCT | Product Details",
description = "TC-03 Verify Product Details on Product Page",
groups = {"regression"}
)
@Story("Product Details")
@Severity(SeverityLevel.NORMAL)
@Description("To verify that the product page displays the correct product name and breadcrumb menu text " +
"for the 'Driven Backpack'.")
@Link(TestData.DRIVEN_BACKPACK_PRODUCT_URL)
public void testProduct() {
Allure.step("Open Base URL.");
getDriver().get(TestData.BASE_URL);
Expand Down
14 changes: 10 additions & 4 deletions src/test/java/com/lumatest/utils/DriverUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import org.openqa.selenium.chromium.ChromiumOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;

import java.util.HashMap;
import java.util.Map;

public class DriverUtils {
Expand All @@ -17,7 +19,7 @@ public class DriverUtils {
static {
chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--incognito");
chromeOptions.addArguments("--headless");
//chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--window-size=1920,1080");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--no-sandbox");
Expand All @@ -26,16 +28,20 @@ public class DriverUtils {
chromeOptions.addArguments("--allow-running-insecure-content");
chromeOptions.addArguments("--ignore-certificate-errors");

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "./src/test/resources");
prefs.put("download.prompt_for_download", false);
prefs.put("download.directory_upgrade", true);
prefs.put( "safebrowsing.enabled", true);
chromeOptions.setExperimentalOption("prefs", prefs);

firefoxOptions = new FirefoxOptions();
firefoxOptions.addArguments("--incognito");
firefoxOptions.addArguments("--headless");
firefoxOptions.addArguments("--window-size=1920,1080");
firefoxOptions.addArguments("--disable-gpu");
firefoxOptions.addArguments("--no-sandbox");
firefoxOptions.addArguments("--disable-dev-shm-usage");
firefoxOptions.addArguments("--disable-web-security");
firefoxOptions.addArguments("--allow-running-insecure-content");
firefoxOptions.addArguments("--ignore-certificate-errors");

chromiumOptions = chromeOptions;
}
Expand Down
Binary file added src/test/resources/image.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 0 additions & 26 deletions testng.xml

This file was deleted.

21 changes: 21 additions & 0 deletions xmlSuits/chromeChromium.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="CrossBrowser" parallel="methods" thread-count="5" data-provider-thread-count="5">
<test name="ChromeTest" verbose="10">
<parameter name="browser" value="chrome"/>
<classes>
<class name="com.lumatest.test.NavigationTest"/>
<class name="com.lumatest.test.ProductPageTest"/>
<class name="FrameworkTest"/>
</classes>
</test>

<test name="ChromiumTest" verbose="10">
<parameter name="browser" value="chromium"/>
<classes>
<class name="com.lumatest.test.NavigationTest"/>
<class name="com.lumatest.test.ProductPageTest"/>
<class name="FrameworkTest"/>
</classes>
</test>
</suite>
27 changes: 27 additions & 0 deletions xmlSuits/crossBrowser.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="CrossBrowser" parallel="methods" thread-count="5" data-provider-thread-count="5">
<test name="ChromeTest" verbose="10">
<parameter name="browser" value="chrome"/>
<classes>
<class name="com.lumatest.test.NavigationTest"/>
<class name="com.lumatest.test.ProductPageTest"/>
</classes>
</test>

<test name="ChromiumTest" verbose="10">
<parameter name="browser" value="chromium"/>
<classes>
<class name="com.lumatest.test.NavigationTest"/>
<class name="com.lumatest.test.ProductPageTest"/>
</classes>
</test>

<test name = "FirefoxTest" verbose="10">
<parameter name="browser" value="firefox"/>
<classes>
<class name="com.lumatest.test.NavigationTest"/>
<class name="com.lumatest.test.ProductPageTest"/>
</classes>
</test>
</suite>
Loading