screenwright 0.1.23 → 0.1.27
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/dist/src/commands/compose.d.ts.map +1 -1
- package/dist/src/commands/compose.js +1 -0
- package/dist/src/commands/compose.js.map +1 -1
- package/dist/src/composition/DemoVideo.d.ts +2 -0
- package/dist/src/composition/DemoVideo.d.ts.map +1 -1
- package/dist/src/composition/DemoVideo.js +21 -7
- package/dist/src/composition/DemoVideo.js.map +1 -1
- package/dist/src/composition/SceneSlide.d.ts +13 -0
- package/dist/src/composition/SceneSlide.d.ts.map +1 -0
- package/dist/src/composition/SceneSlide.js +97 -0
- package/dist/src/composition/SceneSlide.js.map +1 -0
- package/dist/src/composition/remotion-root.d.ts.map +1 -1
- package/dist/src/composition/remotion-root.js +7 -1
- package/dist/src/composition/remotion-root.js.map +1 -1
- package/dist/src/composition/render.d.ts +2 -0
- package/dist/src/composition/render.d.ts.map +1 -1
- package/dist/src/composition/render.js +7 -2
- package/dist/src/composition/render.js.map +1 -1
- package/dist/src/composition/time-remap.d.ts +26 -0
- package/dist/src/composition/time-remap.d.ts.map +1 -0
- package/dist/src/composition/time-remap.js +63 -0
- package/dist/src/composition/time-remap.js.map +1 -0
- package/dist/src/config/config-schema.d.ts +37 -0
- package/dist/src/config/config-schema.d.ts.map +1 -1
- package/dist/src/config/config-schema.js +7 -0
- package/dist/src/config/config-schema.js.map +1 -1
- package/dist/src/runtime/instrumented-page.d.ts.map +1 -1
- package/dist/src/runtime/instrumented-page.js +35 -27
- package/dist/src/runtime/instrumented-page.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
|
@@ -6,6 +6,7 @@ import { TimelineCollector } from './timeline-collector.js';
|
|
|
6
6
|
import { createHelpers } from './action-helpers.js';
|
|
7
7
|
export async function runScenario(scenario, opts) {
|
|
8
8
|
const viewport = opts.viewport ?? { width: 1280, height: 720 };
|
|
9
|
+
const DPR = 2;
|
|
9
10
|
const tempDir = await mkdtemp(join(tmpdir(), 'screenwright-'));
|
|
10
11
|
const captureMode = opts.captureMode ?? 'frames';
|
|
11
12
|
const browser = await chromium.launch({
|
|
@@ -13,7 +14,7 @@ export async function runScenario(scenario, opts) {
|
|
|
13
14
|
});
|
|
14
15
|
const contextOpts = {
|
|
15
16
|
viewport,
|
|
16
|
-
deviceScaleFactor:
|
|
17
|
+
deviceScaleFactor: DPR,
|
|
17
18
|
colorScheme: opts.colorScheme ?? 'light',
|
|
18
19
|
locale: opts.locale ?? 'en-US',
|
|
19
20
|
timezoneId: opts.timezoneId ?? 'America/New_York',
|
|
@@ -31,54 +32,59 @@ export async function runScenario(scenario, opts) {
|
|
|
31
32
|
const page = await context.newPage();
|
|
32
33
|
const collector = new TimelineCollector();
|
|
33
34
|
let frameManifest;
|
|
34
|
-
let
|
|
35
|
-
let
|
|
35
|
+
let captureTimer;
|
|
36
|
+
let frameCounter = 0;
|
|
37
|
+
let capturing = false;
|
|
36
38
|
if (captureMode === 'frames') {
|
|
37
39
|
const framesDir = join(tempDir, 'frames');
|
|
38
40
|
await mkdir(framesDir, { recursive: true });
|
|
39
41
|
frameManifest = [];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
// Use page.screenshot() which captures at deviceScaleFactor resolution.
|
|
43
|
+
// CDP screencast ignores DPR — screenshots are the only reliable way to
|
|
44
|
+
// get true 2× frames.
|
|
45
|
+
captureTimer = setInterval(() => {
|
|
46
|
+
if (capturing)
|
|
47
|
+
return;
|
|
48
|
+
capturing = true;
|
|
49
|
+
(async () => {
|
|
45
50
|
try {
|
|
46
51
|
frameCounter++;
|
|
47
52
|
const filename = `frame-${String(frameCounter).padStart(6, '0')}.jpg`;
|
|
48
53
|
const filePath = join(framesDir, filename);
|
|
49
|
-
await
|
|
54
|
+
await page.screenshot({ path: filePath, type: 'jpeg', quality: 95 });
|
|
50
55
|
frameManifest.push({
|
|
51
56
|
timestampMs: collector.elapsed(),
|
|
52
57
|
file: `frames/${filename}`,
|
|
53
58
|
});
|
|
54
|
-
await cdpSession.send('Page.screencastFrameAck', { sessionId: params.sessionId });
|
|
55
59
|
}
|
|
56
60
|
catch {
|
|
57
|
-
//
|
|
61
|
+
// Page may not be ready or is closing
|
|
58
62
|
}
|
|
63
|
+
capturing = false;
|
|
59
64
|
})();
|
|
60
|
-
});
|
|
65
|
+
}, 100);
|
|
61
66
|
}
|
|
62
67
|
collector.start();
|
|
63
|
-
if (cdpSession) {
|
|
64
|
-
await cdpSession.send('Page.startScreencast', {
|
|
65
|
-
format: 'jpeg',
|
|
66
|
-
quality: 95,
|
|
67
|
-
maxWidth: viewport.width,
|
|
68
|
-
maxHeight: viewport.height,
|
|
69
|
-
everyNthFrame: 1,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
68
|
const sw = createHelpers(page, collector);
|
|
73
69
|
let videoFile;
|
|
74
70
|
try {
|
|
75
71
|
await scenario(sw);
|
|
76
|
-
// Stop
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
// Stop frame capture and take one final screenshot
|
|
73
|
+
if (captureTimer) {
|
|
74
|
+
clearInterval(captureTimer);
|
|
75
|
+
try {
|
|
76
|
+
frameCounter++;
|
|
77
|
+
const filename = `frame-${String(frameCounter).padStart(6, '0')}.jpg`;
|
|
78
|
+
const filePath = join(join(tempDir, 'frames'), filename);
|
|
79
|
+
await page.screenshot({ path: filePath, type: 'jpeg', quality: 95 });
|
|
80
|
+
frameManifest.push({
|
|
81
|
+
timestampMs: collector.elapsed(),
|
|
82
|
+
file: `frames/${filename}`,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Page may already be closing
|
|
87
|
+
}
|
|
82
88
|
}
|
|
83
89
|
// Close page to finalize video
|
|
84
90
|
await page.close();
|
|
@@ -88,6 +94,8 @@ export async function runScenario(scenario, opts) {
|
|
|
88
94
|
}
|
|
89
95
|
}
|
|
90
96
|
finally {
|
|
97
|
+
if (captureTimer)
|
|
98
|
+
clearInterval(captureTimer);
|
|
91
99
|
// Ensure browser resources are always cleaned up (idempotent if already closed)
|
|
92
100
|
await page.close().catch(() => { });
|
|
93
101
|
await context.close().catch(() => { });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumented-page.js","sourceRoot":"","sources":["../../../src/runtime/instrumented-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"instrumented-page.js","sourceRoot":"","sources":["../../../src/runtime/instrumented-page.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.27";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.1.
|
|
1
|
+
export const VERSION = "0.1.27";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|