Skip to content

Commit 1aabfe0

Browse files
committed
Version 2023.03.20: Detect and fail on static Page/Endpoint object creation
1 parent 73e7f01 commit 1aabfe0

File tree

25 files changed

+109
-68
lines changed

25 files changed

+109
-68
lines changed

mrchecker-framework-modules/mrchecker-cli-module/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<parent>
77
<artifactId>mrchecker-test-framework</artifactId>
88
<groupId>com.capgemini.mrchecker</groupId>
9-
<version>2023.03.16</version>
9+
<version>2023.03.20</version>
1010
</parent>
1111

1212
<artifactId>mrchecker-cli-module</artifactId>
13-
<version>2023.03.16</version>
13+
<version>2023.03.20</version>
1414
<packaging>jar</packaging>
1515
<name>MrChecker - CLI - Module</name>
1616
<description>MrChecker CLI Module supports:
@@ -60,7 +60,7 @@
6060
<dependency>
6161
<groupId>${project.groupId}</groupId>
6262
<artifactId>mrchecker-core-module</artifactId>
63-
<version>2023.03.16</version>
63+
<version>2023.03.20</version>
6464
</dependency>
6565
</dependencies>
6666

mrchecker-framework-modules/mrchecker-core-module/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<artifactId>mrchecker-test-framework</artifactId>
99
<groupId>com.capgemini.mrchecker</groupId>
10-
<version>2023.03.16</version>
10+
<version>2023.03.20</version>
1111
</parent>
1212

1313
<artifactId>mrchecker-core-module</artifactId>
14-
<version>2023.03.16</version>
14+
<version>2023.03.20</version>
1515
<packaging>jar</packaging>
1616
<name>MrChecker - Test core - Module</name>
1717
<description>MrChecker Test Framework Core is responsible for:

mrchecker-framework-modules/mrchecker-core-module/src/main/java/com/capgemini/mrchecker/test/core/Page.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.capgemini.mrchecker.test.core;
22

3+
import com.capgemini.mrchecker.test.core.exceptions.BFStaticVariableException;
34
import com.capgemini.mrchecker.test.core.logger.BFLogger;
45

