Skip to content

Commit ece5e3e

Browse files
authored
Feature/test containers env support (#432)
* test containers authored-by: Dariusz Czajkiewicz <external.dariusz.czajkiewicz@kuehne-nagel.com>
1 parent 2b6e0ed commit ece5e3e

22 files changed

Lines changed: 988 additions & 42 deletions

File tree

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,16 @@ This repository includes:
3939
Easy adoption, ready-to-use assets, skilled workforce, years of collective experience, skilled architects
4040

4141

42-
42+
## Mr. Checker Test Containers support
43+
***Docker environment is needed to run TestContainers***
44+
* Running tests with Test Containers requires:
45+
* Adding container to resources in **MyTestResources** class
46+
![img.png](mrchecker-playwright-framework/README/images/my-container-resources-class.png)
47+
* Extending test with the **BaseContainersTest**
48+
* Using Mock server
49+
* Mock server starts as part of TestContainers tests
50+
* Mocking server rules can be set in the **MyMockServerClient** class
51+
* Examples included in the **MyMockServerClient** class
4352

4453

4554

mrchecker-playwright-framework/.env

Whitespace-only changes.
72.7 KB
Loading

mrchecker-playwright-framework/pom.xml

Lines changed: 140 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,24 @@
2828

2929
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3030

31-
<maven.compiler.plugin>3.11.0</maven.compiler.plugin>
32-
<maven.surefire.plugin>3.2.2</maven.surefire.plugin>
31+
<maven.compiler.plugin>3.13.0</maven.compiler.plugin>
32+
<maven.surefire.plugin>3.5.2</maven.surefire.plugin>
33+
34+
<!-- QUARKUS -->
35+
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
36+
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
37+
<quarkus.platform.version>3.18.3</quarkus.platform.version>
38+
39+
<testcontainers.reuse.enable>true</testcontainers.reuse.enable>
3340

3441
<thread.count>3</thread.count>
3542
<env>ENV1</env>
3643
<!-- PLAYWRIGHT -->
37-
<playwright.verion>1.45.0</playwright.verion>
44+
<playwright.version>1.45.0</playwright.version>
3845

3946
<!-- JUNIT -->
4047
<junit.version>5.10.3</junit.version>
41-
<junit.platform.version>1.10.1</junit.platform.version>
48+
<junit.platform.version>1.10.5</junit.platform.version>
4249
<junit.toolbox.version>2.4</junit.toolbox.version>
4350
<aspectj.version>1.9.20.1</aspectj.version>
4451

@@ -48,6 +55,7 @@
4855
<allure.report.directory>${project.basedir}/target</allure.report.directory>
4956

5057
<!-- Logger -->
58+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
5159
<log4j.version>2.23.1</log4j.version>
5260
<slf4j.version>1.7.30</slf4j.version>
5361
<json-simple.version>1.1.1</json-simple.version>
@@ -58,20 +66,118 @@
5866
<json-path.version>2.9.0</json-path.version>
5967
<config.version>1.4.3</config.version>
6068
<awaitility.version>4.2.1</awaitility.version>
69+
<playwright.version>1.45.0</playwright.version>
6170
</properties>
71+
<repositories>
72+
<repository>
73+
<id>central1</id>
74+
<name>Central Repository</name>
75+
<url>https://repo1.maven.org/maven2</url>
76+
<layout>default</layout>
77+
<snapshots>
78+
<enabled>false</enabled>
79+
</snapshots>
80+
</repository>
81+
</repositories>
82+
83+
<dependencyManagement>
84+
<dependencies>
85+
<dependency>
86+
<groupId>${quarkus.platform.group-id}</groupId>
87+
<artifactId>${quarkus.platform.artifact-id}</artifactId>
88+
<version>${quarkus.platform.version}</version>
89+
<type>pom</type>
90+
<scope>import</scope>
91+
</dependency>
92+
</dependencies>
93+
</dependencyManagement>
94+
6295
<dependencies>
96+
<dependency>
97+
<groupId>io.quarkus</groupId>
98+
<artifactId>quarkus-test-common</artifactId>
99+
<version>3.18.3</version>
100+
</dependency>
101+
<dependency>
102+
<groupId>io.quarkus</groupId>
103+
<artifactId>quarkus-junit5</artifactId>
104+
<version>${quarkus.platform.version}</version>
105+
<scope>test</scope>
106+
<exclusions>
107+
<exclusion>
108+
<groupId>org.junit.vintage</groupId>
109+
<artifactId>junit-vintage-engine</artifactId>
110+
</exclusion>
111+
</exclusions>
112+
</dependency>
113+
<dependency>
114+
<groupId>io.quarkus</groupId>
115+
<artifactId>quarkus-arc</artifactId>
116+
<version>3.18.3</version>
117+
</dependency>
118+
<dependency>
119+
<groupId>com.google.auto.service</groupId>
120+
<artifactId>auto-service</artifactId>
121+
<version>1.1.1</version>
122+
</dependency>
123+
<dependency>
124+
<groupId>com.google.auto.service</groupId>
125+
<artifactId>auto-service-annotations</artifactId>
126+
<version>1.1.1</version>
127+
<scope>provided</scope>
128+
</dependency>
129+
130+
131+
132+
<dependency>
133+
<groupId>org.testcontainers</groupId>
134+
<artifactId>testcontainers</artifactId>
135+
<version>1.20.4</version>
136+
<scope>test</scope>
137+
</dependency>
138+
<dependency>
139+
<groupId>org.testcontainers</groupId>
140+
<artifactId>junit-jupiter</artifactId>
141+
<version>1.20.4</version>
142+
<scope>test</scope>
143+
</dependency>
144+
<dependency>
145+
<groupId>org.testcontainers</groupId>
146+
<artifactId>mockserver</artifactId>
147+
<version>1.20.4</version>
148+
<scope>test</scope>
149+
</dependency>
150+
<dependency>
151+
<groupId>org.mock-server</groupId>
152+
<artifactId>mockserver-client-java</artifactId>
153+
<version>5.15.0</version>
154+
</dependency>
155+
156+
157+
<dependency>
158+
<groupId>org.eclipse.microprofile.config</groupId>
159+
<artifactId>microprofile-config-api</artifactId>
160+
<version>3.1</version>
161+
</dependency>
162+
63163

64164
<dependency>
65165
<groupId>com.microsoft.playwright</groupId>
66166
<artifactId>playwright</artifactId>
67-
<version>${playwright.verion}</version>
167+
<version>${playwright.version}</version>
68168
</dependency>
69169

70170
<dependency>
71171
<groupId>org.junit.jupiter</groupId>
72172
<artifactId>junit-jupiter-engine</artifactId>
73173
<version>${junit.version}</version>
74174
<scope>compile</scope>
175+
<exclusions>
176+
<exclusion>
177+
<groupId>org.junit.vintage</groupId>
178+
<artifactId>junit-vintage-engine</artifactId>
179+
</exclusion>
180+
</exclusions>
75181
</dependency>
76182

77183
<dependency>
@@ -212,6 +318,22 @@
212318
</testResource>
213319
</testResources>
214320
<plugins>
321+
<plugin>
322+
<groupId>${quarkus.platform.group-id}</groupId>
323+
<artifactId>quarkus-maven-plugin</artifactId>
324+
<version>${quarkus.platform.version}</version>
325+
<extensions>true</extensions>
326+
<executions>
327+
<execution>
328+
<goals>
329+
<goal>build</goal>
330+
<goal>generate-code</goal>
331+
<goal>generate-code-tests</goal>
332+
<goal>native-image-agent</goal>
333+
</goals>
334+
</execution>
335+
</executions>
336+
</plugin>
215337
<plugin>
216338
<groupId>org.apache.maven.plugins</groupId>
217339
<artifactId>maven-compiler-plugin</artifactId>
@@ -232,6 +354,11 @@
232354
-Djdk.net.URLClassPath.disableClassPathURLCheck=true
233355
--add-opens java.base/java.lang=ALL-UNNAMED
234356
</argLine>
357+
<argLine>-Dquarkus.configuration.ignore-unknown=true</argLine>
358+
<argLine>-Djava.util.logging.manager=org.jboss.logmanager.LogManager</argLine>
359+
<systemPropertyVariables>
360+
<junit.platform.configuration.file>src/test/resources/junit-platform.properties</junit.platform.configuration.file>
361+
</systemPropertyVariables>
235362
</configuration>
236363
<dependencies>
237364
<dependency>
@@ -241,6 +368,14 @@
241368
</dependency>
242369
</dependencies>
243370
</plugin>
371+
<plugin>
372+
<groupId>org.apache.maven.plugins</groupId>
373+
<artifactId>maven-failsafe-plugin</artifactId>
374+
<version>3.0.0-M9</version>
375+
<configuration>
376+
<argLine>-Djava.util.logging.manager=org.jboss.logmanager.LogManager</argLine>
377+
</configuration>
378+
</plugin>
244379
<plugin>
245380
<groupId>io.qameta.allure</groupId>
246381
<artifactId>allure-maven</artifactId>

mrchecker-playwright-framework/src/main/java/com/capgemini/framework/playwright/PlaywrightFactory.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,16 @@ public static void initBrowser() {
9898
tlBrowserType.set(tlPlaywright.get()
9999
.firefox());
100100
}
101+
if (tlBrowserType.get() == null) {
102+
tlBrowserType.set(Playwright.create().chromium());
103+
}
101104
tlBrowser.set(tlBrowserType.get()
102-
.launch(new BrowserType.LaunchOptions().setChannel(PlaywrightConfig.browser)
103-
.setHeadless(PlaywrightConfig.headless)
104-
.setSlowMo(PlaywrightConfig.slowMo)));
105-
105+
.launch(new BrowserType.LaunchOptions()
106+
.setChannel(PlaywrightConfig.browser == null ? "chromium" : PlaywrightConfig.browser)
107+
.setHeadless(PlaywrightConfig.headless != null && PlaywrightConfig.headless)
108+
.setSlowMo(PlaywrightConfig.slowMo == null ? 0 : PlaywrightConfig.slowMo)));
109+
110+
106111
}
107112

