Skip to content

Commit e82ab1c

Browse files
committed
more timeout changes
1 parent 393c502 commit e82ab1c

File tree

8 files changed

+56
-27
lines changed

8 files changed

+56
-27
lines changed

playwright/src/main/java/com/microsoft/playwright/impl/APIRequestContextImpl.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ private APIResponse fetchImpl(String url, RequestOptionsImpl options) {
135135
if (options.multipart != null) {
136136
params.add("multipartData", serializeMultipartData(options.multipart.fields));
137137
}
138-
if (options.timeout != null) {
139-
params.addProperty("timeout", options.timeout);
140-
}
138+
params.addProperty("timeout", timeoutSettings.timeout(options.timeout));
141139
if (options.failOnStatusCode != null) {
142140
params.addProperty("failOnStatusCode", options.failOnStatusCode);
143141
}

playwright/src/main/java/com/microsoft/playwright/impl/BrowserTypeImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ private BrowserImpl launchImpl(LaunchOptions options) {
4848
if (options == null) {
4949
options = new LaunchOptions();
5050
}
51+
options.timeout = TimeoutSettings.launchTimeout(options.timeout);
5152
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
5253
JsonElement result = sendMessage("launch", params);
5354
BrowserImpl browser = connection.getExistingObject(result.getAsJsonObject().getAsJsonObject("browser").get("guid").getAsString());
@@ -84,6 +85,10 @@ private Browser connectImpl(String wsEndpoint, ConnectOptions options) {
8485
headers.addProperty("x-playwright-browser", name());
8586
}
8687

88+
if (!params.has("timeout")) {
89+
params.addProperty("timeout", 0);
90+
}
91+
8792
JsonObject json = connection.localUtils().sendMessage("connect", params).getAsJsonObject();
8893
JsonPipe pipe = connection.getExistingObject(json.getAsJsonObject("pipe").get("guid").getAsString());
8994
Connection connection = new Connection(pipe, this.connection.env, this.connection.localUtils);
@@ -126,6 +131,7 @@ private Browser connectOverCDPImpl(String endpointURL, ConnectOverCDPOptions opt
126131
if (options == null) {
127132
options = new ConnectOverCDPOptions();
128133
}
134+
options.timeout = TimeoutSettings.launchTimeout(options.timeout);
129135

130136
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
131137
params.addProperty("endpointURL", endpointURL);
@@ -195,6 +201,7 @@ private BrowserContextImpl launchPersistentContextImpl(Path userDataDir, LaunchP
195201
throw new PlaywrightException("recordHarContent is set but recordHarPath is null");
196202
}
197203
}
204+
options.timeout = TimeoutSettings.launchTimeout(options.timeout);
198205

199206
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
200207
if (!userDataDir.isAbsolute() && !userDataDir.toString().isEmpty()) {

playwright/src/main/java/com/microsoft/playwright/impl/ElementHandleImpl.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@
4040
import static com.microsoft.playwright.options.ScreenshotType.PNG;
4141

4242
public class ElementHandleImpl extends JSHandleImpl implements ElementHandle {
43+
private final FrameImpl frame;
44+
4345
ElementHandleImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
4446
super(parent, type, guid, initializer);
47+
this.frame = (FrameImpl)parent;
4548
}
4649

4750
@Override
@@ -127,6 +130,7 @@ private void checkImpl(CheckOptions options) {
127130
if (options == null) {
128131
options = new CheckOptions();
129132
}
133+
options.timeout = frame.timeout(options.timeout);
130134
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
131135
sendMessage("check", params);
132136
}
@@ -140,6 +144,7 @@ private void clickImpl(ClickOptions options) {
140144
if (options == null) {
141145
options = new ClickOptions();
142146
}
147+
options.timeout = frame.timeout(options.timeout);
143148
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
144149
sendMessage("click", params);
145150
}
@@ -166,6 +171,7 @@ private void dblclickImpl(DblclickOptions options) {
166171
if (options == null) {
167172
options = new DblclickOptions();
168173
}
174+
options.timeout = frame.timeout(options.timeout);
169175
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
170176
sendMessage("dblclick", params);
171177
}
@@ -189,6 +195,7 @@ private void fillImpl(String value, FillOptions options) {
189195
if (options == null) {
190196
options = new FillOptions();
191197
}
198+
options.timeout = frame.timeout(options.timeout);
192199
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
193200
params.addProperty("value", value);
194201
sendMessage("fill", params);
@@ -218,6 +225,7 @@ private void hoverImpl(HoverOptions options) {
218225
if (options == null) {
219226
options = new HoverOptions();
220227
}
228+
options.timeout = frame.timeout(options.timeout);
221229
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
222230
sendMessage("hover", params);
223231
}
@@ -319,6 +327,7 @@ private void pressImpl(String key, PressOptions options) {
319327
if (options == null) {
320328
options = new PressOptions();
321329
}
330+
options.timeout = frame.timeout(options.timeout);
322331
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
323332
params.addProperty("key", key);
324333
sendMessage("press", params);
@@ -333,6 +342,7 @@ private byte[] screenshotImpl(ScreenshotOptions options) {
333342
if (options == null) {
334343
options = new ScreenshotOptions();
335344
}
345+
options.timeout = frame.timeout(options.timeout);
336346
if (options.type == null) {
337347
options.type = PNG;
338348
if (options.path != null) {
@@ -379,6 +389,7 @@ public List<String> selectOption(String[] values, SelectOptionOptions options) {
379389
if (options == null) {
380390
options = new SelectOptionOptions();
381391
}
392+
options.timeout = frame.timeout(options.timeout);
382393
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
383394
if (values != null) {
384395
params.add("options", toSelectValueOrLabel(values));
@@ -396,6 +407,7 @@ private void scrollIntoViewIfNeededImpl(ScrollIntoViewIfNeededOptions options) {
396407
if (options == null) {
397408
options = new ScrollIntoViewIfNeededOptions();
398409
}
410+
options.timeout = frame.timeout(options.timeout);
399411
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
400412
sendMessage("scrollIntoViewIfNeeded", params);
401413
}
@@ -454,6 +466,7 @@ private void selectTextImpl(SelectTextOptions options) {
454466
if (options == null) {
455467
options = new SelectTextOptions();
456468
}
469+
options.timeout = frame.timeout(options.timeout);
457470
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
458471
sendMessage("selectText", params);
459472
}
@@ -471,6 +484,7 @@ void setInputFilesImpl(Path[] files, SetInputFilesOptions options) {
471484
if (options == null) {
472485
options = new SetInputFilesOptions();
473486
}
487+
options.timeout = frame.timeout(options.timeout);
474488
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
475489
addFilePathUploadParams(files, params, frame.page().context());
476490
sendMessage("setInputFiles", params);
@@ -491,6 +505,7 @@ void setInputFilesImpl(FilePayload[] files, SetInputFilesOptions options) {
491505
if (options == null) {
492506
options = new SetInputFilesOptions();
493507
}
508+
options.timeout = frame.timeout(options.timeout);
494509
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
495510
params.add("payloads", Serialization.toJsonArray(files));
496511
sendMessage("setInputFiles", params);
@@ -505,6 +520,7 @@ private void tapImpl(TapOptions options) {
505520
if (options == null) {
506521
options = new TapOptions();
507522
}
523+
options.timeout = frame.timeout(options.timeout);
508524
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
509525
sendMessage("tap", params);
510526
}
@@ -530,6 +546,7 @@ private void typeImpl(String text, TypeOptions options) {
530546
if (options == null) {
531547
options = new TypeOptions();
532548
}
549+
options.timeout = frame.timeout(options.timeout);
533550
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
534551
params.addProperty("text", text);
535552
sendMessage("type", params);
@@ -544,6 +561,7 @@ private void uncheckImpl(UncheckOptions options) {
544561
if (options == null) {
545562
options = new UncheckOptions();
546563
}
564+
options.timeout = frame.timeout(options.timeout);
547565
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
548566
sendMessage("uncheck", params);
549567
}
@@ -557,6 +575,7 @@ private void waitForElementStateImpl(ElementState state, WaitForElementStateOpti
557575
if (options == null) {
558576
options = new WaitForElementStateOptions();
559577
}
578+
options.timeout = frame.timeout(options.timeout);
560579
if (state == null) {
561580
throw new IllegalArgumentException("State cannot be null");
562581
}
@@ -578,6 +597,7 @@ private ElementHandle waitForSelectorImpl(String selector, WaitForSelectorOption
578597
if (options == null) {
579598
options = new WaitForSelectorOptions();
580599
}
600+
options.timeout = frame.timeout(options.timeout);
581601
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
582602
params.addProperty("selector", selector);
583603
JsonElement json = sendMessage("waitForSelector", params);

playwright/src/main/java/com/microsoft/playwright/impl/FrameImpl.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ void clickImpl(String selector, ClickOptions options) {
247247
if (options == null) {
248248
options = new ClickOptions();
249249
}
250+
options.timeout = timeout(options.timeout);
250251
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
251252
params.addProperty("selector", selector);
252253
sendMessage("click", params);
@@ -344,6 +345,7 @@ void focusImpl(String selector, FocusOptions options) {
344345
if (options == null) {
345346
options = new FocusOptions();
346347
}
348+
options.timeout = timeout(options.timeout);
347349
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
348350
params.addProperty("selector", selector);
349351
sendMessage("focus", params);
@@ -506,6 +508,7 @@ String innerHTMLImpl(String selector, InnerHTMLOptions options) {
506508
if (options == null) {
507509
options = new InnerHTMLOptions();
508510
}
511+
options.timeout = timeout(options.timeout);
509512
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
510513
params.addProperty("selector", selector);
511514
JsonObject json = sendMessage("innerHTML", params).getAsJsonObject();
@@ -521,6 +524,7 @@ String innerTextImpl(String selector, InnerTextOptions options) {
521524
if (options == null) {
522525
options = new InnerTextOptions();
523526
}
527+
options.timeout = timeout(options.timeout);
524528
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
525529
params.addProperty("selector", selector);
526530
JsonObject json = sendMessage("innerText", params).getAsJsonObject();
@@ -681,6 +685,7 @@ List<String> selectOptionImpl(String selector, SelectOption[] values, SelectOpti
681685
if (options == null) {
682686
options = new SelectOptionOptions();
683687
}
688+
options.timeout = timeout(options.timeout);
684689
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
685690
params.addProperty("selector", selector);
686691
if (values != null) {
@@ -750,6 +755,7 @@ void setContentImpl(String html, SetContentOptions options) {
750755
if (options == null) {
751756
options = new SetContentOptions();
752757
}
758+
options.timeout = timeout(options.timeout);
753759
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
754760
params.addProperty("html", html);
755761
sendMessage("setContent", params);
@@ -799,6 +805,7 @@ void tapImpl(String selector, TapOptions options) {
799805
if (options == null) {
800806
options = new TapOptions();
801807
}
808+
options.timeout = timeout(options.timeout);
802809
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
803810
params.addProperty("selector", selector);
804811
sendMessage("tap", params);
@@ -837,6 +844,7 @@ void typeImpl(String selector, String text, TypeOptions options) {
837844
if (options == null) {
838845
options = new TypeOptions();
839846
}
847+
options.timeout = timeout(options.timeout);
840848
JsonObject params = gson().toJsonTree(options).getAsJsonObject();
841849
params.addProperty("selector", selector);
842850
params.addProperty("text", text);
@@ -1123,20 +1131,6 @@ void highlightImpl(String selector) {
11231131
sendMessage("highlight", params);
11241132
}
11251133

1126-
double timeout(Double timeout) {
1127-
if (page != null) {
1128-
return page.timeoutSettings.timeout(timeout);
1129-
}
1130-
return new TimeoutSettings().timeout(timeout);
1131-
}
1132-
1133-
double navigationTimeout(Double timeout) {
1134-
if (page != null) {
1135-
return page.timeoutSettings.navigationTimeout(timeout);
1136-
}
1137-
return new TimeoutSettings().navigationTimeout(timeout);
1138-
}
1139-
11401134
protected void handleEvent(String event, JsonObject params) {
11411135
if ("loadstate".equals(event)) {
11421136
JsonElement add = params.get("add");
@@ -1165,4 +1159,20 @@ protected void handleEvent(String event, JsonObject params) {
11651159
internalListeners.notify(InternalEventType.NAVIGATED, params);
11661160
}
11671161
}
1162+
1163+
protected double timeout(Double timeout) {
1164+
TimeoutSettings timeoutSettings = page.timeoutSettings;
1165+
if (timeoutSettings == null) {
1166+
timeoutSettings = new TimeoutSettings();
1167+
}
1168+
return timeoutSettings.timeout(timeout);
1169+
}
1170+
1171+
protected double navigationTimeout(Double timeout) {
1172+
TimeoutSettings timeoutSettings = page.timeoutSettings;
1173+
if (timeoutSettings == null) {
1174+
timeoutSettings = new TimeoutSettings();
1175+
}
1176+
return timeoutSettings.navigationTimeout(timeout);
1177+
}
11681178
}

playwright/src/main/java/com/microsoft/playwright/impl/PageImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private static final Map<EventType, String> eventSubscriptions() {
9595
BrowserContextImpl ownedContext;
9696
private boolean isClosed;
9797
final Set<Worker> workers = new HashSet<>();
98-
final TimeoutSettings timeoutSettings;
98+
protected final TimeoutSettings timeoutSettings;
9999
private VideoImpl video;
100100
private final PageImpl opener;
101101
private String closeReason;

playwright/src/main/java/com/microsoft/playwright/impl/TimeoutSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
class TimeoutSettings {
2020
private static final int DEFAULT_TIMEOUT_MS = 30_000;
21-
private static final int DEFAULT_LAUNCH_TIMEOUT_MS = 180_000; // 3 minutes
21+
private static final int DEFAULT_LAUNCH_TIMEOUT_MS = 180_000;
2222

2323
private final TimeoutSettings parent;
2424
private Double defaultTimeout ;

playwright/src/test/java/com/microsoft/playwright/TestPageAriaSnapshot.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,6 @@ void shouldSnapshotComplex(Page page) {
7373
checkAndMatchSnapshot(page.locator("body"), "- list:\n - listitem:\n - link \"link\":\n - /url: about:blank");
7474
}
7575

76-
@Test
77-
void shouldSnapshotRef(Page page) {
78-
page.setContent("<ul><li>foo</li></ul>");
79-
assertEquals(unshift("- list [ref=s1e3]:\n - listitem [ref=s1e4]: foo"), page.locator("body").ariaSnapshot(new AriaSnapshotOptions().setRef(true)));
80-
}
81-
8276
@Test
8377
void shouldAllowTextNodes(Page page) {
8478
page.setContent("<h1>Microsoft</h1><div>Open source projects and samples from Microsoft</div>");

playwright/src/test/java/com/microsoft/playwright/TestTracing.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.microsoft.playwright;
1818

1919
import com.google.gson.Gson;
20-
import com.google.gson.JsonObject;
2120
import com.microsoft.playwright.options.AriaRole;
2221
import com.microsoft.playwright.options.Location;
2322
import com.microsoft.playwright.options.MouseButton;
@@ -241,7 +240,7 @@ void shouldTraceVariousAPIs(@TempDir Path tempDir) throws Exception {
241240
context.tracing().stop(new Tracing.StopOptions().setPath(traceFile1));
242241

243242
List<TraceEvent> events = parseTraceEvents(traceFile1);
244-
List<String> calls = events.stream().filter(e -> e.apiName != null).map(e -> e.apiName)
243+
List<String> calls = events.stream().filter(e -> e.title != null).map(e -> e.title)
245244
.collect(Collectors.toList());
246245
assertEquals(asList(
247246
"Clock.install",
@@ -294,6 +293,7 @@ private static class TraceEvent {
294293
String type;
295294
String name;
296295
String apiName;
296+
String title;
297297
String method;
298298
Double startTime;
299299
Double endTime;

0 commit comments

Comments
 (0)