Skip to content

Commit 6794d8a

Browse files
Added example code to run test in different window size and updated readme (#54)
* updated tests, testng.xmls, base test and browsermanager * updated testng-browsertest.xml to include all tests * updated readme and testng.xml
1 parent d8d7c92 commit 6794d8a

10 files changed

Lines changed: 138 additions & 81 deletions

File tree

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- This repo has example code for running Web Automation Tests using Playwright, Java and TestNG.
88
- Websites used for testing are
99
- [LambdaTest E-Commerce Playground](https://ecommerce-playground.lambdatest.io/)
10+
- [LambdaTest Selenium Playground](https://www.lambdatest.com/selenium-playground/)
1011
- This repo uses `Maven` as build tool and `TestNG` testing framework to run the tests.
1112

1213
## Talking more about the Scenarios Covered in this project:
@@ -19,9 +20,12 @@ I have tried to answer the below questions by providing working code example in
1920
1. How to run test on Firefox browser in Headless mode?
2021
1. How to run test on Chrome/Firefox browser in Slow Motion?
2122
1. How to run test on Edge browser?
22-
1. How to perform browser navigations?
23+
1. How to perform browser navigation's?
2324
1. How to get the Page Title?
2425
1. How to get the Website URL?
26+
1. How to type values in the textbox?
27+
1. How to set different window sizes?
28+
1. How to use Page Object Model using Playwright Java?
2529

2630
## How to run the Tests?
2731

@@ -34,6 +38,11 @@ I have tried to answer the below questions by providing working code example in
3438
### 2. Maven:
3539
`mvn clean install -Dsuite-xml=testng.xml `
3640

41+
## :writing_hand: Blog Links
42+
43+
- [Playwright Java Tutorial: Web Automation Testing | Installation and Setup](https://medium.com/@iamfaisalkhatri/playwright-java-tutorial-web-automation-testing-installation-and-setup-545c9c7661c8)
44+
- [Playwright Java Tutorial: Web Automation Testing | Writing and running tests on Chrome, Firefox and Edge browsers](https://medium.com/@iamfaisalkhatri/playwright-java-tutorial-web-automation-testing-writing-and-running-tests-on-chrome-firefox-and-d2446b9a69ce)
45+
3746
## :question: Need Assistance?
3847

3948
- Discuss your queries by writing to me @ `mohammadfaisalkhatri@gmail.com`

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<properties>
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15-
<playwright.version>1.37.0</playwright.version>
15+
<playwright.version>1.38.0</playwright.version>
1616
<testng.version>7.8.0</testng.version>
1717
<maven.compiler.version>3.11.0</maven.compiler.version>
1818
<surefire.version>3.1.2</surefire.version>

src/main/java/io/github/mfaisalkhatri/browsers/BrowserManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ public BrowserManager() {
1515
this.playwright = Playwright.create();
1616
}
1717

18-
public void createBrowser(final Browsers browsers) {
18+
public void createBrowser(final String browser) {
1919

20-
switch (browsers) {
21-
case EDGE -> setupEdgeBrowser();
22-
case FIREFOX -> setupFirefoxBrowser();
20+
switch (browser) {
21+
case "edge" -> setupEdgeBrowser();
22+
case "firefox" -> setupFirefoxBrowser();
2323
default -> setupChromeBrowser();
2424
}
2525
}

src/main/java/io/github/mfaisalkhatri/browsers/Browsers.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/test/java/io/github/mfaisalkhatri/tests/BaseTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.mfaisalkhatri.tests;
22

33
import io.github.mfaisalkhatri.browsers.BrowserManager;
4-
import io.github.mfaisalkhatri.browsers.Browsers;
54
import org.testng.annotations.*;
65

76
public class BaseTest {
@@ -13,7 +12,7 @@ public class BaseTest {
1312
@BeforeClass(alwaysRun = true)
1413
public void setupTest(final String browser) {
1514
this.browserManager = new BrowserManager();
16-
this.browserManager.createBrowser(Browsers.valueOf(browser.toUpperCase()));
15+
this.browserManager.createBrowser((browser));
1716
}
1817

1918
@AfterClass(alwaysRun = true)

src/test/java/io/github/mfaisalkhatri/tests/PlaywrightDemoTests.java

Lines changed: 54 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,88 +9,84 @@
99
import static org.testng.Assert.assertEquals;
1010

1111
public class PlaywrightDemoTests {
12-
1312
@Test
1413
public void testOnChromeHeadless() {
15-
try (final Playwright playwright = Playwright.create()) {
16-
final Browser browser = playwright.chromium().launch();
17-
final Page page = browser.newPage();
18-
page.navigate("https://ecommerce-playground.lambdatest.io/");
19-
final String pageTitle = page.title();
20-
assertEquals(pageTitle, "Your Store");
21-
browser.close();
22-
}
14+
15+
final Playwright playwright = Playwright.create();
16+
final Browser browser = playwright.chromium().launch();
17+
final Page page = browser.newPage();
18+
page.navigate("https://ecommerce-playground.lambdatest.io/");
19+
final String pageTitle = page.title();
20+
assertEquals(pageTitle, "Your Store");
21+
browser.close();
2322
}
2423

24+
2525
@Test
2626
public void testOnChrome() {
27-
try (final Playwright playwright = Playwright.create()) {
28-
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));
29-
final Page page = browser.newPage();
30-
page.navigate("https://ecommerce-playground.lambdatest.io/");
31-
final String pageTitle = page.title();
32-
assertEquals(pageTitle, "Your Store");
33-
browser.close();
34-
}
27+
28+
final Playwright playwright = Playwright.create();
29+
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));
30+
final Page page = browser.newPage();
31+
page.navigate("https://ecommerce-playground.lambdatest.io/");
32+
final String pageTitle = page.title();
33+
assertEquals(pageTitle, "Your Store");
34+
browser.close();
3535
}
3636

3737
@Test
3838
public void testOnFirefoxHeadless() {
39-
try (final Playwright playwright = Playwright.create()) {
40-
final Browser browser = playwright.firefox().launch();
41-
final Page page = browser.newPage();
42-
page.navigate("https://ecommerce-playground.lambdatest.io/");
43-
final String pageTitle = page.title();
44-
assertEquals(pageTitle, "Your Store");
45-
browser.close();
46-
}
39+
final Playwright playwright = Playwright.create();
40+
final Browser browser = playwright.firefox().launch();
41+
final Page page = browser.newPage();
42+
page.navigate("https://ecommerce-playground.lambdatest.io/");
43+
final String pageTitle = page.title();
44+
assertEquals(pageTitle, "Your Store");
45+
browser.close();
4746
}
4847

4948
@Test
5049
public void testOnFirefox() {
51-
try (final Playwright playwright = Playwright.create()) {
52-
final Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false));
53-
final Page page = browser.newPage();
54-
page.navigate("https://ecommerce-playground.lambdatest.io/");
55-
final String pageTitle = page.title();
56-
assertEquals(pageTitle, "Your Store");
57-
browser.close();
58-
}
50+
final Playwright playwright = Playwright.create();
51+
final Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false));
52+
final Page page = browser.newPage();
53+
page.navigate("https://ecommerce-playground.lambdatest.io/");
54+
final String pageTitle = page.title();
55+
assertEquals(pageTitle, "Your Store");
56+
browser.close();
57+
5958
}
6059

6160
@Test
6261
public void testOnFirefoxSlowMo() {
63-
try (final Playwright playwright = Playwright.create()) {
64-
final Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(100));
65-
final Page page = browser.newPage();
66-
page.navigate("https://ecommerce-playground.lambdatest.io/");
67-
final String pageTitle = page.title();
68-
assertEquals(pageTitle, "Your Store");
69-
browser.close();
70-
}
62+
final Playwright playwright = Playwright.create();
63+
final Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(100));
64+
final Page page = browser.newPage();
65+
page.navigate("https://ecommerce-playground.lambdatest.io/");
66+
final String pageTitle = page.title();
67+
assertEquals(pageTitle, "Your Store");
68+
browser.close();
7169
}
7270

