Skip to content

Commit 463e158

Browse files
Tests added for Selenium GitHub actions demo (#1)
* created maven project and gitignore file * added selenium tests
1 parent 2f049bd commit 463e158

File tree

7 files changed

+237
-0
lines changed

7 files changed

+237
-0
lines changed

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
!**/src/main/**/target/
4+
!**/src/test/**/target/
5+
6+
### IntelliJ IDEA ###
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
11+
*.iws
12+
*.iml
13+
*.ipr
14+
15+
### Eclipse ###
16+
.apt_generated
17+
.classpath
18+
.factorypath
19+
.project
20+
.settings
21+
.springBeans
22+
.sts4-cache
23+
24+
### Mac OS ###
25+
.DS_Store
26+
27+
.idea/

pom.xml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>com.baeldung</groupId>
6+
<artifactId>lambdatest-examples</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<packaging>jar</packaging>
9+
10+
<name>maven-project</name>
11+
<url>http://maven.apache.org</url>
12+
13+
<dependencies>
14+
<dependency>
15+
<groupId>org.seleniumhq.selenium</groupId>
16+
<artifactId>selenium-java</artifactId>
17+
<version>${selenium-java.version}</version>
18+
</dependency>
19+
<dependency>
20+
<groupId>org.testng</groupId>
21+
<artifactId>testng</artifactId>
22+
<version>${testng.version}</version>
23+
</dependency>
24+
</dependencies>
25+
26+
<build>
27+
<plugins>
28+
<plugin>
29+
<groupId>org.apache.maven.plugins</groupId>
30+
<artifactId>maven-compiler-plugin</artifactId>
31+
<version>${maven.compiler.version}</version>
32+
<configuration>
33+
<release>${java.release.version}</release>
34+
<encoding>${maven.source.encoding}</encoding>
35+
<forceJavacCompilerUse>true</forceJavacCompilerUse>
36+
</configuration>
37+
</plugin>
38+
<plugin>
39+
<groupId>org.apache.maven.plugins</groupId>
40+
<artifactId>maven-surefire-plugin</artifactId>
41+
<version>${surefire-version}</version>
42+
<executions>
43+
<execution>
44+
<goals>
45+
<goal>test</goal>
46+
</goals>
47+
</execution>
48+
</executions>
49+
<configuration>
50+
<useSystemClassLoader>false</useSystemClassLoader>
51+
<properties>
52+
<property>
53+
<name>usedefaultlisteners</name>
54+
<value>false</value>
55+
</property>
56+
</properties>
57+
<suiteXmlFiles>
58+
<suiteXmlFile>${suite-xml}</suiteXmlFile>
59+
</suiteXmlFiles>
60+
<argLine>${argLine}</argLine>
61+
</configuration>
62+
</plugin>
63+
</plugins>
64+
</build>
65+
66+
<properties>
67+
<testng.version>7.10.2</testng.version>
68+
<selenium-java.version>4.27.0</selenium-java.version>
69+
<maven.compiler.version>3.13.0</maven.compiler.version>
70+
<surefire-version>3.2.5</surefire-version>
71+
<java.release.version>17</java.release.version>
72+
<maven.source.encoding>UTF-8</maven.source.encoding>
73+
<suite-xml>testng.xml</suite-xml>
74+
<argLine>-Dfile.encoding=UTF-8 -Xdebug -Xnoagent</argLine>
75+
</properties>
76+
77+
</project>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.baeldung;
2+
3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
import java.time.Duration;
6+
import java.util.HashMap;
7+
8+
import org.openqa.selenium.chrome.ChromeOptions;
9+
import org.openqa.selenium.remote.RemoteWebDriver;
10+
import org.testng.annotations.AfterTest;
11+
import org.testng.annotations.BeforeTest;
12+
13+
public class BaseTest {
14+
15+
protected RemoteWebDriver driver;
16+
protected String status = "failed";
17+
18+
@BeforeTest
19+
public void setup() {
20+
final String userName = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME");
21+
final String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY");
22+
final String gridUrl = "@hub.lambdatest.com/wd/hub";
23+
try {
24+
this.driver = new RemoteWebDriver(new URL ("http://" + userName + ":" + accessKey + gridUrl), getChromeOptions());
25+
} catch (final MalformedURLException e) {
26+
System.out.println("Could not start the remote session on LambdaTest cloud grid");
27+
}
28+
this.driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
29+
}
30+
31+
public ChromeOptions getChromeOptions() {
32+
final var browserOptions = new ChromeOptions();
33+
browserOptions.setPlatformName("Windows 10");
34+
browserOptions.setBrowserVersion("latest");
35+
final HashMap<String, Object> ltOptions = new HashMap<String, Object>();
36+
ltOptions.put("project", "LambdaTest e-commerce website automation");
37+
ltOptions.put("build", "LambdaTest e-commerceV1.0.0");
38+
ltOptions.put("name", "Homepage search product test");
39+
ltOptions.put("w3c", true);
40+
ltOptions.put("plugin", "java-testNG");
41+
42+
browserOptions.setCapability("LT:Options", ltOptions);
43+
44+
return browserOptions;
45+
}
46+
47+
@AfterTest
48+
public void tearDown() {
49+
50+
this.driver.executeScript("lambda-status=" + this.status);
51+
this.driver.quit();
52+
}
53+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.baeldung;
2+
3+
import com.baeldung.pages.HomePage;
4+
import com.baeldung.pages.SearchResultPage;
5+
import org.testng.annotations.Test;
6+
7+
public class LambdaTestEcommerceTests extends BaseTest {
8+
@Test
9+
public void testSearchProduct () {
10+
11+
String productName = "iPhone";
12+
13+
driver.get ("https://ecommerce-playground.lambdatest.io/");
14+
HomePage homePage = new HomePage (driver);
15+
SearchResultPage searchResultPage = homePage.searchProduct (productName);
16+
searchResultPage.verifySearchResultPageHeader (productName);
17+
this.status = "passed";
18+
}
19+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.pages;
2+
3+
import static org.testng.Assert.assertEquals;
4+
5+
import org.openqa.selenium.By;
6+
import org.openqa.selenium.WebDriver;
7+
import org.openqa.selenium.WebElement;
8+
import org.openqa.selenium.remote.RemoteWebDriver;
9+
10+
public class HomePage {
11+
12+
private RemoteWebDriver driver;
13+
14+
public HomePage (final RemoteWebDriver driver) {
15+
this.driver = driver;
16+
}
17+
18+
public SearchResultPage searchProduct(String productName) {
19+
WebElement searchBox = driver.findElement(By.name("search"));
20+
searchBox.sendKeys(productName);
21+
WebElement searchBtn = driver.findElement(By.cssSelector("button.type-text"));
22+
searchBtn.click();
23+
return new SearchResultPage (driver);
24+
}
25+
26+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.pages;
2+
3+
import static org.testng.Assert.assertEquals;
4+
5+
import org.openqa.selenium.By;
6+
import org.openqa.selenium.remote.RemoteWebDriver;
7+
8+
public class SearchResultPage {
9+
10+
private RemoteWebDriver driver;
11+
12+
public SearchResultPage (final RemoteWebDriver driver) {
13+
this.driver = driver;
14+
}
15+
16+
public void verifySearchResultPageHeader (String productName) {
17+
String pageHeader = driver.findElement (By.tagName ("h1"))
18+
.getText ();
19+
20+
assertEquals (pageHeader, "Search - " + productName);
21+
}
22+
}

testng.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Selenium GitHub Actions demo">
4+
<test name="Searching a product from the HomePage of LambdaTest ECommerce website">
5+
<classes>
6+
<class name="com.baeldung.LambdaTestEcommerceTests">
7+
<methods>
8+
<include name="testSearchProduct"/>
9+
</methods>
10+
</class>
11+
</classes>
12+
</test>
13+
</suite>

0 commit comments

Comments
 (0)