versioncam 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +81 -0
- package/README.md +64 -6
- package/dist/cli/commands/check.js +45 -4
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/publish.d.ts +17 -0
- package/dist/cli/commands/publish.js +203 -0
- package/dist/cli/commands/publish.js.map +1 -0
- package/dist/cli/commands/record.js +2 -0
- package/dist/cli/commands/record.js.map +1 -1
- package/dist/cli/commands/render.js +22 -2
- package/dist/cli/commands/render.js.map +1 -1
- package/dist/cli/main.js +8 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +8 -0
- package/dist/cli/usage.js.map +1 -1
- package/dist/config.d.ts +32 -1
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -1
- package/dist/driver/clip.d.ts +9 -1
- package/dist/driver/clip.js +17 -5
- package/dist/driver/clip.js.map +1 -1
- package/dist/driver/page-hooks.d.ts +65 -12
- package/dist/driver/page-hooks.js +101 -15
- package/dist/driver/page-hooks.js.map +1 -1
- package/dist/driver/reports.d.ts +34 -2
- package/dist/driver/reports.js +31 -3
- package/dist/driver/reports.js.map +1 -1
- package/dist/driver/session.d.ts +23 -0
- package/dist/driver/session.js +45 -7
- package/dist/driver/session.js.map +1 -1
- package/dist/driver/settle.d.ts +2 -1
- package/dist/driver/settle.js +13 -1
- package/dist/driver/settle.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/publish/client.d.ts +38 -0
- package/dist/publish/client.js +118 -0
- package/dist/publish/client.js.map +1 -0
- package/dist/publish/index.d.ts +12 -0
- package/dist/publish/index.js +11 -0
- package/dist/publish/index.js.map +1 -0
- package/dist/publish/manifest.d.ts +46 -0
- package/dist/publish/manifest.js +133 -0
- package/dist/publish/manifest.js.map +1 -0
- package/dist/publish/protocol.d.ts +203 -0
- package/dist/publish/protocol.js +56 -0
- package/dist/publish/protocol.js.map +1 -0
- package/dist/render/encode.d.ts +15 -0
- package/dist/render/encode.js +23 -4
- package/dist/render/encode.js.map +1 -1
- package/dist/render/render.js +1 -0
- package/dist/render/render.js.map +1 -1
- package/dist/render/sequence.d.ts +3 -1
- package/dist/render/sequence.js +4 -1
- package/dist/render/sequence.js.map +1 -1
- package/dist/render/serve.d.ts +15 -1
- package/dist/render/serve.js +21 -2
- package/dist/render/serve.js.map +1 -1
- package/dsl.md +3 -2
- package/package.json +6 -2
|
@@ -22,10 +22,15 @@ export const MUTATION_COUNTER_SCRIPT = `(() => {
|
|
|
22
22
|
},
|
|
23
23
|
probe(t, x, y) {
|
|
24
24
|
document.documentElement.style.setProperty("--recorder-t", t);
|
|
25
|
+
// Before the counts: a transition whose time is up is finished here,
|
|
26
|
+
// and is no longer running when the animations are counted.
|
|
27
|
+
const clock = window.__recorderTransitions;
|
|
28
|
+
const transitions = clock ? clock.sync() : 0;
|
|
25
29
|
return {
|
|
26
30
|
mutations: state.mutations,
|
|
27
31
|
hovered: state.idOf(document.elementFromPoint(x, y)),
|
|
28
32
|
animations: document.getAnimations().length,
|
|
33
|
+
transitions,
|
|
29
34
|
};
|
|
30
35
|
},
|
|
31
36
|
};
|
|
@@ -63,6 +68,75 @@ export const MUTATION_COUNTER_SCRIPT = `(() => {
|
|
|
63
68
|
if (document.documentElement) start();
|
|
64
69
|
else document.addEventListener("DOMContentLoaded", start, { once: true });
|
|
65
70
|
})();`;
|
|
71
|
+
/**
|
|
72
|
+
* Plays the page's CSS transitions on the page's own clock.
|
|
73
|
+
*
|
|
74
|
+
* A transition's timing is fixed when it starts, at the style change, and it
|
|
75
|
+
* runs on the compositor's clock, which the fake clock does not touch. So
|
|
76
|
+
* the trick that scrubs animations, a delay read from a custom property
|
|
77
|
+
* every frame, cannot move one. The Web Animations API can: every running
|
|
78
|
+
* transition is a `CSSTransition` in `document.getAnimations()`, with a
|
|
79
|
+
* writable `currentTime`.
|
|
80
|
+
*
|
|
81
|
+
* `sync()` takes over each transition the first time it sees one: pauses it,
|
|
82
|
+
* and keeps the page's clock at that moment as its start. Then, every time
|
|
83
|
+
* it runs, it sets the transition to the page's time since that start, and
|
|
84
|
+
* once its effect's end is reached, finishes it, so `transitionend` fires and
|
|
85
|
+
* whatever waits for it runs (Leaflet ending a zoom, a dialog unmounting).
|
|
86
|
+
* It answers how many are still running.
|
|
87
|
+
*
|
|
88
|
+
* The start is the first sight, not the style change itself, which nothing
|
|
89
|
+
* sees: the driver syncs after every move of the clock, so a transition
|
|
90
|
+
* starts on the frame after the change that caused it, at most a frame late,
|
|
91
|
+
* and the same frame every run. Until then it runs a few milliseconds on the
|
|
92
|
+
* compositor in real time; setting it corrects that, and nothing is
|
|
93
|
+
* photographed in between, since the driver photographs a frame only after
|
|
94
|
+
* the probe that syncs it.
|
|
95
|
+
*
|
|
96
|
+
* The page's clock is the one the app's timers run on, not the clip's
|
|
97
|
+
* authored time, so a transition and a timer the app set beside it stay
|
|
98
|
+
* together: Leaflet ends a 250 ms zoom on a 250 ms timer.
|
|
99
|
+
*
|
|
100
|
+
* Only the top frame: the driver's probe runs there, and nothing would move
|
|
101
|
+
* a subframe's transitions, so the freeze stylesheet keeps those zeroed.
|
|
102
|
+
* CSS animations are left to their scrub, and animations a script made with
|
|
103
|
+
* `element.animate()` are the app's own.
|
|
104
|
+
*/
|
|
105
|
+
export const TRANSITION_CLOCK_SCRIPT = `(() => {
|
|
106
|
+
if (window !== window.top) return;
|
|
107
|
+
const started = new WeakMap();
|
|
108
|
+
window.__recorderTransitions = {
|
|
109
|
+
sync() {
|
|
110
|
+
const now = performance.now();
|
|
111
|
+
let running = 0;
|
|
112
|
+
for (const animation of document.getAnimations()) {
|
|
113
|
+
if (!("transitionProperty" in animation)) continue;
|
|
114
|
+
let start = started.get(animation);
|
|
115
|
+
if (start === undefined) {
|
|
116
|
+
start = now;
|
|
117
|
+
started.set(animation, start);
|
|
118
|
+
}
|
|
119
|
+
const end = animation.effect
|
|
120
|
+
? animation.effect.getComputedTiming().endTime
|
|
121
|
+
: 0;
|
|
122
|
+
if (now - start >= end) {
|
|
123
|
+
animation.finish();
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
animation.pause();
|
|
127
|
+
animation.currentTime = now - start;
|
|
128
|
+
running += 1;
|
|
129
|
+
}
|
|
130
|
+
return running;
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
})();`;
|
|
134
|
+
/**
|
|
135
|
+
* Moves every running transition to the page's clock, for the driver's waits
|
|
136
|
+
* that move the clock without making a frame. The frame probe and the settle
|
|
137
|
+
* loop sync as part of what they already ask the page.
|
|
138
|
+
*/
|
|
139
|
+
export const SYNC_TRANSITIONS = "window.__recorderTransitions ? window.__recorderTransitions.sync() : 0";
|
|
66
140
|
/**
|
|
67
141
|
* Puts the page's CSS motion under the recorder's control.
|
|
68
142
|
*
|
|
@@ -72,8 +146,13 @@ export const MUTATION_COUNTER_SCRIPT = `(() => {
|
|
|
72
146
|
* depends on how busy the machine was — the exact non-determinism this
|
|
73
147
|
* recorder exists to remove.
|
|
74
148
|
*
|
|
75
|
-
* Transitions
|
|
76
|
-
*
|
|
149
|
+
* Transitions play by default, on the page's clock, through
|
|
150
|
+
* `TRANSITION_CLOCK_SCRIPT`: a map that zooms with a transition is the
|
|
151
|
+
* content of the clip, and a jump in its place reads as a broken video. With
|
|
152
|
+
* `capture.transitions: "zero"` they are zeroed instead, as they always were
|
|
153
|
+
* before: a state change lands in the frame after the one that caused it,
|
|
154
|
+
* and the renderer's crossfade at a settle is all the motion there is. A
|
|
155
|
+
* subframe's are always zeroed, since its clock is never synced.
|
|
77
156
|
*
|
|
78
157
|
* Animations are handled differently, because zeroing them is wrong. A
|
|
79
158
|
* loading spinner with `animation-duration: 0s` is a dead spinner, and a clip
|
|
@@ -87,16 +166,21 @@ export const MUTATION_COUNTER_SCRIPT = `(() => {
|
|
|
87
166
|
* `scroll-behavior: auto` is here for the same reason: a smooth-scrolling
|
|
88
167
|
* container animates outside our control.
|
|
89
168
|
*/
|
|
90
|
-
export
|
|
91
|
-
|
|
92
|
-
transition-delay: 0s !important
|
|
93
|
-
|
|
169
|
+
export function freezeCss(zeroTransitions) {
|
|
170
|
+
const transitions = zeroTransitions
|
|
171
|
+
? " transition-duration: 0s !important;\n transition-delay: 0s !important;\n"
|
|
172
|
+
: "";
|
|
173
|
+
return `*, *::before, *::after {
|
|
174
|
+
${transitions} animation-play-state: paused !important;
|
|
94
175
|
animation-delay: calc(-1s * var(--recorder-t, 0)) !important;
|
|
95
176
|
scroll-behavior: auto !important;
|
|
96
177
|
caret-color: transparent !important;
|
|
97
178
|
}`;
|
|
98
|
-
|
|
99
|
-
|
|
179
|
+
}
|
|
180
|
+
export function freezeCssScript(transitions) {
|
|
181
|
+
return `(() => {
|
|
182
|
+
const zero = ${transitions === "zero"} || window !== window.top;
|
|
183
|
+
const css = zero ? ${JSON.stringify(freezeCss(true))} : ${JSON.stringify(freezeCss(false))};
|
|
100
184
|
const inject = () => {
|
|
101
185
|
const style = document.createElement("style");
|
|
102
186
|
style.id = "__recorder_freeze";
|
|
@@ -106,12 +190,13 @@ export const FREEZE_CSS_SCRIPT = `(() => {
|
|
|
106
190
|
if (document.head || document.documentElement) inject();
|
|
107
191
|
else document.addEventListener("DOMContentLoaded", inject, { once: true });
|
|
108
192
|
})();`;
|
|
193
|
+
}
|
|
109
194
|
/**
|
|
110
195
|
* What the driver learns from the page once per frame.
|
|
111
196
|
*
|
|
112
|
-
* One round trip does
|
|
113
|
-
* this frame's authored time
|
|
114
|
-
* this frame needs a screenshot.
|
|
197
|
+
* One round trip does four jobs: it advances the page's CSS animations to
|
|
198
|
+
* this frame's authored time and its transitions to the page's clock, and
|
|
199
|
+
* reports the two things that decide whether this frame needs a screenshot.
|
|
115
200
|
*
|
|
116
201
|
* `hovered` is the identity of the element under the cursor, as a number. The
|
|
117
202
|
* cursor glyph is drawn in post, so the pointer moving changes no pixel by
|
|
@@ -120,10 +205,11 @@ export const FREEZE_CSS_SCRIPT = `(() => {
|
|
|
120
205
|
* it returns the same element as last frame, the `:hover` chain is the same
|
|
121
206
|
* chain and no hover styling can have changed.
|
|
122
207
|
*
|
|
123
|
-
* `animations` is how many animations are running. A
|
|
124
|
-
* repaints on every frame without touching the DOM, so
|
|
125
|
-
*
|
|
126
|
-
* may be
|
|
208
|
+
* `animations` is how many animations are running, transitions included. A
|
|
209
|
+
* scrubbed animation repaints on every frame without touching the DOM, and so
|
|
210
|
+
* does a transition on the clock, so while any is on screen — a spinner, a
|
|
211
|
+
* progress bar, a zoom — every frame is genuinely different and none may be
|
|
212
|
+
* skipped. `transitions` is how many of them are transitions still to finish.
|
|
127
213
|
*/
|
|
128
214
|
export const FRAME_PROBE = (seconds, x, y) => `window.__recorder.probe("${seconds.toFixed(4)}", ${x.toFixed(2)}, ${y.toFixed(2)})`;
|
|
129
215
|
//# sourceMappingURL=page-hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-hooks.js","sourceRoot":"","sources":["../../src/driver/page-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"page-hooks.js","sourceRoot":"","sources":["../../src/driver/page-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0DjC,CAAC;AAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BjC,CAAC;AAEP;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,wEAAwE,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,SAAS,CAAC,eAAwB;IAChD,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,6EAA6E;QAC/E,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;EACP,WAAW;;;;EAIX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAwB;IACtD,OAAO;iBACQ,WAAW,KAAK,MAAM;uBAChB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;;;;;;;;MAStF,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,CAAS,EAAE,CAAS,EAAU,EAAE,CAC3E,4BAA4B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC"}
|
package/dist/driver/reports.d.ts
CHANGED
|
@@ -1,24 +1,48 @@
|
|
|
1
1
|
import type { Page } from "playwright";
|
|
2
|
+
import type { Rect } from "../core/timeline.js";
|
|
2
3
|
import type { SettleReport } from "./settle.js";
|
|
3
4
|
/**
|
|
4
5
|
* What a recording leaves behind besides its frames.
|
|
5
6
|
*
|
|
6
7
|
* A clip is written by someone who was not watching it run — increasingly,
|
|
7
8
|
* by something that cannot watch at all — so everything that would have been
|
|
8
|
-
* on screen has to be on disk.
|
|
9
|
-
* it ended badly, the page at the moment it gave up.
|
|
9
|
+
* on screen has to be on disk. What the waits waited for; where each step's
|
|
10
|
+
* target was; and, if it ended badly, the page at the moment it gave up.
|
|
10
11
|
*/
|
|
11
12
|
/** The name a reader looks for, in one place. */
|
|
12
13
|
export declare const SETTLES_FILE = "settles.json";
|
|
13
14
|
export declare const FAILURE_JSON = "failure.json";
|
|
14
15
|
export declare const FAILURE_PNG = "failure.png";
|
|
16
|
+
export declare const TARGETS_FILE = "targets.json";
|
|
15
17
|
export declare function writeSettles(dir: string, reports: SettleReport[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Where each step's target was on the page when the step began, by the step's
|
|
20
|
+
* index in the timeline's `steps`, in CSS pixels of the viewport.
|
|
21
|
+
*
|
|
22
|
+
* Beside the timeline rather than in it, because the timeline is the golden
|
|
23
|
+
* contract between capture and render and this is for neither of them: it is
|
|
24
|
+
* what lets version.cam crop a screenshot to the control a step used. Only a
|
|
25
|
+
* step that measured a target has an entry, and it is the first target the
|
|
26
|
+
* step measured, which for `typeInto` is the field and for `drag` is where the
|
|
27
|
+
* drag began.
|
|
28
|
+
*/
|
|
29
|
+
export type Targets = Record<string, Rect>;
|
|
30
|
+
export declare function writeTargets(dir: string, targets: Targets): void;
|
|
16
31
|
export type Failure = {
|
|
17
32
|
message: string;
|
|
18
33
|
/** The last frame captured before it gave up; -1 if none was. */
|
|
19
34
|
frame: number;
|
|
20
35
|
/** Authored seconds, which is where in the script to look. */
|
|
21
36
|
t: number;
|
|
37
|
+
/**
|
|
38
|
+
* The step that was running: its index in the timeline's `steps` and the
|
|
39
|
+
* call, such as `click`. Null when it failed before the first step, and
|
|
40
|
+
* absent from failures written before 0.3.0.
|
|
41
|
+
*/
|
|
42
|
+
step?: {
|
|
43
|
+
index: number;
|
|
44
|
+
call: string;
|
|
45
|
+
} | null;
|
|
22
46
|
};
|
|
23
47
|
/**
|
|
24
48
|
* The failure, then the picture of it.
|
|
@@ -32,3 +56,11 @@ export type Failure = {
|
|
|
32
56
|
export declare function writeFailure(page: Page, dir: string, failure: Failure, options?: {
|
|
33
57
|
draft?: boolean;
|
|
34
58
|
}): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* A failure that happened before the run had a page to record (a saved
|
|
61
|
+
* session the browser refused, a clip whose viewport is invalid) leaves no
|
|
62
|
+
* report of its own. This writes the message where a later step looks for
|
|
63
|
+
* one, with no step, no frame and no picture, so `publish` and `--report`
|
|
64
|
+
* still say that the clip failed and why. A report the run did write is kept.
|
|
65
|
+
*/
|
|
66
|
+
export declare function ensureFailure(dir: string, error: Error): void;
|
package/dist/driver/reports.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import { writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
/**
|
|
4
4
|
* What a recording leaves behind besides its frames.
|
|
5
5
|
*
|
|
6
6
|
* A clip is written by someone who was not watching it run — increasingly,
|
|
7
7
|
* by something that cannot watch at all — so everything that would have been
|
|
8
|
-
* on screen has to be on disk.
|
|
9
|
-
* it ended badly, the page at the moment it gave up.
|
|
8
|
+
* on screen has to be on disk. What the waits waited for; where each step's
|
|
9
|
+
* target was; and, if it ended badly, the page at the moment it gave up.
|
|
10
10
|
*/
|
|
11
11
|
/** The name a reader looks for, in one place. */
|
|
12
12
|
export const SETTLES_FILE = "settles.json";
|
|
13
13
|
export const FAILURE_JSON = "failure.json";
|
|
14
14
|
export const FAILURE_PNG = "failure.png";
|
|
15
|
+
export const TARGETS_FILE = "targets.json";
|
|
15
16
|
export function writeSettles(dir, reports) {
|
|
16
17
|
writeFileSync(join(dir, SETTLES_FILE), `${JSON.stringify(reports, null, 2)}\n`);
|
|
17
18
|
}
|
|
19
|
+
export function writeTargets(dir, targets) {
|
|
20
|
+
writeFileSync(join(dir, TARGETS_FILE), `${JSON.stringify(targets, null, 2)}\n`);
|
|
21
|
+
}
|
|
18
22
|
/**
|
|
19
23
|
* The failure, then the picture of it.
|
|
20
24
|
*
|
|
@@ -39,4 +43,28 @@ export async function writeFailure(page, dir, failure, options = {}) {
|
|
|
39
43
|
// Nothing to do about it here, and the original failure is on its way up.
|
|
40
44
|
}
|
|
41
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* A failure that happened before the run had a page to record (a saved
|
|
48
|
+
* session the browser refused, a clip whose viewport is invalid) leaves no
|
|
49
|
+
* report of its own. This writes the message where a later step looks for
|
|
50
|
+
* one, with no step, no frame and no picture, so `publish` and `--report`
|
|
51
|
+
* still say that the clip failed and why. A report the run did write is kept.
|
|
52
|
+
*/
|
|
53
|
+
export function ensureFailure(dir, error) {
|
|
54
|
+
if (existsSync(join(dir, FAILURE_JSON)))
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
mkdirSync(dir, { recursive: true });
|
|
58
|
+
const failure = {
|
|
59
|
+
message: error.message,
|
|
60
|
+
frame: -1,
|
|
61
|
+
t: 0,
|
|
62
|
+
step: null,
|
|
63
|
+
};
|
|
64
|
+
writeFileSync(join(dir, FAILURE_JSON), `${JSON.stringify(failure, null, 2)}\n`);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// The error itself is on its way to the terminal either way.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
42
70
|
//# sourceMappingURL=reports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/driver/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/driver/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC;;;;;;;GAOG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,OAAuB;IAC/D,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACvB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;AACJ,CAAC;AAeD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,OAAgB;IACxD,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACvB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;AACJ,CAAC;AAgBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,GAAW,EACX,OAAgB,EAChB,UAA+B,EAAE;IAEjC,IAAI,CAAC;QACH,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACvB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;QACF,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EACtB,MAAM,IAAI,CAAC,UAAU,CAAC;YACpB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,SAAS;YAChB,iEAAiE;YACjE,6DAA6D;YAC7D,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAY;IACrD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO;IAChD,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GAAY;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,IAAI;SACX,CAAC;QACF,aAAa,CACX,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EACvB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC"}
|
package/dist/driver/session.d.ts
CHANGED
|
@@ -57,6 +57,8 @@ export declare class RecordingSession {
|
|
|
57
57
|
* the cursor goes next, which only the rest of the clip says.
|
|
58
58
|
*/
|
|
59
59
|
private readonly cameraWrites;
|
|
60
|
+
/** The first box each step measured, by the step's index. */
|
|
61
|
+
private readonly stepTargets;
|
|
60
62
|
/** Where the cursor rests in frame 0, before its track has a step. */
|
|
61
63
|
private readonly cursorStart;
|
|
62
64
|
/** Authored time, in seconds. */
|
|
@@ -249,6 +251,15 @@ export declare class RecordingSession {
|
|
|
249
251
|
* already on screen is one round trip and no page time at all.
|
|
250
252
|
*/
|
|
251
253
|
private untilVisible;
|
|
254
|
+
/**
|
|
255
|
+
* Move the page's transitions to its clock after a wait moved it, so one
|
|
256
|
+
* that started during the wait is taken over within a tick, rather than
|
|
257
|
+
* left running, and perhaps finishing, on real time until the next frame.
|
|
258
|
+
*
|
|
259
|
+
* Best effort: a wait can straddle a navigation, which destroys the page's
|
|
260
|
+
* context under the call, and the next frame's probe syncs regardless.
|
|
261
|
+
*/
|
|
262
|
+
private syncTransitions;
|
|
252
263
|
/**
|
|
253
264
|
* Run `fn` with the page's clock ticking alongside real time, the way it
|
|
254
265
|
* runs in a browser nobody is driving.
|
|
@@ -313,6 +324,18 @@ export declare class RecordingSession {
|
|
|
313
324
|
* `runClip`, never by a clip.
|
|
314
325
|
*/
|
|
315
326
|
forClipBody(): RecordingSession;
|
|
327
|
+
/**
|
|
328
|
+
* What the run leaves besides its frames: where each step's target was, and
|
|
329
|
+
* the step that is running now (the one that failed, when this is asked
|
|
330
|
+
* after a failure). Called by `runClip`, never by a clip.
|
|
331
|
+
*/
|
|
332
|
+
evidence(): {
|
|
333
|
+
targets: Record<string, Rect>;
|
|
334
|
+
step: {
|
|
335
|
+
index: number;
|
|
336
|
+
call: string;
|
|
337
|
+
} | null;
|
|
338
|
+
};
|
|
316
339
|
/** Write the timeline out. Called by `clip()` once the script has run. */
|
|
317
340
|
finish(): Timeline;
|
|
318
341
|
}
|
package/dist/driver/session.js
CHANGED
|
@@ -12,9 +12,9 @@ import { typingSchedule } from "../core/typing.js";
|
|
|
12
12
|
import { emptyTimeline, frameAt, timeAt, validateTimeline, } from "../core/timeline.js";
|
|
13
13
|
import { emptyTiming } from "../core/timing.js";
|
|
14
14
|
import { TICK_MS, settlePage } from "./settle.js";
|
|
15
|
-
import { FRAME_PROBE } from "./page-hooks.js";
|
|
15
|
+
import { FRAME_PROBE, SYNC_TRANSITIONS } from "./page-hooks.js";
|
|
16
16
|
/** Members a script calls that are not steps: locator factories, and the driver's own. */
|
|
17
|
-
const NOT_A_STEP = /^(by[A-Z]|css$|constructor$|finish$|forClipBody$)/;
|
|
17
|
+
const NOT_A_STEP = /^(by[A-Z]|css$|constructor$|finish$|forClipBody$|evidence$)/;
|
|
18
18
|
/**
|
|
19
19
|
* `Array.isArray` does not narrow a readonly tuple union, and a Locator is an
|
|
20
20
|
* object like any other, so both targets need real guards.
|
|
@@ -68,6 +68,8 @@ export class RecordingSession {
|
|
|
68
68
|
* the cursor goes next, which only the rest of the clip says.
|
|
69
69
|
*/
|
|
70
70
|
cameraWrites = [];
|
|
71
|
+
/** The first box each step measured, by the step's index. */
|
|
72
|
+
stepTargets = {};
|
|
71
73
|
/** Where the cursor rests in frame 0, before its track has a step. */
|
|
72
74
|
cursorStart;
|
|
73
75
|
/** Authored time, in seconds. */
|
|
@@ -543,7 +545,14 @@ export class RecordingSession {
|
|
|
543
545
|
if (!box) {
|
|
544
546
|
throw new Error(`Matched ${locator.toString()} but it has no box (zero-sized or detached).`);
|
|
545
547
|
}
|
|
546
|
-
|
|
548
|
+
const rect = { x: box.x, y: box.y, w: box.width, h: box.height };
|
|
549
|
+
// Kept for the targets sidecar: the first box a step measures is the
|
|
550
|
+
// control it acts on. A step's own later measurements (typeInto clicking
|
|
551
|
+
// the field it already measured) must not replace it.
|
|
552
|
+
const steps = this.timeline.steps ?? [];
|
|
553
|
+
if (steps.length > 0)
|
|
554
|
+
this.stepTargets[String(steps.length - 1)] ??= rect;
|
|
555
|
+
return rect;
|
|
547
556
|
}
|
|
548
557
|
/**
|
|
549
558
|
* Wait for a target to be on screen, advancing the page's clock a tick at a
|
|
@@ -570,9 +579,21 @@ export class RecordingSession {
|
|
|
570
579
|
if (performance.now() > deadline)
|
|
571
580
|
return false;
|
|
572
581
|
await this.page.clock.runFor(TICK_MS);
|
|
582
|
+
await this.syncTransitions();
|
|
573
583
|
await sleep(TICK_MS);
|
|
574
584
|
}
|
|
575
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* Move the page's transitions to its clock after a wait moved it, so one
|
|
588
|
+
* that started during the wait is taken over within a tick, rather than
|
|
589
|
+
* left running, and perhaps finishing, on real time until the next frame.
|
|
590
|
+
*
|
|
591
|
+
* Best effort: a wait can straddle a navigation, which destroys the page's
|
|
592
|
+
* context under the call, and the next frame's probe syncs regardless.
|
|
593
|
+
*/
|
|
594
|
+
async syncTransitions() {
|
|
595
|
+
await this.page.evaluate(SYNC_TRANSITIONS).catch(() => undefined);
|
|
596
|
+
}
|
|
576
597
|
/**
|
|
577
598
|
* Run `fn` with the page's clock ticking alongside real time, the way it
|
|
578
599
|
* runs in a browser nobody is driving.
|
|
@@ -592,6 +613,7 @@ export class RecordingSession {
|
|
|
592
613
|
// would be in any browser, and not a reason to fail the sign-in it
|
|
593
614
|
// happened during.
|
|
594
615
|
await this.page.clock.runFor(TICK_MS).catch(() => undefined);
|
|
616
|
+
await this.syncTransitions();
|
|
595
617
|
}
|
|
596
618
|
})();
|
|
597
619
|
try {
|
|
@@ -657,8 +679,9 @@ export class RecordingSession {
|
|
|
657
679
|
// One round trip, after the input and the tick, because that is the
|
|
658
680
|
// state this frame will be photographed in. It scrubs the page's own CSS
|
|
659
681
|
// animations to this frame's authored time — so a spinner spins at the
|
|
660
|
-
// rate the clip plays rather than the rate the machine ran —
|
|
661
|
-
//
|
|
682
|
+
// rate the clip plays rather than the rate the machine ran — moves its
|
|
683
|
+
// transitions to the page's clock, which the tick just advanced, and
|
|
684
|
+
// reads back what decides whether this frame needs a screenshot.
|
|
662
685
|
const probe = await this.page.evaluate(FRAME_PROBE(tf, position[0], position[1]));
|
|
663
686
|
if (this.shouldCapture(f, probe)) {
|
|
664
687
|
await this.captureFrame(f, probe);
|
|
@@ -695,8 +718,10 @@ export class RecordingSession {
|
|
|
695
718
|
}
|
|
696
719
|
if (probe.mutations !== last.mutations)
|
|
697
720
|
return true;
|
|
698
|
-
// A scrubbed animation
|
|
699
|
-
// nothing the other clauses watch.
|
|
721
|
+
// A scrubbed animation, or a transition on the page's clock, repaints
|
|
722
|
+
// every frame while it runs, touching nothing the other clauses watch.
|
|
723
|
+
// Both are in this count, and the frame a transition finishes on is
|
|
724
|
+
// caught by the previous frame's.
|
|
700
725
|
if (probe.animations > 0 || last.animations > 0)
|
|
701
726
|
return true;
|
|
702
727
|
// The pointer glyph is drawn in post, so the cursor moving is not a
|
|
@@ -822,6 +847,19 @@ export class RecordingSession {
|
|
|
822
847
|
});
|
|
823
848
|
return view(this, "");
|
|
824
849
|
}
|
|
850
|
+
/**
|
|
851
|
+
* What the run leaves besides its frames: where each step's target was, and
|
|
852
|
+
* the step that is running now (the one that failed, when this is asked
|
|
853
|
+
* after a failure). Called by `runClip`, never by a clip.
|
|
854
|
+
*/
|
|
855
|
+
evidence() {
|
|
856
|
+
const steps = this.timeline.steps ?? [];
|
|
857
|
+
const last = steps.at(-1);
|
|
858
|
+
return {
|
|
859
|
+
targets: { ...this.stepTargets },
|
|
860
|
+
step: last ? { index: steps.length - 1, call: last.call } : null,
|
|
861
|
+
};
|
|
862
|
+
}
|
|
825
863
|
/** Write the timeline out. Called by `clip()` once the script has run. */
|
|
826
864
|
finish() {
|
|
827
865
|
const startedAt = performance.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/driver/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/driver/session.ts"],"names":[],"mappings":"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"}
|
package/dist/driver/settle.d.ts
CHANGED
|
@@ -30,7 +30,8 @@ export declare const TICK_MS = 16;
|
|
|
30
30
|
* DuckDB query "returning instantly": the wait happens, it just never reaches
|
|
31
31
|
* the timeline. The cost of getting this wrong is a frame captured mid-update,
|
|
32
32
|
* so the checks are deliberately conservative — DOM quiet *and* no network in
|
|
33
|
-
* flight *and* fonts loaded *and*
|
|
33
|
+
* flight *and* fonts loaded *and* no transition still running *and* whatever
|
|
34
|
+
* the clip adds.
|
|
34
35
|
*
|
|
35
36
|
* Each iteration advances fake time *and* yields real time. `clock.runFor()`
|
|
36
37
|
* only moves the page's own timeline: it fires due timers and resolves, but it
|
package/dist/driver/settle.js
CHANGED
|
@@ -9,7 +9,8 @@ const DEFAULT_YIELD_MS = 20;
|
|
|
9
9
|
* DuckDB query "returning instantly": the wait happens, it just never reaches
|
|
10
10
|
* the timeline. The cost of getting this wrong is a frame captured mid-update,
|
|
11
11
|
* so the checks are deliberately conservative — DOM quiet *and* no network in
|
|
12
|
-
* flight *and* fonts loaded *and*
|
|
12
|
+
* flight *and* fonts loaded *and* no transition still running *and* whatever
|
|
13
|
+
* the clip adds.
|
|
13
14
|
*
|
|
14
15
|
* Each iteration advances fake time *and* yields real time. `clock.runFor()`
|
|
15
16
|
* only moves the page's own timeline: it fires due timers and resolves, but it
|
|
@@ -28,15 +29,24 @@ export async function settlePage(page, inFlightRequests, options = {}) {
|
|
|
28
29
|
let lastMutations = -1;
|
|
29
30
|
let lastBlocker = "none";
|
|
30
31
|
for (;;) {
|
|
32
|
+
// The same round trip moves the page's transitions to its clock, which
|
|
33
|
+
// the last tick advanced, and says how many are still running.
|
|
31
34
|
const probe = await page.evaluate(() => ({
|
|
32
35
|
mutations: window.__recorder?.mutations ?? 0,
|
|
33
36
|
fontsLoaded: document.fonts ? document.fonts.status === "loaded" : true,
|
|
37
|
+
transitions: window.__recorderTransitions?.sync() ?? 0,
|
|
34
38
|
}));
|
|
35
39
|
const requests = inFlightRequests();
|
|
36
40
|
const hookOk = options.hook ? await options.hook() : true;
|
|
41
|
+
// A running transition touches no DOM and no network, so the other
|
|
42
|
+
// checks would call the page finished halfway through one. Waiting it out
|
|
43
|
+
// is what makes the frame after a settle the same on every run: the
|
|
44
|
+
// settle's length depends on the machine, so a transition still running
|
|
45
|
+
// at its end would be caught at a point that does too.
|
|
37
46
|
const quiet = probe.mutations === lastMutations &&
|
|
38
47
|
requests === 0 &&
|
|
39
48
|
probe.fontsLoaded &&
|
|
49
|
+
probe.transitions === 0 &&
|
|
40
50
|
hookOk;
|
|
41
51
|
if (!quiet) {
|
|
42
52
|
if (probe.mutations !== lastMutations)
|
|
@@ -45,6 +55,8 @@ export async function settlePage(page, inFlightRequests, options = {}) {
|
|
|
45
55
|
lastBlocker = `requests(${requests})`;
|
|
46
56
|
else if (!probe.fontsLoaded)
|
|
47
57
|
lastBlocker = "fonts";
|
|
58
|
+
else if (probe.transitions > 0)
|
|
59
|
+
lastBlocker = `transitions(${probe.transitions})`;
|
|
48
60
|
else
|
|
49
61
|
lastBlocker = "hook";
|
|
50
62
|
}
|