10000 fix(tracing): Properly log Clock calls (#1727) · microsoft/playwright-java@eb8cf62 · GitHub
[go: up one dir, main page]

Skip to content

Commit eb8cf62

Browse files
authored
fix(tracing): Properly log Clock calls (#1727)
1 parent 308b991 commit eb8cf62

File tree

2 files changed

+86
-15
lines changed

2 files changed

+86
-15
lines changed

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

< 10000 span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy file name to clipboard" aria-hidden="true" id=":R9mtlab:">Copy file name to clipboard
Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,24 @@ class ClockImpl implements Clock {
1212
this.browserContext = browserContext;
1313
}
1414

15+
private void sendMessageWithLogging(String method, JsonObject params) {
16+
String capitalizedMethod = method.substring(0, 1).toUpperCase() + method.substring(1);
17+
browserContext.withLogging("Clock." + method,
18+
() -> browserContext.sendMessage("clock" + capitalizedMethod, params));
19+
}
20+
1521
@Override
1622
public void fastForward(long ticks) {
1723
JsonObject params = new JsonObject();
1824
params.addProperty("ticksNumber", ticks);
19-
browserContext.sendMessage("clockFastForward", params);
25+
sendMessageWithLogging("fastForward", params);
2026
}
2127

2228
@Override
2329
public void fastForward(String ticks) {
2430
JsonObject params = new JsonObject();
2531
params.addProperty("ticksString", ticks);
26-
browserContext.sendMessage("clockFastForward", params);
32+
sendMessageWithLogging("fastForward", params);
2733
}
2834

2935
@Override
@@ -32,89 +38,89 @@ public void install(InstallOptions options) {
3238
if (options != null) {
3339
parseTime(options.time, params);
3440
}
35-
browserContext.sendMessage("clockInstall", params);
41+
sendMessageWithLogging("install", params);
3642
}
3743

3844
@Override
3945
public void runFor(long ticks) {
4046
JsonObject params = new JsonObject();
4147
params.addProperty("ticksNumber", ticks);
42-
browserContext.sendMessage("clockRunFor", params);
48+
sendMessageWithLogging("runFor", params);
4349
}
4450

4551
@Override
4652
public void runFor(String ticks) {
4753
JsonObject params = new JsonObject();
4854
params.addProperty("ticksString", ticks);
49-
browserContext.sendMessage("clockRunFor", params);
55+
sendMessageWithLogging("runFor", params);
5056
}
5157

5258
@Override
5359
public void pauseAt(long time) {
5460
JsonObject params = new JsonObject();
5561
params.addProperty("timeNumber", time);
56-
browserContext.sendMessage("clockPauseAt", params);
62+
sendMessageWithLogging("pauseAt", params);
5763
}
5864

5965
@Override
6066
public void pauseAt(String time) {
6167
JsonObject params = new JsonObject();
6268
params.addProperty("timeString", time);
63-
browserContext.sendMessage("clockPauseAt", params);
69+
sendMessageWithLogging("pauseAt", params);
6470
}
6571

6672
@Override
6773
public void pauseAt(Date time) {
6874
JsonObject params = new JsonObject();
6975
params.addProperty("timeNumber", time.getTime());
70-
browserContext.sendMessage("clockPauseAt", params);
76+
sendMessageWithLogging("pauseAt", params);
7177
}
7278

7379
@Override
7480
public void resume() {
75-
browserContext.sendMessage("clockResume");
81+
sendMessageWithLogging("resume", new JsonObject());
7682
}
7783

7884
@Override
7985
public void setFixedTime(long time) {
8086
JsonObject params = new JsonObject();
8187
params.addProperty("timeNumber", time);
82-
browserContext.sendMessage("clockSetFixedTime", params);
88+
sendMessageWithLogging("setFixedTime", params);
8389
}
8490

8591
@Override
8692
public void setFixedTime(String time) {
8793
JsonObject params = new JsonObject();
8894
params.addProperty("timeString", time);
89-
browserContext.sendMessage("clockSetFixedTime", params);
95+
sendMessageWithLogging("setFixedTime", params);
9096
}
9197

9298
@Override
9399
public void setFixedTime(Date time) {
94100
JsonObject params = new JsonObject();
95101
params.addProperty("timeNumber", time.getTime());
96-
browserContext.sendMessage("clockSetFixedTime", params);
102+
sendMessageWithLogging("setFixedTime", params);
97103
}
98104

99105
@Override
100106
public void setSystemTime(long time) {
101107
JsonObject params = new JsonObject();
102108
params.addProperty("timeNumber", time);
103-
browserContext.sendMessage("clockSetSystemTime", params);
109+
sendMessageWithLogging("setSystemTime", params);
104110
}
105111

106112
@Override
107113
public void setSystemTime(String time) {
108114
JsonObject params = new JsonObject();
109115
params.addProperty("timeString", time);
110-
browserContext.sendMessage("clockSetSystemTime", params);
116+
sendMessageWithLogging("setSystemTime", params);
111117
}
112118

113119
@Override
114120
public void setSystemTime(Date time) {
115121
JsonObject params = new JsonObject();
116122
params.addProperty("timeNumber", time.getTime());
117-
browserContext.sendMessage("clockSetSystemTime", params);
123+
sendMessageWithLogging("setSystemTime", params);
118124
}
119125

120126
private static void parseTime(Object time, JsonObject params) {

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

Lines changed: 65 additions & 0 deletions
+
import com.microsoft.playwright.options.AriaRole;
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818

1919
import com.google.gson.Gson;
2020
import com.google.gson.JsonObject;
21
2122
import com.microsoft.playwright.options.Location;
23+
import com.microsoft.playwright.options.MouseButton;
24+
2225
import org.junit.jupiter.api.Assumptions;
2326
import org.junit.jupiter.api.BeforeAll;
2427
import org.junit.jupiter.api.Test;
@@ -204,6 +207,68 @@ void traceGroupGroupEnd(@TempDir Path tempDir) throws Exception {
204207
assertEquals(asList("outer group", "Page.navigate", "inner group 1", "Frame.click", "inner group 2", "Page.isVisible"), calls);
205208
}
206209

210+
@Test
211+
void shouldTraceVariousAPIs(@TempDir Path tempDir) throws Exception {
212+
context.tracing().start(new Tracing.StartOptions());
213+
214+
page.clock().install();
215+
216+
page.setContent("<input type='text' />");
217+
page.locator("input").click(new Locator.ClickOptions().setButton(MouseButton.RIGHT));
218+
page.getByRole(AriaRole.TEXTBOX).click();
219+
page.keyboard().type("Hello world this is a very long string what happens when it overflows?");
220+
page.keyboard().press("Control+c");
221+
page.keyboard().down("Shift");
222+
page.keyboard().insertText("Hello world");
223+
page.keyboard().up("Shift");
224+
page.mouse().move(0, 0);
225+
page.mouse().down();
226+
page.mouse().move(100, 200);
227+
page.mouse().wheel(5, 7);
228+
page.mouse().up();
229+
page.clock().fastForward(1000);
230+
page.clock().fastForward("30:00");
231+
page.clock().pauseAt("2050-02-02");
232+
page.clock().runFor(10);
233+
page.clock().setFixedTime("2050-02-02");
234+
page.clock().setSystemTime("2050-02-02");
235+
236+
page.clock().resume();
237+
238+
page.locator("input").click(new Locator.ClickOptions().setButton(MouseButton.RIGHT));
239+
240+
Path traceFile1 = tempDir.resolve("trace1.zip");
241+
context.tracing().stop(new Tracing.StopOptions().setPath(traceFile1));
242+
243+
List<TraceEvent> events = parseTraceEvents(traceFile1);
244+
List<String> calls = events.stream().filter(e -> e.apiName != null).map(e -> e.apiName)
245+
.collect(Collectors.toList());
246+
assertEquals(asList(
247+
"Clock.install",
248+
"Page.setContent",
249+
"Frame.click",
250+
"Frame.click",
251+
"Keyboard.type",
252+
"Keyboard.press",
253+
"Keyboard.down",
254+
"Keyboard.insertText",
255+
"Keyboard.up",
256+
"Mouse.move",
257+
"Mouse.down",
258+
"Mouse.move",
259+
"Mouse.wheel",
260+
"Mouse.up",
261+
"Clock.fastForward",
262+
"Clock.fastForward",
263+
"Clock.pauseAt",
264+
"Clock.runFor",
265+
"Clock.setFixedTime",
266+
"Clock.setSystemTime",
267+
"Clock.resume",
268+
"Frame.click"),
269+
calls);
270+
}
271+
207272
private static class TraceEvent {
208273
String type;
209274
String name;

0 commit comments

Comments
 (0)
0