Skip to content

Commit 10b9f7f

Browse files
committed
Implemented tests for Performance metrics, user agent override, device emulation and emulation domain. Implemented additional methods, fixed performance metrics logging.
1 parent 4537620 commit 10b9f7f

23 files changed

+532
-51
lines changed

src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@ public DevTools getDevToolsSession(String windowHandle) {
9797
return session;
9898
}
9999

100+
/**
101+
* Gets a value indicating whether a DevTools session is active.
102+
* @return true if there is an active session, false otherwise.
103+
*/
104+
public boolean hasActiveDevToolsSession() {
105+
logger.info("loc.browser.devtools.session.isactive");
106+
boolean result = devToolsProvider.getDevTools().getCdpSession() != null;
107+
logger.info("loc.browser.devtools.session.isactive.result", result);
108+
return result;
109+
}
110+
100111
/**
101112
* Closes a DevTools session.
102113
*/
@@ -218,7 +229,11 @@ public void enablePerformanceMonitoring() {
218229
* @return Current values for run-time metrics
219230
*/
220231
public Map<String, Number> getPerformanceMetrics() {
221-
List<Metric> metrics = sendCommand(Performance.getMetrics());
222-
return metrics.stream().collect(Collectors.toMap(Metric::getName, Metric::getValue));
232+
Command<List<Metric>> command = Performance.getMetrics();
233+
logCommand(command.getMethod(), command.getParams());
234+
List<Metric> metrics = getDevToolsSession().send(command);
235+
Map<String, Number> result = metrics.stream().collect(Collectors.toMap(Metric::getName, Metric::getValue));
236+
logCommandResult(result.isEmpty() ? "empty" : result);
237+
return result;
223238
}
224239
}

