-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmulateNetworkConditions.java
93 lines (73 loc) · 3.22 KB
/
EmulateNetworkConditions.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.lambdatest;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Optional;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.v96.network.Network;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class EmulateNetworkConditions {
public static String hubURL = "https://hub.lambdatest.com/wd/hub";
private WebDriver driver;
public void setup() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("browserVersion", "latest");
HashMap<String, Object> ltOptions = new HashMap<String, Object>();
ltOptions.put("user", System.getenv("LT_USERNAME"));
ltOptions.put("accessKey", System.getenv("LT_ACCESS_KEY"));
ltOptions.put("build", "Selenium 4");
ltOptions.put("name",this.getClass().getName());
ltOptions.put("platformName", "Windows 10");
ltOptions.put("seCdp", true);
ltOptions.put("selenium_version", "4.0.0");
capabilities.setCapability("LT:Options", ltOptions);
driver = new RemoteWebDriver(new URL(hubURL), capabilities);
System.out.println(driver);
}
public void emulateNetworkConditions() throws InterruptedException {
Augmenter augmenter = new Augmenter();
driver = augmenter.augment(driver);
DevTools devTools = ((HasDevTools) driver).getDevTools();
devTools.createSession();
devTools.send(Network.emulateNetworkConditions(false, 0, 2 * 1024 * 1024, 2 * 1024 * 1024, Optional.empty()));
driver.get("https://fast.com");
Thread.sleep(15000);
String speed = driver.findElement(By.id("speed-value")).getText();
String units = driver.findElement(By.id("speed-units")).getText();
System.out.println(speed);
System.out.println(units);
if (Float.parseFloat(speed) < 2 && units.equals("Mbps")) {
markStatus("passed", "Speed is in the limit of 2 Mbps", driver);
} else {
markStatus("failed", "Speed is not in the limit of 2 Mbp", driver);
}
}
public void tearDown() {
try {
driver.quit();
} catch (
Exception e) {
markStatus("failed", "Got exception!", driver);
e.printStackTrace();
driver.quit();
}
}
public static void markStatus(String status, String reason, WebDriver driver) {
JavascriptExecutor jsExecute = (JavascriptExecutor) driver;
jsExecute.executeScript("lambda-status=" + status);
System.out.println(reason);
}
public static void main(String[] args) throws MalformedURLException, InterruptedException {
EmulateNetworkConditions test= new EmulateNetworkConditions();
test.setup();
test.emulateNetworkConditions();
test.tearDown();
}
}