Skip to content

Commit 5f27535

Browse files
updated dependency versions and refactored logger class (#46)
* updated dependency versions and refactored logger class * added logger in restful booker end to end tests * handled no response body generation case in logger * updated logger and handled blank and empty responses
1 parent ba33077 commit 5f27535

File tree

7 files changed

+72
-57
lines changed

7 files changed

+72
-57
lines changed

pom.xml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@
1212

1313
<properties>
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15-
<playwright-version>1.47.0</playwright-version>
15+
<playwright-version>1.49.0</playwright-version>
1616
<testng-version>7.10.2</testng-version>
1717
<hamcrest-all-version>1.3</hamcrest-all-version>
1818
<json-simple-version>1.1.1</json-simple-version>
19-
<lombok-version>1.18.34</lombok-version>
20-
<datafaker-version>2.4.0</datafaker-version>
19+
<lombok-version>1.18.36</lombok-version>
20+
<datafaker-version>2.4.2</datafaker-version>
2121
<gson-version>2.11.0</gson-version>
2222
<org-json-verion>20240303</org-json-verion>
23-
<jackson-databind-version>2.18.0</jackson-databind-version>
23+
<jackson-databind-version>2.18.2</jackson-databind-version>
2424
<log4j-core-version>2.24.1</log4j-core-version>
2525
<log4j-api-version>2.24.1</log4j-api-version>
26+
<commons-lang3-version>3.17.0</commons-lang3-version>
2627
<maven-compiler-plugin-version>3.13.0</maven-compiler-plugin-version>
2728
<maven-surefire-plugin-version>3.3.1</maven-surefire-plugin-version>
2829
<java-release-version>17</java-release-version>
29-
<maven-enforcer-version>3.5.0</maven-enforcer-version>
30+
<maven-enforcer-version>3.5.2</maven-enforcer-version>
3031
<suite-xml>test-suite/testng.xml</suite-xml>
3132
</properties>
3233
<dependencies>
33-
<!-- https://mvnrepository.com/artifact/com.microsoft.playwright/playwright -->
3434
<dependency>
3535
<groupId>com.microsoft.playwright</groupId>
3636
<artifactId>playwright</artifactId>
@@ -46,7 +46,6 @@
4646
<artifactId>json</artifactId>
4747
<version>${org-json-verion}</version>
4848
</dependency>
49-
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
5049
<dependency>
5150
<groupId>org.projectlombok</groupId>
5251
<artifactId>lombok</artifactId>
@@ -78,6 +77,12 @@
7877
<artifactId>log4j-core</artifactId>
7978
<version>${log4j-core-version}</version>
8079
</dependency>
80+
<dependency>
81+
<groupId>org.apache.commons</groupId>
82+
<artifactId>commons-lang3</artifactId>
83+
<version>${commons-lang3-version}</version>
84+
</dependency>
85+
8186
</dependencies>
8287
<build>
8388
<pluginManagement>
@@ -133,4 +138,4 @@
133138
</plugins>
134139
</pluginManagement>
135140
</build>
136-
</project>
141+
</project>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.github.mfaisalkhatri.api.logger;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.microsoft.playwright.APIResponse;
6+
import org.apache.commons.lang3.StringUtils;
7+
import org.apache.logging.log4j.LogManager;
8+
9+
10+
public class Logger {
11+
12+
private final APIResponse response;
13+
private final org.apache.logging.log4j.Logger log;
14+
15+
public Logger (final APIResponse response) {
16+
this.response = response;
17+
this.log = LogManager.getLogger (getClass ());
18+
}
19+
20+
public void logResponseDetails () {
21+
String responseBody = this.response.text ();
22+
this.log.info ("Logging Response Details....\n responseHeaders: {}, \nstatusCode: {},",
23+
this.response.headers (), this.response.status ());
24+
this.log.info ("\n Response body: {}", prettyPrintJson (responseBody));
25+
this.log.info ("End of Logs!");
26+
}
27+
28+
private String prettyPrintJson (final String text) {
29+
if (StringUtils.isNotBlank (text) && StringUtils.isNotEmpty (text)) {
30+
try {
31+
final ObjectMapper objectMapper = new ObjectMapper ();
32+
final Object jsonObject = objectMapper.readValue (text, Object.class);
33+
return objectMapper.writerWithDefaultPrettyPrinter ()
34+
.writeValueAsString (jsonObject);
35+
} catch (final JsonProcessingException e) {
36+
this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e);
37+
}
38+
}
39+
return "No response body found!";
40+
41+
}
42+
}
43+

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import java.util.HashMap;
44
import java.util.Map;
55