7371
@Test
7472
public void testOnChromeSlowMo() {
75-
try (final Playwright playwright = Playwright.create()) {
76-
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(100));
77-
final Page page = browser.newPage();
78-
page.navigate("https://ecommerce-playground.lambdatest.io/");
79-
final String pageTitle = page.title();
80-
assertEquals(pageTitle, "Your Store");
81-
browser.close();
82-
}
73+
final Playwright playwright = Playwright.create();
74+
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(2000));
75+
final Page page = browser.newPage();
76+
page.navigate("https://ecommerce-playground.lambdatest.io/");
77+
final String pageTitle = page.title();
78+
assertEquals(pageTitle, "Your Store");
79+
browser.close();
8380
}
8481

85-
@Test
86-
public void testOnEdge() {
87-
try (final Playwright playwright = Playwright.create()) {
82+
@Test
83+
public void testOnEdge() {
84+
final Playwright playwright = Playwright.create();
8885
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("msedge"));
89-
final Page page = browser.newPage();
90-
page.navigate("https://ecommerce-playground.lambdatest.io/");
91-
final String pageTitle = page.title();
92-
assertEquals(pageTitle, "Your Store");
93-
browser.close();
86+
final Page page = browser.newPage();
87+
page.navigate("https://ecommerce-playground.lambdatest.io/");
88+
final String pageTitle = page.title();
89+
assertEquals(pageTitle, "Your Store");
90+
browser.close();
9491
}
95-
}
9692
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package io.github.mfaisalkhatri.tests;
2+
3+
import com.microsoft.playwright.*;
4+
import io.github.mfaisalkhatri.browsers.BrowserManager;
5+
import org.testng.annotations.Test;
6+
7+
import static org.testng.Assert.assertEquals;
8+
9+
public class WindowSizeTest {
10+
11+
@Test
12+
public void testDifferentWindowSize() {
13+
14+
final Playwright playwright = Playwright.create();
15+
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)
16+
.setChannel("chrome"));
17+
final Page page = browser.newPage();
18+
page.setViewportSize(1024,768);
19+
page.navigate("https://www.lambdatest.com/selenium-playground/");
20+
21+
final Locator pageHeader = page.locator(".wrapper h1");
22+
final String pageHeaderText = pageHeader.textContent();
23+
assertEquals(pageHeaderText, "Selenium Playground");
24+
browser.close();
25+
26+
}
27+
28+
@Test
29+
public void testDifferentWindowSizeMethodTwo() {
30+
31+
final Playwright playwright = Playwright.create();
32+
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)
33+
.setChannel("chrome"));
34+
35+
final BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(600,800));
36+
final Page page = context.newPage();
37+
38+
page.navigate("https://www.lambdatest.com/selenium-playground/");
39+
40+
final Locator pageHeader = page.locator(".wrapper h1");
41+
final String pageHeaderText = pageHeader.textContent();
42+
assertEquals(pageHeaderText, "Selenium Playground");
43+
browser.close();
44+
45+
}
46+
47+
}