56
public abstract class Page implements ITestObserver {
@@ -79,4 +80,15 @@ public void onTestExecutionException() {
7980
public final void addToTestExecutionObserver() {
8081
TEST_EXECUTION_OBSERVER.addObserver(this);
8182
}
83+
84+
protected void verifyStaticObject(boolean allowStaticObject, String objectName) {
85+
if (!allowStaticObject) {
86+
StackTraceElement[] stackTrace = new Exception().getStackTrace();
87+
for (StackTraceElement stackTraceElement : stackTrace) {
88+
if (stackTraceElement.getMethodName().equalsIgnoreCase("<clinit>")) {
89+
throw new BFStaticVariableException(objectName);
90+
}
91+
}
92+
}
93+
}
8294
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.capgemini.mrchecker.test.core.exceptions;
2+
3+
public class BFStaticVariableException extends RuntimeException {
4+
private static final String MESSAGE_FORMAT = "Mr Checker does not support static %s variables";
5+
6+
public BFStaticVariableException(String objectName) {
7+
super(String.format(MESSAGE_FORMAT, objectName));
8+
}
9+
}

mrchecker-framework-modules/mrchecker-database-module/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<parent>
77
<artifactId>mrchecker-test-framework</artifactId>
88
<groupId>com.capgemini.mrchecker</groupId>
9-
<version>2023.03.16</version>
9+
<version>2023.03.20</version>
1010
</parent>
1111

1212
<artifactId>mrchecker-database-module</artifactId>
13-
<version>2023.03.16</version>
13+
<version>2023.03.20</version>
1414
<packaging>jar</packaging>
1515
<name>MrChecker - Database - Module</name>
1616
<description>MrChecker Database Module:
@@ -80,7 +80,7 @@
8080
<dependency>
8181
<groupId>${project.groupId}</groupId>
8282
<artifactId>mrchecker-core-module</artifactId>
83-
<version>2023.03.16</version>
83+
<version>2023.03.20</version>
8484
</dependency>
8585

8686
<!-- JPA dependencies -->

mrchecker-framework-modules/mrchecker-mobile-module/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<artifactId>mrchecker-test-framework</artifactId>
99
<groupId>com.capgemini.mrchecker</groupId>
10-
<version>2023.03.16</version>
10+
<version>2023.03.20</version>
1111
</parent>
1212

1313
<artifactId>mrchecker-mobile-module</artifactId>
14-
<version>2023.03.16</version>
14+
<version>2023.03.20</version>
1515
<packaging>jar</packaging>
1616
<name>MrChecker - Mobile - Module</name>
1717
<description>MrChecker Test Framework name supports:
@@ -52,12 +52,12 @@
5252
<dependency>
5353
<groupId>${project.groupId}</groupId>
5454
<artifactId>mrchecker-core-module</artifactId>
55-
<version>2023.03.16</version>
55+
<version>2023.03.20</version>
5656
</dependency>
5757
<dependency>
5858
<groupId>${project.groupId}</groupId>
5959
<artifactId>mrchecker-selenium-module</artifactId>
60-
<version>2023.03.16</version>
60+
<version>2023.03.20</version>
6161
</dependency>
6262

6363
<!--This dependency is necessary for Appium plugin. -->

mrchecker-framework-modules/mrchecker-playwright-module/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<artifactId>mrchecker-test-framework</artifactId>
99
<groupId>com.capgemini.mrchecker</groupId>
10-
<version>2023.03.16</version>
10+
<version>2023.03.20</version>
1111
</parent>
1212

1313
<artifactId>mrchecker-playwright-module</artifactId>
14-
<version>2023.03.16</version>
14+
<version>2023.03.20</version>
1515
<packaging>jar</packaging>
1616
<name>MrChecker - Playwright - Module</name>
1717
<description>MrChecker Test Framework Playwright</description>
@@ -68,7 +68,7 @@
6868
<dependency>
6969
<groupId>${project.groupId}</groupId>
7070
<artifactId>mrchecker-core-module</artifactId>
71-
<version>2023.03.16</version>
71+
<version>2023.03.20</version>
7272
</dependency>
7373

7474
<!--This dependency is necessary for Playwright plugin. -->

mrchecker-framework-modules/mrchecker-playwright-module/src/main/java/com/capgemini/mrchecker/playwright/core/BasePage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public BasePage(com.microsoft.playwright.Page page) {
6565
}
6666

6767
public BasePage(com.microsoft.playwright.Page page, BasePage parent) {
68+
verifyStaticObject(PROPERTIES_PLAYWRIGHT.getAllowStaticPage(), "Page");
6869
setParent(parent);
6970
setPage(page);
7071

mrchecker-framework-modules/mrchecker-playwright-module/src/main/java/com/capgemini/mrchecker/playwright/core/base/properties/PropertiesPlaywright.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class PropertiesPlaywright {
99
private String channel;
1010
private String browsersPath = "./lib/playwright";
1111
private int skipBrowserDownload = 0;
12+
private boolean allowStaticPage = false;
1213

1314
@Inject(optional = true)
1415
@SuppressWarnings("unused")
@@ -49,4 +50,14 @@ private void setSkipBrowserDownload(@Named("playwright.browser.skipDownload") in
4950
public int getSkipBrowserDownload() {
5051
return skipBrowserDownload;
5152
}
53+
54+
@Inject(optional = true)
55+
@SuppressWarnings("unused")
56+
private void setAllowStaticPage(@Named("playwright.allowStaticPage") boolean value) {
57+
this.allowStaticPage = value;
58+
}
59+
60+
public boolean getAllowStaticPage() {
61+
return allowStaticPage;
62+
}
5263
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
playwright.browser.proxy=
22
playwright.browser.channel=
33
playwright.browser.downloadPath=./lib/playwright
4-
playwright.browser.skipDownload=0
4+
playwright.browser.skipDownload=0
5+
playwright.allowStaticPage=false

0 commit comments

Comments
 (0)