Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
becc460
check code style on CI
ArinaJur Jun 14, 2024
8afd245
add codestyle check
ArinaJur Jun 14, 2024
347edaa
build first
ArinaJur Jun 14, 2024
901a680
Clean code
ArinaJur Jun 14, 2024
3e24210
add firefox testing
ArinaJur Jun 14, 2024
67e5f79
add setup firefox action
ArinaJur Jun 14, 2024
9b97b8e
Update build.yml
ArinaJur Jun 14, 2024
0bbfdc1
add test suits
ArinaJur Jun 14, 2024
0a90e0e
Merge branch 'codeStyle' of https://github.com/ArinaJur/LUMAJavaSelen…
ArinaJur Jun 14, 2024
b83ffd9
change firefox options
ArinaJur Jun 14, 2024
8e77e64
fix errors
ArinaJur Jun 14, 2024
d60189b
Fix Errors
ArinaJur Jun 14, 2024
fe6175a
separate testing steps
ArinaJur Jun 15, 2024
7c18eaa
fix typo
ArinaJur Jun 15, 2024
5f78528
fix .yml
ArinaJur Jun 15, 2024
c0b1e3c
Update build.yml
ArinaJur Jun 15, 2024
f60200c
Separate FirefoxTest
ArinaJur Jun 15, 2024
96466bd
change test order
ArinaJur Jun 15, 2024
26838b3
update .yml
ArinaJur Jun 15, 2024
f359c30
update .yml
ArinaJur Jun 15, 2024
92d6ce9
Add skip test
ArinaJur Jun 15, 2024
3a88ed5
Add skip test
ArinaJur Jun 15, 2024
5701422
Add skip test
ArinaJur Jun 15, 2024
48d872a
Add skip test
ArinaJur Jun 15, 2024
a0c8713
Add skip test
ArinaJur Jun 15, 2024
cc15bd1
Add skip test
ArinaJur Jun 15, 2024
2f0961b
Add skip test
ArinaJur Jun 15, 2024
c7384a7
Add test Suit Name
ArinaJur Jun 15, 2024
70d071e
update .yml
ArinaJur Jun 15, 2024
110b09f
update .yml
ArinaJur Jun 15, 2024
2d25b66
RRemove parallel from cross browser
ArinaJur Jun 15, 2024
7373a04
Add ThreadLocal for testing in parallel
ArinaJur Jun 15, 2024
d4a6949
Add ThreadLocal for testing in parallel
ArinaJur Jun 15, 2024
cdbda03
Add ThreadLocal for testing in parallel
ArinaJur Jun 15, 2024
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
134 changes: 79 additions & 55 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#Cross Platform, Cross Browser test Run in parallel execution
name: Java CI with Maven

on:
pull_request:
branches: main
Expand All @@ -10,73 +10,97 @@ permissions:
id-token: write
actions: read
checks: write

jobs:
build:
name: Build On

strategy:
max-parallel: 4
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]

os:
- ubuntu-latest
- windows-latest
- macos-latest

runs-on: ${{ matrix.os }}

steps:
- name: Clone code from repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'
cache: maven
- name: Clone code from repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: corretto
cache: maven

- name: Cache m2 dependencies
uses: actions/cache@v4
with:
path: .m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

- name: Cache m2 dependencies
uses: actions/cache@v4
with:
path: .m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-

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

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

- name: Dorny Test Reporter
uses: dorny/test-reporter@v1.9.1
if: success() || failure()
with:
name: Test Report for ${{ matrix.os }}
path: target/surefire-reports/TEST-*.xml
reporter: java-junit
- name: Cross Browser Testing
if: ${{ matrix.os == 'ubuntu-latest' }}
run: mvn test -Dsurefire.suiteXmlFiles=xmlSuits/crossBrowser.xml

- name: Load Allure test report history
uses: actions/checkout@v4
if: always()
continue-on-error: true
with:
ref: gh-pages
path: gh-pages
- name: Build and Test with Maven
if: ${{ matrix.os != 'ubuntu-latest' }}
run: mvn -B package --file pom.xml

- name: Build Allure test report
uses: simple-elf/allure-report-action@v1.7
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
gh_pages: gh-pages
allure_history: allure-history
allure_results: target/allure-results
- name: Dorny Test Reporter
uses: dorny/test-reporter@v1.9.1
if: success() || failure()
with:
name: Test Report for ${{ matrix.os }}
path: target/surefire-reports/TEST-*.xml
reporter: java-junit

- name: Publish Allure test report
uses: peaceiris/actions-gh-pages@v3
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: allure-history
- name: Load Allure test report history
uses: actions/checkout@v4
if: always()
continue-on-error: true
with:
ref: gh-pages
path: gh-pages

- name: Build Allure test report
uses: simple-elf/allure-report-action@v1.7
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
gh_pages: gh-pages
allure_history: allure-history
allure_results: target/allure-results

- name: Publish Allure test report
uses: peaceiris/actions-gh-pages@v3
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: allure-history

