Skip to content

Commit b092c7f

Browse files
added example code to take screenshots (#56)
* added screenshot test 1 * updated versions of dependencies in pom.xml * added example code to add full page screenshot * added example code to capture screenshot to buffer * added example code to capture element screenshot
1 parent c39aee4 commit b092c7f

5 files changed

Lines changed: 101 additions & 5 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ target/
3131
build/
3232
!**/src/main/**/build/
3333
!**/src/test/**/build/
34+
/screenshots/
3435

3536
### VS Code ###
3637
.vscode/

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
<properties>
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15-
<playwright.version>1.38.0</playwright.version>
16-
<testng.version>7.8.0</testng.version>
17-
<maven.compiler.version>3.11.0</maven.compiler.version>
18-
<surefire.version>3.1.2</surefire.version>
15+
<playwright.version>1.41.2</playwright.version>
16+
<testng.version>7.9.0</testng.version>
17+
<maven.compiler.version>3.12.1</maven.compiler.version>
18+
<surefire.version>3.2.5</surefire.version>
1919
<java.release.version>17</java.release.version>
2020
<maven.source.encoding>UTF-8</maven.source.encoding>
2121
<suite-xml>test-suites/testng.xml</suite-xml>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package io.github.mfaisalkhatri.tests;
2+
3+
import com.microsoft.playwright.Locator;
4+
import com.microsoft.playwright.Page;
5+
import com.microsoft.playwright.options.AriaRole;
6+
import org.testng.annotations.Test;
7+
8+
import java.nio.file.Paths;
9+
import java.text.DateFormat;
10+
import java.text.SimpleDateFormat;
11+
import java.time.ZoneId;
12+
import java.util.Base64;
13+
import java.util.Date;
14+
import java.util.TimeZone;
15+
16+
import static org.testng.Assert.assertEquals;
17+
18+
public class ScreenshotTests extends BaseTest{
19+
20+
@Test
21+
public void takeScreenshotTest() {
22+
final String websiteLink = "https://the-internet.herokuapp.com/";
23+
final Page page = this.browserManager.getPage();
24+
page.navigate(websiteLink);
25+
26+
DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd_hh:mm:ss");
27+
dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));
28+
29+
page.screenshot(new Page.ScreenshotOptions()
30+
.setPath(Paths.get("./screenshots/screenshot_" + dateFormat.format(new Date()) + ".png")));
31+
32+
33+
assertEquals(page.url(), websiteLink);
34+
35+
final String pageTitle = page.title();
36+
assertEquals(pageTitle, "The Internet");
37+
}
38+
39+
40+
@Test
41+
public void takeFullPageScreenshot() {
42+
final String websiteLink = "https://ecommerce-playground.lambdatest.io/";
43+
final Page page = this.browserManager.getPage();
44+
page.navigate(websiteLink);
45+
46+
DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd_hh:mm:ss");
47+
dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));
48+
49+
page.screenshot(new Page.ScreenshotOptions()
50+
.setPath(Paths.get("./screenshots/screenshot_" + dateFormat.format(new Date()) + ".png")).setFullPage(true));
51+
52+
assertEquals(page.url(), websiteLink);
53+
}
54+
55+
@Test
56+
public void captureScreenshotToBuffer () {
57+
final String websiteLink = "https://ecommerce-playground.lambdatest.io/";
58+
final Page page = this.browserManager.getPage();
59+
page.navigate(websiteLink);
60+
61+
byte[] buffer = page.screenshot();
62+
System.out.println(Base64.getEncoder().encodeToString(buffer));
63+
64+
assertEquals(page.url(), websiteLink);
65+
}
66+
67+
@Test
68+
public void takeElementScreenshot (){
69+
final String websiteLink = "https://ecommerce-playground.lambdatest.io/";
70+
final Page page = this.browserManager.getPage();
71+
page.navigate(websiteLink);
72+
73+
page.getByRole(AriaRole.TEXTBOX, new Page.GetByRoleOptions().setName("Search For Products"))
74+
.screenshot(new Locator.ScreenshotOptions().setPath(Paths.get("./screenshots/screenshot_element.png")));
75+
}
76+
77+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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">
5+
<parameter name="browser" value="chrome"/>
6+
<classes>
7+
<class name="io.github.mfaisalkhatri.tests.ScreenshotTests">
8+
<methods>
9+
<include name="takeScreenshotTest"/>
10+
<include name="takeFullPageScreenshot"/>
11+
<include name="captureScreenshotToBuffer"/>
12+
<include name="takeElementScreenshot"/>
13+
</methods>
14+
</class>
15+
</classes>
16+
</test>
17+
</suite> <!-- Suite -->

test-suites/testng.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3-
<suite name="LambdaTest ecommerce playground website test suite " parallel="tests">
3+
<suite name="Playwright framework example tests " parallel="tests">
44
<suite-files>
55
<suite-file path="testng-browsertest.xml"/>
66
<suite-file path="testng-browsernavigationtests.xml"/>
77
<suite-file path="testng-formauthenticationtests.xml"/>
88
<suite-file path="testng-windowsizetests.xml"/>
99
<suite-file path="testng-doubleclicktests.xml"/>
10+
<suite-file path="testng-screenshottests.xml"/>
1011
</suite-files>
1112
</suite> <!-- Suite -->

0 commit comments

Comments
 (0)