108113
public static void initAPIRequestContext() {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
4+
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
5+
bean-discovery-mode="annotated">
6+
</beans>

mrchecker-playwright-framework/src/main/resources/META-INF/resources/index.html

Lines changed: 279 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
quarkus.log.console.enable=true
2+
quarkus.log.level=INFO
3+
quarkus.log.category."io.quarkus.bootstrap.classloading".level=ERROR
4+
quarkus.log.category."io.quarkus.bootstrap.classloading.QuarkusClassLoader".level=ERROR
5+
6+
quarkus.arc.unremovable-types=*
7+
quarkus.test.continuous-testing=disabled
8+
9+
testcontainers.mode.debug=true

mrchecker-playwright-framework/src/test/java/com/capgemini/demoQA/DemoQABooksAPITests.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,32 @@
55
import com.capgemini.framework.playwright.BaseTest;
66
import com.capgemini.framework.tags.Status;
77
import com.microsoft.playwright.APIResponse;
8-
import io.qameta.allure.*;
8+
import io.qameta.allure.Description;
9+
import io.qameta.allure.Epic;
10+
import io.qameta.allure.Feature;
11+
import io.qameta.allure.TmsLink;
912
import org.junit.jupiter.api.Tag;
1013
import org.junit.jupiter.api.Test;
1114

1215
import java.io.IOException;
1316

1417
import static com.capgemini.framework.actions.ActionAPI.getApiResponse;
15-
import static org.junit.jupiter.api.Assertions.fail;
1618

1719
public class DemoQABooksAPITests extends BaseTest {
18-
19-
@TmsLink("Test Management System ID")
20-
@Epic(PrjEpics.DEMO_QA)
21-
@Feature("API")
22-
@Description("Test case description")
23-
@Test
24-
@Tag("API")
25-
@Tag(Status.DONE)
26-
void demoQAAPIBooks_getBooks_test() throws IOException {
27-
28-
APIResponse apiResponse = getApiResponse("https://demoqa.com/BookStore/v1/Books");
29-
ResponseAssert.assertThat(apiResponse)
30-
.hasStatusCode(200)
31-
.returnedJsonContainsText("Git Pocket Guide")
32-
.returnedJsonHasCorrectValueInListOfElements("$['books'][*]['title']", "Speaking JavaScript");
33-
}
20+
21+
@TmsLink("Test Management System ID")
22+
@Epic(PrjEpics.DEMO_QA)
23+
@Feature("API")
24+
@Description("Test case description")
25+
@Test
26+
@Tag("API")
27+
@Tag(Status.DONE)
28+
void demoQAAPIBooks_getBooks_test() throws IOException {
29+
30+
APIResponse apiResponse = getApiResponse("https://demoqa.com/BookStore/v1/Books");
31+
ResponseAssert.assertThat(apiResponse)
32+
.hasStatusCode(200)
33+
.returnedJsonContainsText("Git Pocket Guide")
34+
.returnedJsonHasCorrectValueInListOfElements("$['books'][*]['title']", "Speaking JavaScript");
35+
}
3436
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.capgemini.framework.playwright.base;
2+
3+
import com.capgemini.framework.playwright.BaseTest;
4+
import com.capgemini.framework.playwright.infrastructure.resources.MyTestResources;
5+
import io.quarkus.test.common.QuarkusTestResource;
6+
import io.quarkus.test.junit.QuarkusTest;
7+
import org.testcontainers.junit.jupiter.Testcontainers;
8+
9+
@Testcontainers
10+
@QuarkusTest
11+
@QuarkusTestResource(value = MyTestResources.class, parallel = false)
12+
public abstract class BaseContainersTest extends BaseTest {
13+
14+
}
15+

0 commit comments

Comments
 (0)