src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,19 @@ public void setEmulatedMedia(Map<String, Object> params) {
206206
* @param mediaFeatures Media features to emulate.
207207
*/
208208
public void setEmulatedMedia(String media, Map<String, String> mediaFeatures) {
209-
List<MediaFeature> featureList = mediaFeatures.entrySet().stream().map((Map.Entry<String, String> entry) -> new MediaFeature(entry.getKey(), entry.getValue())).collect(Collectors.toList());
210-
tools.sendCommand(Emulation.setEmulatedMedia(Optional.of(media), Optional.of(featureList)));
209+
setEmulatedMedia(Optional.of(media), Optional.of(mediaFeatures));
210+
}
211+
212+
/**
213+
* Emulates the given media type or media feature for CSS media queries.
214+
* @param media Media type to emulate. Empty string disables the override.
215+
* Possible values: braille, embossed, handheld, print, projection, screen, speech, tty, tv.
216+
* @param mediaFeatures Media features to emulate.
217+
*/
218+
public void setEmulatedMedia(Optional<String> media, Optional<Map<String, String>> mediaFeatures) {
219+
List<MediaFeature> featureList = mediaFeatures.orElse(Collections.emptyMap()).entrySet().stream()
220+
.map((Map.Entry<String, String> entry) -> new MediaFeature(entry.getKey(), entry.getValue())).collect(Collectors.toList());
221+
tools.sendCommand(Emulation.setEmulatedMedia(media, Optional.of(featureList)));
211222
}
212223

213224
/**

src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* For more information, see {@link org.openqa.selenium.devtools.v85.network.Network} and {@link Network}.
3030
*/
3131
public class NetworkHandling {
32+
public static final String LOC_NETWORK_INTERCEPTOR_START = "loc.browser.network.interceptor.start";
3233
private final DevToolsHandling tools;
3334
private final Network<?, ?> network;
3435
private final ILocalizedLogger logger = AqualityServices.getLocalizedLogger();
@@ -46,15 +47,15 @@ public NetworkHandling(DevToolsHandling tools) {
4647
/**
4748
* Starts network monitoring.
4849
*/
49-
public void prepareToInterceptTraffic() {
50+
public void startMonitoring() {
5051
logger.info("loc.browser.network.monitoring.start");
5152
network.prepareToInterceptTraffic();
5253
}
5354

5455
/**
5556
* Stops network monitoring.
5657
*/
57-
public void disable() {
58+
public void stopMonitoring() {
5859
logger.info("loc.browser.network.monitoring.stop");
5960
network.disable();
6061
}
@@ -102,7 +103,7 @@ public void addBasicAuthentication(String hostPart, String username, String pass
102103
*/
103104
public void clearBasicAuthentication() {
104105
logger.info("loc.browser.network.authentication.clear");
105-
disable();
106+
stopMonitoring();
106107
}
107108

108109
/**
@@ -223,7 +224,7 @@ public void enableHttpExchangeLogging(HttpExchangeLoggingOptions loggingOptions)
223224
* @return an instance of {@link NetworkInterceptor}.
224225
*/
225226
public NetworkInterceptor startNetworkInterceptor(HttpHandler httpHandler) {
226-
logger.info("loc.browser.network.interceptor.start");
227+
logger.info(LOC_NETWORK_INTERCEPTOR_START);
227228
return new NetworkInterceptor(getBrowser().getDriver(), httpHandler);
228229
}
229230

@@ -233,7 +234,7 @@ public NetworkInterceptor startNetworkInterceptor(HttpHandler httpHandler) {
233234
* @return an instance of {@link NetworkInterceptor}.
234235
*/
235236
public NetworkInterceptor startNetworkInterceptor(Filter filter) {
236-
logger.info("loc.browser.network.interceptor.start");
237+
logger.info(LOC_NETWORK_INTERCEPTOR_START);
237238
return new NetworkInterceptor(getBrowser().getDriver(), filter);
238239
}
239240

@@ -243,7 +244,7 @@ public NetworkInterceptor startNetworkInterceptor(Filter filter) {
243244
* @return an instance of {@link NetworkInterceptor}.
244245
*/
245246
public NetworkInterceptor startNetworkInterceptor(Routable routable) {
246-
logger.info("loc.browser.network.interceptor.start");
247+
logger.info(LOC_NETWORK_INTERCEPTOR_START);
247248
return new NetworkInterceptor(getBrowser().getDriver(), routable);
248249
}
249250

src/main/resources/localization/be.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
"loc.browser.get.tab.handle": "Атрыманне дэскрыптара бягучай укладкі",
8080
"loc.browser.tab.open.new": "Адкрыццё новай укладкі",
8181
"loc.browser.tab.close": "Закрыццё ўкладкі",
82+
"loc.browser.devtools.session.isactive": "Правяраем, ці актыўная DevTools сэсія",
83+
"loc.browser.devtools.session.isactive.result": "Ці актыўная DevTools сэсія: [%1$s]",
8284
"loc.browser.devtools.session.close": "Завяршаем сэсію DevTools",
8385
"loc.browser.devtools.session.get": "Атрымліваем сэсію DevTools з дэскрыптарам ўкладкі '%1$s'",
8486
"loc.browser.devtools.command.execute": "Выконваем DevTools каманду [%1$s]",

src/main/resources/localization/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
"loc.browser.get.tab.handle": "Getting current tab handle",
8080
"loc.browser.tab.open.new": "Opening new tab",
8181
"loc.browser.tab.close": "Closing tab",
82+
"loc.browser.devtools.session.isactive": "Checking if DevTools session is active",
83+
"loc.browser.devtools.session.isactive.result": "Is DevTools session active: [%1$s]",
8284
"loc.browser.devtools.session.close": "Closing DevTools session",
8385
"loc.browser.devtools.session.get": "Getting DevTools session by tab handle '%1$s'",
8486
"loc.browser.devtools.command.execute": "Executing DevTools command [%1$s]",

src/main/resources/localization/ru.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
"loc.browser.get.tab.handle": "Получение дескриптора текущей вкладки",
8080
"loc.browser.tab.open.new": "Открытие новой вкладки",
8181
"loc.browser.tab.close": "Закрытие вкладки",
82+
"loc.browser.devtools.session.isactive": "Проверка, активна ли сессия DevTools",
83+
"loc.browser.devtools.session.isactive.result": "Активна ли DevTools сессия: [%1$s]",
8284
"loc.browser.devtools.session.close": "Завершение DevTools сессии",
8385
"loc.browser.devtools.session.get": "Получение DevTools сессии с дескриптором вкладки '%1$s'",
8486
"loc.browser.devtools.command.execute": "Исполняем DevTools команду [%1$s]",
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package manytools;
2+
3+
public class BrowserLanguageForm extends ManyToolsForm<BrowserLanguageForm> {
4+
public BrowserLanguageForm() {
5+
super("Browser language");
6+
}
7+
8+
@Override
9+
protected String getUrlPart() {
10+
return "http-html-text/browser-language/";
11+
}
12+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package manytools;
2+
3+
import aquality.selenium.browser.AqualityServices;
4+
import aquality.selenium.elements.interfaces.ILabel;
5+
import aquality.selenium.forms.Form;
6+
import org.openqa.selenium.By;
7+
8+
public abstract class ManyToolsForm<T extends ManyToolsForm<T>> extends Form {
9+
private static final String BASE_URL = "https://manytools.org/";
10+
private final ILabel lblValue = getFormLabel().findChildElement(By.xpath(".//code"), getName(), ILabel.class);
11+
12+
protected ManyToolsForm(String name) {
13+
super(By.id("maincontent"), name);
14+
}
15+
16+
protected abstract String getUrlPart();
17+
18+
@SuppressWarnings("unchecked")
19+
public T open() {
20+
AqualityServices.getBrowser().goTo(BASE_URL + getUrlPart());
21+
AqualityServices.getBrowser().waitForPageToLoad();
22+
return (T) this;
23+
}
24+
25+
public String getValue() {
26+
return lblValue.getText();
27+
}
28+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package manytools;
2+
3+
public class UserAgentForm extends ManyToolsForm<UserAgentForm> {
4+
public UserAgentForm() {
5+
super("User agent");
6+
}
7+
8+
@Override
9+
protected String getUrlPart() {
10+
return "http-html-text/user-agent-string/";
11+
}
12+
}

src/test/java/tests/BaseTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
import org.testng.annotations.BeforeMethod;
99
import theinternet.TheInternetPage;
1010

11+
import java.io.IOException;
12+
13+
import static utils.FileUtil.getResourceFileByName;
14+
1115
public abstract class BaseTest {
1216
private static final String DEFAULT_URL = TheInternetPage.LOGIN.getAddress();
1317

@@ -38,4 +42,13 @@ protected void navigate(TheInternetPage page) {
3842
protected Browser getBrowser() {
3943
return AqualityServices.getBrowser();
4044
}
45+
46+
@SuppressWarnings("unchecked")
47+
protected <T> T getScriptResultOrDefault(String scriptName, T defaultValue) {
48+
try {
49+
return ((T) getBrowser().executeScript(getResourceFileByName(scriptName)));
50+
} catch (IOException e) {
51+
return defaultValue;
52+
}
53+
}
4154
}

0 commit comments

Comments
 (0)