6+
import com.microsoft.playwright.APIResponse;
67
import io.github.mfaisalkhatri.api.manager.RequestManager;
8+
import io.github.mfaisalkhatri.api.logger.Logger;
79
import org.testng.annotations.AfterTest;
810
import org.testng.annotations.BeforeTest;
911

@@ -31,4 +33,9 @@ public void tearDown() {
3133
this.manager.disposeAPIRequestContext();
3234
this.manager.closePlaywright();
3335
}
36+
37+
protected void logResponse (final APIResponse response) {
38+
final Logger logger = new Logger (response);
39+
logger.logResponseDetails ();
40+
}
3441
}

src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/RestfulBookerEndToEndTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public void createBookingTest() {
3535
final APIResponse response = this.manager.postRequest("/booking", RequestOptions.create()
3636
.setData(this.bookingData));
3737

38+
logResponse (response);
3839
assertEquals(response.status(), 200);
3940

4041
final JSONObject responseObject = new JSONObject(response.text());
@@ -51,6 +52,7 @@ public void createBookingTest() {
5152
@Test
5253
public void getBookingTest() {
5354
final APIResponse response = this.manager.getRequest("/booking/" + this.bookingId);
55+
logResponse (response);
5456
assertEquals(response.status(), 200);
5557

5658
final JSONObject responseObject = new JSONObject(response.text());
@@ -67,6 +69,7 @@ public void updateBookingTest() {
6769
final APIResponse response = this.manager.putRequest("/booking/" + this.bookingId, RequestOptions.create()
6870
.setData(updateBookingData)
6971
.setHeader("Cookie", "token=" + this.token));
72+
logResponse (response);
7073
assertEquals(response.status(), 200);
7174

7275
final JSONObject responseObject = new JSONObject(response.text());
@@ -82,6 +85,7 @@ public void generateTokenTest() {
8285
final Tokencreds tokenData = getToken();
8386
final APIResponse response = this.manager.postRequest("/auth", RequestOptions.create()
8487
.setData(tokenData));
88+
logResponse (response);
8589
assertEquals(response.status(), 200);
8690

8791
final JSONObject responseObject = new JSONObject(response.text());
@@ -99,6 +103,7 @@ public void updatePartialBookingTest() {
99103
.setData(partialBookingData)
100104
.setHeader("Cookie", "token=" + this.token));
101105

106+
logResponse (response);
102107
assertEquals(response.status(), 200);
103108
final JSONObject responseObject = new JSONObject(response.text());
104109

@@ -111,12 +116,14 @@ public void deleteBookingTest() {
111116
final APIResponse response = this.manager.deleteRequest("/booking/" + this.bookingId, RequestOptions.create()
112117
.setHeader("Cookie", "token=" + this.token));
113118

119+
logResponse (response);
114120
assertEquals(response.status(), 201);
115121
}
116122

117123
@Test
118124
public void testBookingDeleted() {
119125
final APIResponse response = this.manager.getRequest("/booking/" + this.bookingId);
126+
logResponse (response);
120127
assertEquals(response.status(), 404);
121128
}
122129
}

src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/BaseTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.microsoft.playwright.APIRequestContext;
88
import com.microsoft.playwright.APIResponse;
99
import com.microsoft.playwright.Playwright;
10+
import io.github.mfaisalkhatri.api.logger.Logger;
1011
import org.testng.annotations.AfterClass;
1112
import org.testng.annotations.BeforeClass;
1213

src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java

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

test-suite/testng.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3-
<suite name="APi Test Automation with Playwright">
3+
<suite name="API Test Automation with Playwright">
44
<suite-files>
55
<suite-file path="testng-reqres.xml"/>
66
<suite-file path="testng-restfulbooker.xml"/>

0 commit comments

Comments
 (0)