diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..9aeaadc --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,34 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Run Selenium Tests + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 18 + uses: actions/setup-java@v3 + with: + java-version: '18' + distribution: 'temurin' + - name: Install Google Chrome + run: | + chmod +x ./scripts/InstallChrome.sh + ./scripts/InstallChrome.sh + - name: Run Tests with Maven + run: mvn test --file pom.xml \ No newline at end of file diff --git a/pom.xml b/pom.xml index fdf3d31..121c7fe 100644 --- a/pom.xml +++ b/pom.xml @@ -28,11 +28,11 @@ 7.7.0 test - + - com.epam.healenium - healenium-web - 3.3.1 + io.github.bonigarcia + webdrivermanager + 5.3.2 diff --git a/scripts/InstallChrome.sh b/scripts/InstallChrome.sh new file mode 100644 index 0000000..0876ac0 --- /dev/null +++ b/scripts/InstallChrome.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -ex +wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb +sudo apt install ./google-chrome-stable_current_amd64.deb \ No newline at end of file diff --git a/src/test/java/pageobjects/swaglabs/HomePage.java b/src/test/java/pageobjects/swaglabs/HomePage.java index b849201..60d6978 100644 --- a/src/test/java/pageobjects/swaglabs/HomePage.java +++ b/src/test/java/pageobjects/swaglabs/HomePage.java @@ -17,8 +17,8 @@ public void applyFilter(String value) { driver.findElement(By.xpath("//select[@class='product_sort_container']/option[@value='" + value + "']")).click(); } //get the filter value - public String getAppliedFilter() { - return driver.findElement(By.xpath("//div[@class='right_component']/span/span")).getText(); + public Boolean chkAppliedFilter(String filter) { + return driver.findElement(By.xpath("//span[contains(text(),'"+filter+"')]"))!=null; } public String getPageHeading() { diff --git a/src/test/java/tests/SwagLabs/BaseTest.java b/src/test/java/tests/SwagLabs/BaseTest.java index aaeccfa..8135eed 100644 --- a/src/test/java/tests/SwagLabs/BaseTest.java +++ b/src/test/java/tests/SwagLabs/BaseTest.java @@ -1,5 +1,6 @@ package tests.SwagLabs; +import io.github.bonigarcia.wdm.WebDriverManager; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; @@ -19,10 +20,13 @@ public class BaseTest { @BeforeClass public void setupBeforeTest(){ + WebDriverManager.chromedriver().setup(); this.options = new ChromeOptions(); this.options.addArguments("start-maximized"); + this.options.addArguments("--no-sandbox"); + this.options.addArguments("--disable-dev-shm-usage"); + this.options.addArguments("--headless"); System.setProperty("webdriver.http.factory", "jdk-http-client"); - System.setProperty("webdriver.chrome.driver","C:\\Users\\mujtaba.afzal\\Documents\\ChromeDriver\\chromedriver.exe"); this.driver = new ChromeDriver(this.options); this.properties = UtilsConfig.getProperties("SwagLabs"); this.XPATH = UtilsConfig.getProperties("xpath"); diff --git a/src/test/java/tests/SwagLabs/HomePageTests.java b/src/test/java/tests/SwagLabs/HomePageTests.java index 533a792..ced3093 100644 --- a/src/test/java/tests/SwagLabs/HomePageTests.java +++ b/src/test/java/tests/SwagLabs/HomePageTests.java @@ -21,7 +21,7 @@ public void beforeEach(){ @Test(description = "Verify Filter should be applied successfully") public void applyFilter(){ homePage.applyFilter(properties.getProperty("sort_filter")); - Assert.assertEquals(homePage.getAppliedFilter(), properties.getProperty("sort_filter_text")); + Assert.assertTrue(homePage.chkAppliedFilter(properties.getProperty("sort_filter_text"))); } @Test(description = "Verify product page should be opened successfully") public void goToProductPage(){