trawl-devices-agent 0.3.0 → 0.6.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.
@@ -0,0 +1,80 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { AgentError } from "./types.js";
4
+ import { runDir, runsDir } from "./workspace.js";
5
+ export async function listRuns(workspace, query = {}) {
6
+ const dir = runsDir(workspace);
7
+ let entries;
8
+ try {
9
+ entries = await fs.readdir(dir, { withFileTypes: true });
10
+ }
11
+ catch {
12
+ return [];
13
+ }
14
+ const reports = [];
15
+ for (const entry of entries) {
16
+ if (!entry.isDirectory())
17
+ continue;
18
+ try {
19
+ const raw = await fs.readFile(path.join(dir, entry.name, "report.json"), "utf8");
20
+ const report = JSON.parse(raw);
21
+ if (query.script && report.script !== query.script)
22
+ continue;
23
+ reports.push(report);
24
+ }
25
+ catch {
26
+ // A run still in flight has no report yet.
27
+ }
28
+ }
29
+ reports.sort((a, b) => b.startedAt - a.startedAt);
30
+ return reports.slice(0, query.limit ?? 50);
31
+ }
32
+ /** Every file a run produced, as run-relative paths. */
33
+ export async function listArtifacts(workspace, runId) {
34
+ const root = runDir(workspace, runId);
35
+ const out = [];
36
+ const walk = async (dir) => {
37
+ let entries;
38
+ try {
39
+ entries = await fs.readdir(dir, { withFileTypes: true });
40
+ }
41
+ catch {
42
+ return;
43
+ }
44
+ for (const entry of entries) {
45
+ const abs = path.join(dir, entry.name);
46
+ if (entry.isDirectory())
47
+ await walk(abs);
48
+ else
49
+ out.push({ path: path.relative(root, abs), size: (await fs.stat(abs)).size });
50
+ }
51
+ };
52
+ await walk(root);
53
+ out.sort((a, b) => a.path.localeCompare(b.path));
54
+ return out;
55
+ }
56
+ const MIME = {
57
+ ".png": "image/png",
58
+ ".jpg": "image/jpeg",
59
+ ".jpeg": "image/jpeg",
60
+ ".webm": "video/webm",
61
+ ".zip": "application/zip",
62
+ ".json": "application/json",
63
+ };
64
+ /** One artifact, base64-encoded: the plugin has no filesystem of its own. */
65
+ export async function readArtifact(workspace, runId, relative) {
66
+ const root = runDir(workspace, runId);
67
+ const abs = path.resolve(root, relative);
68
+ if (abs !== root && !abs.startsWith(root + path.sep)) {
69
+ throw new AgentError("script", `path escapes the run folder: ${relative}`);
70
+ }
71
+ const data = await fs.readFile(abs).catch(() => {
72
+ throw new AgentError("agent", `no such artifact: ${relative}`);
73
+ });
74
+ return {
75
+ mime: MIME[path.extname(abs).toLowerCase()] ?? "application/octet-stream",
76
+ base64: data.toString("base64"),
77
+ size: data.length,
78
+ };
79
+ }
80
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../src/archive.ts"],"names":[],"mappings":"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"}
package/dist/devices.js CHANGED
@@ -11,6 +11,9 @@ export const DEVICE_DEFAULTS = {
11
11
  ignoreHTTPSErrors: true,
12
12
  trace: "on-failure",
13
13
  video: false,
14
+ stepDelayMs: 0,
15
+ closeAfterRun: true,
16
+ videoFps: 5,
14
17
  capabilities: ["record", "run", "live", "traffic"],
15
18
  };
16
19
  const BROWSERS = ["chromium", "firefox", "webkit"];
