diff --git a/pom.xml b/pom.xml
index 55d38ba..d9de632 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
com.github.aquality-automation
aquality-selenium-core
- 4.15.0
+ 4.16.0
org.apache.commons
@@ -80,7 +80,7 @@
com.fasterxml.jackson.core
jackson-databind
- 2.21.3
+ 2.22.1
org.slf4j
@@ -116,7 +116,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.14
+ 0.8.15
pre-unit-test
@@ -144,7 +144,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.5
+ 3.5.6
${surefireArgLine} -Dfile.encoding=UTF-8
false
@@ -223,7 +223,7 @@
org.sonatype.central
central-publishing-maven-plugin
- 0.10.0
+ 0.11.0
true
central
diff --git a/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java b/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java
index af80694..dca1dc1 100644
--- a/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java
+++ b/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java
@@ -9,8 +9,8 @@
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.Event;
import org.openqa.selenium.devtools.HasDevTools;
-import org.openqa.selenium.devtools.v148.performance.Performance;
-import org.openqa.selenium.devtools.v148.performance.model.Metric;
+import org.openqa.selenium.devtools.v150.performance.Performance;
+import org.openqa.selenium.devtools.v150.performance.model.Metric;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java b/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java
index 7beba7b..e96e7e9 100644
--- a/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java
+++ b/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java
@@ -2,13 +2,13 @@
import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.devtools.Command;
-import org.openqa.selenium.devtools.v148.dom.model.RGBA;
-import org.openqa.selenium.devtools.v148.emulation.Emulation;
-import org.openqa.selenium.devtools.v148.emulation.model.DevicePosture;
-import org.openqa.selenium.devtools.v148.emulation.model.DisplayFeature;
-import org.openqa.selenium.devtools.v148.emulation.model.MediaFeature;
-import org.openqa.selenium.devtools.v148.emulation.model.ScreenOrientation;
-import org.openqa.selenium.devtools.v148.page.model.Viewport;
+import org.openqa.selenium.devtools.v150.dom.model.RGBA;
+import org.openqa.selenium.devtools.v150.emulation.Emulation;
+import org.openqa.selenium.devtools.v150.emulation.model.DevicePosture;
+import org.openqa.selenium.devtools.v150.emulation.model.DisplayFeature;
+import org.openqa.selenium.devtools.v150.emulation.model.MediaFeature;
+import org.openqa.selenium.devtools.v150.emulation.model.ScreenOrientation;
+import org.openqa.selenium.devtools.v150.page.model.Viewport;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java b/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java
index a899ddc..209341d 100644
--- a/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java
+++ b/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java
@@ -12,9 +12,9 @@
import org.openqa.selenium.devtools.idealized.Javascript;
import org.openqa.selenium.devtools.idealized.ScriptId;
import org.openqa.selenium.devtools.idealized.target.model.SessionID;
-import org.openqa.selenium.devtools.v148.page.Page;
-import org.openqa.selenium.devtools.v148.page.model.ScriptIdentifier;
-import org.openqa.selenium.devtools.v148.runtime.Runtime;
+import org.openqa.selenium.devtools.v150.page.Page;
+import org.openqa.selenium.devtools.v150.page.model.ScriptIdentifier;
+import org.openqa.selenium.devtools.v150.runtime.Runtime;
import org.openqa.selenium.logging.EventType;
import org.openqa.selenium.logging.HasLogEvents;
import org.openqa.selenium.remote.Augmenter;
diff --git a/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java b/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java
index 106e466..047da38 100644
--- a/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java
+++ b/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java
@@ -8,7 +8,7 @@
import org.openqa.selenium.UsernameAndPassword;
import org.openqa.selenium.devtools.NetworkInterceptor;
import org.openqa.selenium.devtools.idealized.Network;
-import org.openqa.selenium.devtools.v148.network.model.*;
+import org.openqa.selenium.devtools.v150.network.model.*;
import org.openqa.selenium.remote.http.*;
import java.net.URI;
@@ -22,11 +22,11 @@
import static aquality.selenium.browser.AqualityServices.getBrowser;
import static aquality.selenium.logging.LocalizedLoggerUtility.logByLevel;
-import static org.openqa.selenium.devtools.v148.network.Network.*;
+import static org.openqa.selenium.devtools.v150.network.Network.*;
/**
* DevTools commands for version-independent network interception.
- * For more information, see {@link org.openqa.selenium.devtools.v148.network.Network} and {@link Network}.
+ * For more information, see {@link org.openqa.selenium.devtools.v150.network.Network} and {@link Network}.
*/
public class NetworkHandling {
public static final String LOC_NETWORK_INTERCEPTOR_START = "loc.browser.network.interceptor.start";
@@ -358,7 +358,21 @@ public void emulateConditions(Boolean offline, Number latency, Number downloadTh
*/
public void emulateConditionsByRule(Boolean offline, List matchedNetworkConditions) {
tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()));
- tools.sendCommand(emulateNetworkConditionsByRule(offline, matchedNetworkConditions));
+ tools.sendCommand(emulateNetworkConditionsByRule(Optional.of(offline), Optional.empty(), matchedNetworkConditions));
+ }
+
+ /**
+ * Activates emulation of network conditions for individual requests using URL match patterns.
+ * Unlike the deprecated Network.emulateNetworkConditions this method does not affect `navigator` state.
+ * Use Network.overrideNetworkState to explicitly modify `navigator` behavior.
+ *
+ * @param offline True to emulate internet disconnection.
+ * @param emulateOfflineServiceWorker True to emulate offline service worker.
+ * @param matchedNetworkConditions List of network conditions to apply.
+ */
+ public void emulateConditionsByRule(Boolean offline, Boolean emulateOfflineServiceWorker, List matchedNetworkConditions) {
+ tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()));
+ tools.sendCommand(emulateNetworkConditionsByRule(Optional.of(offline), Optional.of(emulateOfflineServiceWorker), matchedNetworkConditions));
}
/**
diff --git a/src/test/java/manytools/ManyToolsForm.java b/src/test/java/manytools/ManyToolsForm.java
index 67e4dc8..c3a67f4 100644
--- a/src/test/java/manytools/ManyToolsForm.java
+++ b/src/test/java/manytools/ManyToolsForm.java
@@ -1,6 +1,7 @@
package manytools;
import aquality.selenium.browser.AqualityServices;
+import aquality.selenium.core.elements.ElementState;
import aquality.selenium.core.utilities.IActionRetrier;
import aquality.selenium.elements.interfaces.IButton;
import aquality.selenium.elements.interfaces.ILabel;
@@ -12,8 +13,9 @@
public abstract class ManyToolsForm> extends Form {
private static final String BASE_URL = "https://manytools.org/";
- private final ILabel lblValue = getFormLabel().findChildElement(By.xpath(".//code"), getName(), ILabel.class);
- private final IButton btnAgree = getElementFactory().getButton(By.xpath("//button[@mode='primary']"), "Agree");
+ private final ILabel lblValue = getFormLabel().findChildElement(By.xpath(".//code"), getName(), ILabel.class, ElementState.EXISTS_IN_ANY_STATE);
+ private final ILabel lblConsentDialog = getElementFactory().getLabel(By.id("cmpwrapper"), "Cookie consent dialog", ElementState.EXISTS_IN_ANY_STATE);
+ private final IButton btnDecline = lblConsentDialog.findElementInShadowRoot(By.id("cmpbntnotxt"), "Decline cookies", IButton.class);
protected ManyToolsForm(String name) {
super(By.id("maincontent"), name);
@@ -25,7 +27,13 @@ protected ManyToolsForm(String name) {
public T open() {
AqualityServices.get(IActionRetrier.class).doWithRetry(() -> {
AqualityServices.getBrowser().goTo(BASE_URL + getUrlPart());
+ state().waitForDisplayed();
}, Collections.singletonList(TimeoutException.class));
+
+ if (lblConsentDialog.state().isExist() && btnDecline.state().isDisplayed()) {
+ btnDecline.click();
+ lblConsentDialog.state().waitForNotDisplayed();
+ }
return (T) this;
}
diff --git a/src/test/java/manytools/RequestHeadersForm.java b/src/test/java/manytools/RequestHeadersForm.java
index 96a5ba6..5c66809 100644
--- a/src/test/java/manytools/RequestHeadersForm.java
+++ b/src/test/java/manytools/RequestHeadersForm.java
@@ -23,7 +23,7 @@ public String getValue() {
}
public String getNullableValue(String headerName) {
- getFormLabel().state().waitForDisplayed();
+ getHeaderValueLabel.apply("Accept").state().waitForDisplayed();
ILabel valueLabel = getHeaderValueLabel.apply(headerName);
return valueLabel.state().isDisplayed() ? valueLabel.getText() : null;
}
diff --git a/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java b/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java
index 934ff37..2597357 100644
--- a/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java
+++ b/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java
@@ -3,8 +3,8 @@
import aquality.selenium.browser.AqualityServices;
import aquality.selenium.browser.devtools.EmulationHandling;
import com.google.common.collect.ImmutableMap;
-import org.openqa.selenium.devtools.v147.emulation.Emulation;
-import org.openqa.selenium.devtools.v147.emulation.model.DisplayFeature;
+import org.openqa.selenium.devtools.v149.emulation.Emulation;
+import org.openqa.selenium.devtools.v149.emulation.model.DisplayFeature;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
diff --git a/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java b/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java
index 351e123..1e53925 100644
--- a/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java
+++ b/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java
@@ -3,8 +3,8 @@
import aquality.selenium.browser.AqualityServices;
import aquality.selenium.browser.devtools.NetworkHandling;
import org.openqa.selenium.TimeoutException;
-import org.openqa.selenium.devtools.v148.network.model.ConnectionType;
-import org.openqa.selenium.devtools.v148.network.model.NetworkConditions;
+import org.openqa.selenium.devtools.v150.network.model.ConnectionType;
+import org.openqa.selenium.devtools.v150.network.model.NetworkConditions;
import org.testng.Assert;
import org.testng.annotations.Test;
import tests.BaseTest;
@@ -30,11 +30,11 @@ private NetworkHandling network() {
private List getNetworkConditions(int downloadThroughput, int uploadThroughput, ConnectionType connectionType) {
return Collections.singletonList(new NetworkConditions(welcomeForm.getUrl(), LATENCY, downloadThroughput, uploadThroughput,
- Optional.of(connectionType), Optional.empty(), Optional.empty(), Optional.empty()));
+ Optional.of(connectionType), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()));
}
private List getNetworkConditions(int downloadThroughput, int uploadThroughput) {
return Collections.singletonList(new NetworkConditions(welcomeForm.getUrl(), LATENCY, downloadThroughput, uploadThroughput,
- Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()));
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()));
}
@Test
@@ -43,7 +43,7 @@ public void networkSpeedEmulationTest() {
getBrowser().goTo(welcomeForm.getUrl());
Assert.assertTrue(welcomeForm.state().waitForDisplayed(), "Form must be opened");
boolean isOffline = true;
- network().emulateConditionsByRule(isOffline, getNetworkConditions(-1, -1));
+ network().emulateConditionsByRule(isOffline, isOffline, getNetworkConditions(-1, -1));
network().overrideState(isOffline, LATENCY, -1, -1);
getBrowser().refresh();
getBrowser().waitForPageToLoad();
diff --git a/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java b/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java
index 879a592..78bc07b 100644
--- a/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java
+++ b/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java
@@ -8,7 +8,7 @@
import manytools.BrowserLanguageForm;
import manytools.UserAgentForm;
import org.openqa.selenium.devtools.idealized.Network;
-import org.openqa.selenium.devtools.v147.emulation.Emulation;
+import org.openqa.selenium.devtools.v149.emulation.Emulation;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;