test-suites/testng-browsertest.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
<classes>
66
<class name="io.github.mfaisalkhatri.tests.PlaywrightDemoTests">
77
<methods>
8-
<include name="testOnChrome"/>
98
<include name="testOnChromeHeadless"/>
10-
<include name="testOnFirefox"/>
9+
<include name="testOnChrome"/>
1110
<include name="testOnFirefoxHeadless"/>
11+
<include name="testOnFirefox"/>
1212
<include name="testOnChromeSlowMo"/>
1313
<include name="testOnFirefoxSlowMo"/>
1414
<include name="testOnEdge"/>
1515
</methods>
1616
</class>
1717
</classes>
1818
</test> <!-- Test -->
19-
<test name="Refactored web automation test with Playwright on Chrome">
19+
<test name="Refactored web automation test with Playwright on Chrome" enabled="false">
2020
<parameter name="browser" value="chrome"/>
2121
<classes>
2222
<class name="io.github.mfaisalkhatri.tests.RefactoredPlaywrightTests">
@@ -26,7 +26,7 @@
2626
</class>
2727
</classes>
2828
</test>
29-
<test name="Refactored web automation test with Playwright on Firefox">
29+
<test name="Refactored web automation test with Playwright on Firefox" enabled="false">
3030
<parameter name="browser" value="firefox"/>
3131
<classes>
3232
<class name="io.github.mfaisalkhatri.tests.RefactoredPlaywrightTests">
@@ -36,7 +36,7 @@
3636
</class>
3737
</classes>
3838
</test>
39-
<test name="Refactored web automation test with Playwright on Edge">
39+
<test name="Refactored web automation test with Playwright on Edge" enabled="false">
4040
<parameter name="browser" value="edge"/>
4141
<classes>
4242
<class name="io.github.mfaisalkhatri.tests.RefactoredPlaywrightTests">

test-suites/testng-formauthenticationtests.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
33
<suite name="Browser Navigation test suite">
44
<test name="Browser navigation tests using Playwright on Chrome">
5-
<parameter name="browser" value="chrome"/>
5+
<parameter name="browser" value="firefox"/>
66
<classes>
77
<class name="io.github.mfaisalkhatri.tests.FormAuthenticationTests">
88
<methods>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Browser Navigation test suite " >
4+
<test name="Browser navigation tests using Playwright on Chrome" parallel="methods">
5+
<parameter name="browser" value="chrome"/>
6+
<classes>
7+
<class name="io.github.mfaisalkhatri.tests.WindowSizeTest">
8+
<methods>
9+
<include name="testDifferentWindowSize"/>
10+
<include name="testDifferentWindowSizeMethodTwo"/>
11+
</methods>
12+
</class>
13+
</classes>
14+
</test>
15+
</suite> <!-- Suite -->

0 commit comments

Comments
 (0)