@@ -35,6 +38,14 @@ export function validateDevice(input) {
35
38
  fail(`proxy.mode must be one of ${PROXY_MODES.join(", ")}`);
36
39
  if (merged.proxy.mode === "custom" && !merged.proxy.url)
37
40
  fail("proxy.url is required when proxy.mode is custom");
41
+ if (typeof merged.stepDelayMs !== "number" || merged.stepDelayMs < 0 || merged.stepDelayMs > 60_000) {
42
+ fail("stepDelayMs must be between 0 and 60000");
43
+ }
44
+ if (typeof merged.closeAfterRun !== "boolean")
45
+ fail("closeAfterRun must be a boolean");
46
+ if (typeof merged.videoFps !== "number" || merged.videoFps < 1 || merged.videoFps > 30) {
47
+ fail("videoFps must be between 1 and 30");
48
+ }
38
49
  merged.type = "browser";
39
50
  return merged;
40
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"devices.js","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"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"}
package/dist/frames.js ADDED
@@ -0,0 +1,79 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ /**
4
+ * Playwright's own video is fixed at ~25 fps, cannot be slowed down, and never
5
+ * shows the pointer — a replay recorded that way is heavy and hard to read.
6
+ * So frames are captured here instead, at a chosen rate, over a page that draws
7
+ * its own cursor.
8
+ */
9
+ export const CURSOR_SOURCE = String.raw `
10
+ (() => {
11
+ if (window.__trawlCursorInstalled) return;
12
+ window.__trawlCursorInstalled = true;
13
+
14
+ const install = () => {
15
+ if (!document.body || document.getElementById('__trawl_cursor')) return;
16
+ const dot = document.createElement('div');
17
+ dot.id = '__trawl_cursor';
18
+ dot.style.cssText =
19
+ 'position:fixed;left:0;top:0;width:16px;height:16px;margin:-8px 0 0 -8px;' +
20
+ 'border-radius:50%;border:2px solid #fff;background:rgba(255,64,64,.75);' +
21
+ 'box-shadow:0 0 0 1px rgba(0,0,0,.5);pointer-events:none;z-index:2147483646;' +
22
+ 'transition:transform .05s linear';
23
+ document.body.appendChild(dot);
24
+
25
+ const move = (x, y) => { dot.style.transform = 'translate(' + x + 'px,' + y + 'px)'; };
26
+ document.addEventListener('mousemove', (e) => move(e.clientX, e.clientY), true);
27
+ document.addEventListener('mousedown', () => { dot.style.background = 'rgba(255,64,64,1)'; dot.style.width = '26px'; dot.style.height = '26px'; dot.style.margin = '-13px 0 0 -13px'; }, true);
28
+ document.addEventListener('mouseup', () => { dot.style.background = 'rgba(255,64,64,.75)'; dot.style.width = '16px'; dot.style.height = '16px'; dot.style.margin = '-8px 0 0 -8px'; }, true);
29
+ };
30
+
31
+ if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', install);
32
+ else install();
33
+ // Pages replace their body on client-side navigation; keep the cursor alive.
34
+ setInterval(install, 1000);
35
+ })();
36
+ `;
37
+ /** Draw a pointer in every page of the context, current and future. */
38
+ export async function installCursor(context) {
39
+ await context.addInitScript(CURSOR_SOURCE);
40
+ await Promise.all(context.pages().map((p) => p.evaluate(CURSOR_SOURCE).catch(() => { })));
41
+ }
42
+ /**
43
+ * Screenshot `page` into `dir` at `fps` until stopped. Frames are JPEG: a run of
44
+ * a few minutes at 5 fps is then megabytes rather than hundreds of them.
45
+ */
46
+ export async function captureFrames(page, dir, fps) {
47
+ await fs.mkdir(dir, { recursive: true });
48
+ const interval = Math.max(50, Math.round(1000 / Math.max(1, fps)));
49
+ let index = 0;
50
+ let stopped = false;
51
+ let inFlight = Promise.resolve();
52
+ const timer = setInterval(() => {
53
+ if (stopped)
54
+ return;
55
+ inFlight = inFlight.then(async () => {
56
+ if (stopped || page.isClosed())
57
+ return;
58
+ const file = path.join(dir, `${String(index).padStart(5, "0")}.jpg`);
59
+ try {
60
+ await page.screenshot({ path: file, type: "jpeg", quality: 60, timeout: interval * 4 });
61
+ index += 1;
62
+ }
63
+ catch {
64
+ // A screenshot can fail mid-navigation; the next tick tries again.
65
+ }
66
+ });
67
+ }, interval);
68
+ timer.unref?.();
69
+ return {
70
+ count: () => index,
71
+ stop: async () => {
72
+ stopped = true;
73
+ clearInterval(timer);
74
+ await inFlight;
75
+ return { count: index, fps };
76
+ },
77
+ };
78
+ }
79
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtC,CAAC;AAQF,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAuB;IACzD,MAAM,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW;IACtE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,OAAO;YAAE,OAAO;QACpB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxF,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,QAAQ,CAAC,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAEhB,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,QAAQ,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ import { ensureBrowser } from "./browsers.js";
7
7
  import { AGENT_VERSION, DSL_VERSION } from "./version.js";
8
8
  import { STEP_NAMES } from "./steps.js";
9
9
  import { buildRoutes } from "./routes.js";
10
+ import { SessionStore } from "./sessions.js";
10
11
  import os from "node:os";
11
12
  import path from "node:path";
12
13
  const arg = (name, fallback) => {
@@ -29,12 +30,27 @@ if (process.argv.includes("--ensure-browser")) {
29
30
  const pruned = await pruneRuns(workspace, Number(arg("keep-runs", "50")));
30
31
  if (pruned.length)
31
32
  console.log(`pruned ${pruned.length} old run(s)`);
33
+ // Owned here so the shutdown path can close every browser: a killed agent that
34
+ // leaves Chromium behind is exactly what "the browser won't close" looks like.
35
+ const sessions = new SessionStore();
36
+ let shuttingDown = false;
37
+ const shutdown = async (signal) => {
38
+ if (shuttingDown)
39
+ return;
40
+ shuttingDown = true;
41
+ console.log(`[agent] ${signal} — closing browsers`);
42
+ await sessions.stopAll().catch(() => { });
43
+ process.exit(0);
44
+ };
45
+ for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
46
+ process.on(signal, () => void shutdown(signal));
47
+ }
32
48
  let port = -1;
33
49
  for (let candidate = wanted; candidate < wanted + 20 && port < 0; candidate++) {
34
50
  const server = createServer({
35
51
  token,
36
52
  getPort: () => port,
37
- routes: buildRoutes({ workspace, trawlProxyPort }),
53
+ routes: buildRoutes({ workspace, trawlProxyPort, sessions }),
38
54
  health: () => ({ dsl: DSL_VERSION, steps: [...STEP_NAMES], workspace, proxyPort: trawlProxyPort }),
39
55
  });
40
56
  port = await listen(server, candidate);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/recorder.js CHANGED
@@ -4,7 +4,12 @@ import { toLocator } from "./targets.js";
4
4
  import { generate } from "./codegen.js";
5
5
  import { writeScript } from "./workspace.js";
6
6
  import { RECORDER_SOURCE } from "./recorderInject.js";
7
+ /** A navigation this soon after a recorded action is that action's consequence. */
8
+ const NAVIGATION_GRACE_MS = 1500;
9
+ const isRecordableUrl = (url) => Boolean(url) && url !== "about:blank" && !url.startsWith("chrome-error://") && !url.startsWith("devtools://");
7
10
  const MARK = "data-trawl-rec-el";
11
+ /** Past this, a candidate is too vague to pin down by index. */
12
+ const MAX_AMBIGUOUS_MATCHES = 30;
8
13
  export class RecorderStore {
9
14
  deps;
10
15
  recordings = new Map();
@@ -25,6 +30,8 @@ export class RecorderStore {
25
30
  steps: [],
26
31
  warnings: [],
27
32
  startedAt: Date.now(),
33
+ lastStepAt: 0,
34
+ lastUrl: null,
28
35
  };
29
36
  await session.context.exposeBinding("__trawlRec", async ({ page }, raw) => {
30
37
  try {
@@ -34,12 +41,29 @@ export class RecorderStore {
34
41
  action: raw.action,
35
42
  args: [target, ...raw.args],
36
43
  });
44
+ recording.lastStepAt = Date.now();
37
45
  }
38
46
  catch (err) {
39
47
  recording.warnings.push(`dropped ${raw.action}: ${err.message}`);
40
48
  }
41
49
  });
42
50
  await session.context.addInitScript(RECORDER_SOURCE);
51
+ // Addresses the human opens are steps too: without them a replay has no
52
+ // idea where to start.
53
+ session.page.on("framenavigated", (frame) => {
54
+ if (frame !== session.page.mainFrame())
55
+ return;
56
+ const url = frame.url();
57
+ if (!isRecordableUrl(url) || url === recording.lastUrl)
58
+ return;
59
+ recording.lastUrl = url;
60
+ // A click we already recorded is what caused this navigation — recording
61
+ // a goto as well would replay the click and then jump past its result.
62
+ if (Date.now() - recording.lastStepAt < NAVIGATION_GRACE_MS)
63
+ return;
64
+ recording.steps.push({ index: recording.steps.length, action: "goto", args: [url] });
65
+ recording.lastStepAt = Date.now();
66
+ });
43
67
  this.deps.sessions.setState(sessionId, "recording");
44
68
  if (url)
45
69
  await session.page.goto(url);
@@ -56,15 +80,23 @@ export class RecorderStore {
56
80
  for (const candidate of candidates) {
57
81
  try {
58
82
  const locator = toLocator(page, candidate);
59
- if ((await locator.count()) !== 1)
83
+ const count = await locator.count();
84
+ if (count === 0)
85
+ continue;
86
+ if (count === 1) {
87
+ if (await this.isMarked(locator))
88
+ return candidate;
60
89
  continue;
61
- const handle = (await locator.elementHandle({ timeout: 1000 }));
62
- if (!handle)
90
+ }
91
+ // Ambiguous on its own, but still usable: pin it to the element that was
92
+ // actually clicked. Recording it bare would fail the replay with a
93
+ // strict-mode violation the moment the page has siblings like it.
94
+ if (count > MAX_AMBIGUOUS_MATCHES)
63
95
  continue;
64
- const isMarked = await handle.evaluate((el, mark) => el.hasAttribute(mark), MARK);
65
- await handle.dispose();
66
- if (isMarked)
67
- return candidate;
96
+ for (let i = 0; i < count; i++) {
97
+ if (await this.isMarked(locator.nth(i)))
98
+ return { ...candidate, nth: i };
99
+ }
68
100
  }
69
101
  catch {
70
102
  // try the next candidate
@@ -76,6 +108,17 @@ export class RecorderStore {
76
108
  recording.warnings.push(`no verified target; fell back to ${JSON.stringify(fallback)}`);
77
109
  return fallback;
78
110
  }
111
+ async isMarked(locator) {
112
+ const handle = (await locator.elementHandle({ timeout: 1000 }));
113
+ if (!handle)
114
+ return false;
115
+ try {
116
+ return await handle.evaluate((el, mark) => el.hasAttribute(mark), MARK);
117
+ }
118
+ finally {
119
+ await handle.dispose();
120
+ }
121
+ }
79
122
  async stop(id, options) {
80
123
  const recording = this.get(id);
81
124
  const session = this.deps.sessions.get(recording.sessionId);
@@ -84,7 +127,12 @@ export class RecorderStore {
84
127
  .catch(() => { });
85
128
  await session.page.waitForTimeout(150);
86
129
  this.recordings.delete(id);
87
- this.deps.sessions.setState(recording.sessionId, "idle");
130
+ // The window stays open on purpose: you often want to keep clicking around
131
+ // after stopping, and a run decides for itself whether to close it.
132
+ if (options.closeSession === true)
133
+ await this.deps.sessions.stop(recording.sessionId);
134
+ else
135
+ this.deps.sessions.setState(recording.sessionId, "idle");
88
136
  const code = generate(recording.steps, { header: "recorded by trawl-devices-agent" });
89
137
  if (options.saveAs)
90
138
  await writeScript(this.deps.workspace, options.saveAs, code);
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAoC,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AActD,mFAAmF;AACnF,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAW,EAAE,CAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAoBhH,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAEjC,gEAAgE;AAChE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,OAAO,aAAa;IAGK;IAFZ,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE3D,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD,GAAG,CAAC,EAAU;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,GAAY;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,SAAS,GAAc;YAC3B,EAAE,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3C,SAAS;YACT,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAa,EAAE,EAAE;YAClF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBACtE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;oBAC7B,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;iBAC5B,CAAC,CAAC;gBACH,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAErD,wEAAwE;QACxE,uBAAuB;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1C,IAAI,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;gBAAE,OAAO;YAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC,OAAO;gBAAE,OAAO;YAC/D,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;YACxB,yEAAyE;YACzE,uEAAuE;YACvE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU,GAAG,mBAAmB;gBAAE,OAAO;YACpE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrF,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,GAAG;YAAE,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACjC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,UAAU,CAAC,IAAU,EAAE,UAAwB,EAAE,SAAoB;QACjF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,IAAI,KAAK,KAAK,CAAC;oBAAE,SAAS;gBAC1B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,OAAO,SAAS,CAAC;oBACnD,SAAS;gBACX,CAAC;gBACD,yEAAyE;gBACzE,mEAAmE;gBACnE,kEAAkE;gBAClE,IAAI,KAAK,GAAG,qBAAqB;oBAAE,SAAS;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC3E,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QACrE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAqC;QAC1D,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAyB,CAAC;QACxF,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAE,EAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACvF,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAU,EACV,OAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC,IAAI;aACf,QAAQ,CAAC,GAAG,EAAE,CACZ,MAAsE,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAC1G;aACA,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;YACjF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjF,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI;YACJ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF"}
@@ -47,17 +47,20 @@ export const RECORDER_SOURCE = String.raw `
47
47
  return null;
48
48
  };
49
49
 
50
+ // Playwright collapses whitespace when it computes an accessible name; a raw
51
+ // textContent (icons, newlines, double spaces) would never match it.
52
+ const norm = (s) => (s || '').replace(/\s+/g, ' ').trim();
53
+
50
54
  const accessibleName = (el) => {
51
- const aria = el.getAttribute('aria-label');
52
- if (aria) return aria.trim();
53
- if (el.labels && el.labels[0]) return el.labels[0].textContent.trim();
54
- const text = (el.textContent || '').trim();
55
+ const aria = norm(el.getAttribute('aria-label'));
56
+ if (aria) return aria;
57
+ if (el.labels && el.labels[0]) return norm(el.labels[0].textContent);
58
+ const text = norm(el.textContent);
55
59
  if (text && text.length <= 60) return text;
56
- const value = el.getAttribute('value');
57
- return value ? value.trim() : '';
60
+ return norm(el.getAttribute('value'));
58
61
  };
59
62
 
60
- const labelText = (el) => (el.labels && el.labels[0] ? el.labels[0].textContent.trim() : '');
63
+ const labelText = (el) => (el.labels && el.labels[0] ? norm(el.labels[0].textContent) : '');
61
64
 
62
65
  /** Ordered candidate targets, best first. */
63
66
  const candidates = (el) => {
@@ -71,7 +74,7 @@ export const RECORDER_SOURCE = String.raw `
71
74
  if (label) out.push({ label: label });
72
75
  const placeholder = el.getAttribute('placeholder');
73
76
  if (placeholder) out.push({ placeholder: placeholder });
74
- const own = (el.textContent || '').trim();
77
+ const own = norm(el.textContent);
75
78
  if (own && own.length <= 40) out.push({ text: own });
76
79
  out.push({ css: cssPath(el) });
77
80
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"recorderInject.js","sourceRoot":"","sources":["../src/recorderInject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8JxC,CAAC"}
1
+ {"version":3,"file":"recorderInject.js","sourceRoot":"","sources":["../src/recorderInject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiKxC,CAAC"}
package/dist/routes.js CHANGED
@@ -7,6 +7,7 @@ import { AgentError } from "./types.js";
7
7
  import { RecorderStore } from "./recorder.js";
8
8
  import { performAction, snapshot } from "./control.js";
9
9
  import { readGuide } from "./guide.js";
10
+ import { listArtifacts, listRuns, readArtifact } from "./archive.js";
10
11
  export function buildRoutes(deps) {
11
12
  const workspace = deps.workspace;
12
13
  const sessions = deps.sessions ?? new SessionStore();
@@ -89,10 +90,36 @@ export function buildRoutes(deps) {
89
90
  secrets: input.secrets ?? {},
90
91
  headless: input.headless,
91
92
  trawlProxyPort: input.proxyPort,
93
+ stepDelayMs: input.stepDelayMs,
94
+ closeAfterRun: input.closeAfterRun,
92
95
  });
93
96
  },
94
97
  },
95
- { method: "GET", path: "/runs", handler: async (_r, p) => ({ runs: runner.list(Number(p.limit ?? 20)) }) },
98
+ {
99
+ method: "GET",
100
+ path: "/runs",
101
+ handler: async (_r, p) => {
102
+ // Disk first (it outlives the process), then whatever is still running.
103
+ const archived = await listRuns(workspace, {
104
+ script: p.script,
105
+ limit: Number(p.limit ?? 50),
106
+ });
107
+ const live = runner
108
+ .list(50)
109
+ .filter((r) => r.status === "running" && (!p.script || r.script === p.script));
110
+ return { runs: [...live, ...archived.filter((a) => !live.some((l) => l.runId === a.runId))] };
111
+ },
112
+ },
113
+ {
114
+ method: "GET",
115
+ path: "/runs/:id/artifacts",
116
+ handler: async (_r, p) => ({ artifacts: await listArtifacts(workspace, p.id) }),
117
+ },
118
+ {
119
+ method: "GET",
120
+ path: "/runs/:id/artifact",
121
+ handler: async (_r, p) => readArtifact(workspace, p.id, p.path),
122
+ },
96
123
  {
97
124
  method: "GET",
98
125
  path: "/runs/:id",
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -4,12 +4,14 @@ import path from "node:path";
4
4
  import { AgentError } from "./types.js";
5
5
  import { runInSandbox } from "./sandbox.js";
6
6
  import { describeTarget, isRegExp, toLocator, toMatcher } from "./targets.js";
7
- import { runDir } from "./workspace.js";
7
+ import { readScript, runDir } from "./workspace.js";
8
8
  import { TrafficBuffer, describeMatcher, parseMatcher } from "./traffic.js";
9
9
  import { interpolate } from "./interpolate.js";
10
10
  import { makeMasker } from "./mask.js";
11
+ import { captureFrames, installCursor } from "./frames.js";
11
12
  const DEFAULT_TIMEOUT = 15_000;
12
13
  const MAX_SCRIPT_MS = 10 * 60_000;
14
+ const MAX_RUN_DEPTH = 10;
13
15
  export class Runner {
14
16
  deps;
15
17
  runs = new Map();
@@ -71,8 +73,22 @@ export class Runner {
71
73
  const traceOn = input.device.trace !== "off";
72
74
  if (traceOn)
73
75
  await session.context.tracing.start({ screenshots: true, snapshots: true });
76
+ // A recorded replay is only useful if you can see where the pointer went.
77
+ let frames = null;
78
+ if (input.device.video) {
79
+ await installCursor(session.context).catch(() => { });
80
+ frames = await captureFrames(page, path.join(dir, "frames"), input.device.videoFps ?? 5).catch(() => null);
81
+ if (!frames)
82
+ report.warnings.push("frame capture failed to start");
83
+ }
74
84
  let timeout = DEFAULT_TIMEOUT;
75
85
  let baseUrl = "";
86
+ const stepDelayMs = Math.max(0, input.stepDelayMs ?? input.device.stepDelayMs ?? 0);
87
+ // Composition can overlay variables for the script it calls, so the set in
88
+ // force is per-frame rather than fixed for the whole run.
89
+ let currentEnv = { ...input.env };
90
+ const scriptStack = input.scriptPath ? [input.scriptPath] : [];
91
+ const closeAfterRun = input.closeAfterRun ?? input.device.closeAfterRun ?? true;
76
92
  let current = null;
77
93
  let currentName;
78
94
  const traffic = new TrafficBuffer();
@@ -99,11 +115,15 @@ export class Runner {
99
115
  };
100
116
  /** Wraps a step body: timing, failure classification, screenshot on failure. */
101
117
  const tracked = (action, body) => async (...rawArgs) => {
102
- const args = rawArgs.map((a) => interpolate(a, input.env));
118
+ const args = rawArgs.map((a) => interpolate(a, currentEnv));
103
119
  const step = beginStep(action, args);
104
120
  try {
105
121
  const result = await body(...args);
106
122
  endStep(step);
123
+ // A deliberate pause makes the replay watchable; it is not a wait —
124
+ // every step already auto-waits for its target.
125
+ if (stepDelayMs)
126
+ await page.waitForTimeout(stepDelayMs);
107
127
  return result;
108
128
  }
109
129
  catch (err) {
@@ -129,7 +149,12 @@ export class Runner {
129
149
  throw new AgentError("assertion", message, { expected, actual });
130
150
  };
131
151
  const scope = {
132
- env: input.env,
152
+ env: new Proxy({}, {
153
+ get: (_t, key) => currentEnv[key],
154
+ has: (_t, key) => key in currentEnv,
155
+ ownKeys: () => Object.keys(currentEnv),
156
+ getOwnPropertyDescriptor: () => ({ enumerable: true, configurable: true }),
157
+ }),
133
158
  secret: (name) => {
134
159
  const value = input.secrets[name];
135
160
  if (value === undefined)
@@ -294,6 +319,33 @@ export class Runner {
294
319
  await page.screenshot({ path: path.join(dir, file) });
295
320
  }),
296
321
  note: tracked("note", async () => { }),
322
+ /** Compose scenarios: record login once, then call it from the rest. */
323
+ run: async (relPath, overlay) => {
324
+ const step = beginStep("run", overlay ? [relPath, overlay] : [relPath]);
325
+ endStep(step);
326
+ if (scriptStack.includes(relPath)) {
327
+ throw new AgentError("script", `run cycle: ${[...scriptStack, relPath].join(" → ")}`);
328
+ }
329
+ if (scriptStack.length >= MAX_RUN_DEPTH) {
330
+ throw new AgentError("script", `run nested deeper than ${MAX_RUN_DEPTH}`);
331
+ }
332
+ const code = await readScript(this.deps.workspace, relPath).catch(() => {
333
+ throw new AgentError("script", `no such script: ${relPath}`);
334
+ });
335
+ const previousEnv = currentEnv;
336
+ const previousName = currentName;
337
+ currentEnv = overlay ? { ...currentEnv, ...overlay } : currentEnv;
338
+ currentName = relPath;
339
+ scriptStack.push(relPath);
340
+ try {
341
+ await runInSandbox(code, scope, MAX_SCRIPT_MS);
342
+ }
343
+ finally {
344
+ scriptStack.pop();
345
+ currentEnv = previousEnv;
346
+ currentName = previousName;
347
+ }
348
+ },
297
349
  step: async (name, fn) => {
298
350
  const step = beginStep("step", [name]);
299
351
  endStep(step);
@@ -340,6 +392,11 @@ export class Runner {
340
392
  if (step)
341
393
  step.flows.push({ method: observed.method, url: observed.url, status: observed.status });
342
394
  }
395
+ if (frames) {
396
+ const { count, fps } = await frames.stop();
397
+ if (count > 0)
398
+ report.artifacts.frames = { dir: "frames", count, fps };
399
+ }
343
400
  if (traceOn) {
344
401
  const keep = input.device.trace === "always" || finalStatus !== "passed";
345
402
  const tracePath = path.join(dir, "trace.zip");
@@ -348,10 +405,13 @@ export class Runner {
348
405
  report.artifacts.trace = "trace.zip";
349
406
  }
350
407
  report.durationMs = Date.now() - report.startedAt;
351
- if (ownSession)
408
+ if (ownSession && closeAfterRun) {
352
409
  await this.deps.sessions.stop(session.sessionId);
353
- else
410
+ }
411
+ else {
354
412
  this.deps.sessions.setState(session.sessionId, "idle");
413
+ report.sessionId = session.sessionId; // the window is still on screen
414
+ }
355
415
  const mask = makeMasker(input.secrets);
356
416
  const finished = mask({ ...report, status: finalStatus });
357
417
  await fs.writeFile(path.join(dir, "report.json"), JSON.stringify(finished, null, 2), "utf8").catch(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/sessions.js CHANGED
@@ -33,8 +33,6 @@ export class SessionStore {
33
33
  `Install it with: pnpm exec playwright install ${device.browser}`);
34
34
  }
35
35
  const contextOptions = contextOptionsFor(device, options.trawlProxyPort ?? 8080);
36
- if (device.video && options.videoDir)
37
- contextOptions.recordVideo = { dir: options.videoDir };
38
36
  const context = await browser.newContext(contextOptions);
39
37
  const page = await context.newPage();
40
38
  const live = {
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
package/dist/steps.js CHANGED
@@ -16,6 +16,8 @@ export const STEP_NAMES = [
16
16
  "expectRequest", "expectResponse", "expectNoRequest",
17
17
  // reads
18
18
  "getText", "getValue", "getAttr", "getUrl", "count",
19
+ // composition
20
+ "run",
19
21
  // misc
20
22
  "step", "screenshot", "note",
21
23
  ];
package/dist/steps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,QAAQ,EAAE,KAAK;IACf,aAAa;IACb,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;IACnC,UAAU;IACV,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;IAChE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAC/C,QAAQ;IACR,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO;IACnD,gBAAgB;IAChB,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa;IAC5D,WAAW,EAAE,aAAa,EAAE,YAAY;IACxC,kBAAkB;IAClB,eAAe,EAAE,gBAAgB,EAAE,iBAAiB;IACpD,QAAQ;IACR,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;IACnD,OAAO;IACP,MAAM,EAAE,YAAY,EAAE,MAAM;CACpB,CAAC;AAIX,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;IAC3E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;CACrD,CAAC"}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,QAAQ,EAAE,KAAK;IACf,aAAa;IACb,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;IACnC,UAAU;IACV,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;IAChE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAC/C,QAAQ;IACR,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO;IACnD,gBAAgB;IAChB,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa;IAC5D,WAAW,EAAE,aAAa,EAAE,YAAY;IACxC,kBAAkB;IAClB,eAAe,EAAE,gBAAgB,EAAE,iBAAiB;IACpD,QAAQ;IACR,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;IACnD,cAAc;IACd,KAAK;IACL,OAAO;IACP,MAAM,EAAE,YAAY,EAAE,MAAM;CACpB,CAAC;AAIX,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;IAC3E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;CACrD,CAAC"}
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Package version, reported by /health. */
2
- export const AGENT_VERSION = "0.3.0";
2
+ export const AGENT_VERSION = "0.6.0";
3
3
  /** Bumped whenever STEP_NAMES changes, so the plugin can demand an update. */
4
- export const DSL_VERSION = 1;
4
+ export const DSL_VERSION = 2;
5
5
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trawl-devices-agent",
3
- "version": "0.3.0",
3
+ "version": "0.6.0",
4
4
  "description": "Local sidecar for the Trawl devices plugin \u2014 records and replays browser scenarios with Playwright.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -42,6 +42,7 @@ click({ role: 'row', name: 'Заказ 42', within: { testId: 'orders' } })
42
42
  `expectUrl`, `expectCount`, `expectAttr`
43
43
  - HTTP assertions: `expectRequest`, `expectResponse`, `expectNoRequest`
44
44
  - Reads: `getText`, `getValue`, `getAttr`, `getUrl`, `count`
45
+ - Composition: `run('scripts/login.js')`, `run('scripts/login.js', { USER: 'someone@example.com' })`
45
46
  - Misc: `step(name, fn)`, `screenshot(name)`, `note(text)`
46
47
 
47
48
  ## Rules
@@ -49,7 +50,8 @@ click({ role: 'row', name: 'Заказ 42', within: { testId: 'orders' } })
49
50
  1. **No `await`.** The runner inserts it. Reads return real values:
50
51
  `const title = getText({ css: 'h1' })`.
51
52
  2. **`{{VAR}}`** comes from the Trawl project env; an unknown name fails the run.
52
- **`secret('NAME')`** reads the Keychain — never paste a literal password.
53
+ `env.VAR` reads the same values in code. **`secret('NAME')`** reads the
54
+ Keychain — never paste a literal password.
53
55
  3. **Prefer assertions over `sleep`.** Every step already auto-waits.
54
56
  4. **Group with `step('name', () => { … })`** — the report shows the group name.
55
57
  5. **HTTP matchers are a method plus a URL substring** (`'POST /api/login'`), or
@@ -57,3 +59,13 @@ click({ role: 'row', name: 'Заказ 42', within: { testId: 'orders' } })
57
59
  first matching response not yet consumed, waiting up to the timeout.
58
60
  6. **A failing step ends the run.** Steps after it never execute, so they do not
59
61
  appear in the report.
62
+ 7. **Compose instead of repeating.** Record login once and call it:
63
+
64
+ ```js
65
+ run('scripts/login.js')
66
+ click({ role: 'link', name: 'Search' })
67
+ ```
68
+
69
+ The called script runs in the same browser, its steps appear in the report
70
+ under its path, and a second argument overlays variables for that call only
71
+ (`run('scripts/login.js', { USER: '{{ADMIN}}' })`). Cycles are refused.