check-java-code-style:
name: Check Java code style
runs-on: ubuntu-latest
steps:
- name: Clone code from repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run java checkstyle
uses: nikitasavinov/checkstyle-action@0.6.0
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# LUMAJavaSeleniumTestNGAllure

[![Java CI with Maven](https://github.com/ArinaJur/LUMAJavaSeleniumTestNGAllure/actions/workflows/build.yml/badge.svg)](https://github.com/ArinaJur/LUMAJavaSeleniumTestNGAllure/actions/workflows/build.yml)
10 changes: 7 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,15 @@
<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/smoke.xml</suiteXmlFile>
<suiteXmlFile>xmlSuits/chrome.xml</suiteXmlFile>
<suiteXmlFile>xmlSuits/chromium.xml</suiteXmlFile>
<suiteXmlFile>xmlSuits/regression.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<dependencies>
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/com/lumatest/model/BagsPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
import org.openqa.selenium.WebDriver;

public class BagsPage extends SideMenu {
private final String productNameXpath = "//img[@alt='";

protected BagsPage(WebDriver driver) {
super(driver);
}
protected BagsPage(WebDriver driver) {
super(driver);
}

@Step("Click '{productName}' Img.")
public ProductPage clickProductImg(String productName) {
String imgXpath = productNameXpath + productName + "']";
getDriver().findElement(By.xpath(imgXpath)).click();
@Step("Click '{productName}' Img.")
public ProductPage clickProductImg(String productName) {
String productNameXpath = "//img[@alt='";
String imgXpath = productNameXpath + productName + "']";
getDriver().findElement(By.xpath(imgXpath)).click();

return new ProductPage(getDriver());
}
return new ProductPage(getDriver());
}
}
33 changes: 16 additions & 17 deletions src/main/java/com/lumatest/model/BasePage.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
package com.lumatest.model;

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

abstract class BasePage {
private final WebDriver driver;
private WebDriverWait wait;
private final WebDriver driver;
private WebDriverWait wait;

protected BasePage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
protected BasePage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}

protected WebDriver getDriver() {
return this.driver;
}

protected WebDriverWait getWait() {
if(wait == null) {
this.wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}
protected WebDriver getDriver() {
return this.driver;
}

return wait;
protected WebDriverWait getWait() {
if (wait == null) {
this.wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}

return wait;
}
}
18 changes: 9 additions & 9 deletions src/main/java/com/lumatest/model/BreadcrumbsMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
import org.openqa.selenium.support.ui.ExpectedConditions;

abstract class BreadcrumbsMenu extends TopMenu {
@FindBy(xpath = "//ul[@class='items']")
private WebElement breadcrumbsMenu;
@FindBy(xpath = "//ul[@class='items']")
private WebElement breadcrumbsMenu;

protected BreadcrumbsMenu(WebDriver driver) {
super(driver);
}
protected BreadcrumbsMenu(WebDriver driver) {
super(driver);
}

@Step("Collect Breadcrumbs Menu Text.")
public String getBreadcrumbsMenuText() {
@Step("Collect Breadcrumbs Menu Text.")
public String getBreadcrumbsMenuText() {

return getWait().until(ExpectedConditions.visibilityOf(breadcrumbsMenu)).getText();
}
return getWait().until(ExpectedConditions.visibilityOf(breadcrumbsMenu)).getText();
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/lumatest/model/GearPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class GearPage extends SideMenu {

protected GearPage(WebDriver driver) {
super(driver);
}
protected GearPage(WebDriver driver) {
super(driver);
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/lumatest/model/HomePage.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class HomePage extends TopMenu {

public HomePage(WebDriver driver) {
super(driver);
}
public HomePage(WebDriver driver) {
super(driver);
}
}
18 changes: 9 additions & 9 deletions src/main/java/com/lumatest/model/ProductPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
import org.openqa.selenium.support.FindBy;

public class ProductPage extends BreadcrumbsMenu {
@FindBy(xpath = "//span[@data-ui-id='page-title-wrapper']")
private WebElement productName;
@FindBy(xpath = "//span[@data-ui-id='page-title-wrapper']")
private WebElement productName;

protected ProductPage(WebDriver driver) {
super(driver);
}
protected ProductPage(WebDriver driver) {
super(driver);
}

@Step("Collect Actual Product Name Text.")
public String getProductNameText() {
@Step("Collect Actual Product Name Text.")
public String getProductNameText() {

return productName.getText();
}
return productName.getText();
}
}
20 changes: 10 additions & 10 deletions src/main/java/com/lumatest/model/SideMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@

abstract class SideMenu extends BreadcrumbsMenu {

@FindBy(linkText = "Bags")
private WebElement bagsSideMenu;
@FindBy(linkText = "Bags")
private WebElement bagsSideMenu;

protected SideMenu(WebDriver driver) {
super(driver);
}
protected SideMenu(WebDriver driver) {
super(driver);
}

@Step("Click Bags Side Menu.")
public BagsPage clickBagsSideMenu() {
bagsSideMenu.click();
@Step("Click Bags Side Menu.")
public BagsPage clickBagsSideMenu() {
bagsSideMenu.click();

return new BagsPage(getDriver());
}
return new BagsPage(getDriver());
}
}
Loading