waygraph 0.15.44 → 0.15.45
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/analysis/coverage-gap.d.ts +1 -1
- package/dist/analysis/coverage-gap.js +1 -1
- package/dist/analysis/graph.js +1 -1
- package/dist/auto-session/helpers.d.ts +2 -2
- package/dist/auto-session/session.js +2 -2
- package/dist/cli/usage.d.ts +1 -1
- package/dist/commands/session.js +5 -5
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/session/auto-explore-run.d.ts +37 -0
- package/dist/session/auto-explore-run.js +670 -0
- package/dist/session/auto-explore.d.ts +57 -0
- package/dist/session/auto-explore.js +376 -0
- package/dist/session/auto-session-ipc.d.ts +150 -0
- package/dist/session/auto-session-ipc.js +499 -0
- package/dist/session/block-inject.d.ts +21 -0
- package/dist/session/block-inject.js +97 -0
- package/dist/session/browser.d.ts +15 -0
- package/dist/session/browser.js +29 -0
- package/dist/session/overlay-beacon.d.ts +44 -0
- package/dist/session/overlay-beacon.js +85 -0
- package/dist/session/pilot.d.ts +54 -0
- package/dist/session/pilot.js +80 -0
- package/dist/traverse/run.js +2 -2
- package/examples/saucedemo/.waygraph-auto/00b0c55c.log +22 -0
- package/examples/saucedemo/.waygraph-auto/00e5d037.log +5 -0
- package/examples/saucedemo/.waygraph-auto/015be8f6.log +6 -0
- package/examples/saucedemo/.waygraph-auto/026e188e.log +0 -0
- package/examples/saucedemo/.waygraph-auto/07845ed1.log +0 -0
- package/examples/saucedemo/.waygraph-auto/0c19e232.log +5 -0
- package/examples/saucedemo/.waygraph-auto/1122c13c.log +0 -0
- package/examples/saucedemo/.waygraph-auto/2b9b56fc.log +20 -0
- package/examples/saucedemo/.waygraph-auto/30a5c848.log +20 -0
- package/examples/saucedemo/.waygraph-auto/33a50dc0.log +0 -0
- package/examples/saucedemo/.waygraph-auto/3a208bb8.log +20 -0
- package/examples/saucedemo/.waygraph-auto/3e3c0f3b.log +0 -0
- package/examples/saucedemo/.waygraph-auto/756fd326.log +20 -0
- package/examples/saucedemo/.waygraph-auto/78043767.log +20 -0
- package/examples/saucedemo/.waygraph-auto/976394cd.log +20 -0
- package/examples/saucedemo/.waygraph-auto/9d827954.log +20 -0
- package/examples/saucedemo/.waygraph-auto/a4f8d355.log +20 -0
- package/examples/saucedemo/.waygraph-auto/af2fae12.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b0752c49.log +0 -0
- package/examples/saucedemo/.waygraph-auto/b14811d7.log +6 -0
- package/examples/saucedemo/.waygraph-auto/c9d76e32.log +0 -0
- package/examples/saucedemo/.waygraph-auto/cc989184.log +20 -0
- package/examples/saucedemo/.waygraph-auto/e5127c03.log +22 -0
- package/package.json +1 -1
- package/templates/agents/waygraph-author.agent.md +24 -51
- package/templates/agents/waygraph-planner.agent.md +12 -5
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blind-agent / Playwright checks for waygraph overlay modals.
|
|
3
|
+
*
|
|
4
|
+
* Every live modal root must carry:
|
|
5
|
+
* data-wg-ui="1"
|
|
6
|
+
* data-wg-modal="panel|banner|auto-panel"
|
|
7
|
+
* data-wg-ready="1" when painted and readable
|
|
8
|
+
*
|
|
9
|
+
* Agents: do not claim the stepper works unless
|
|
10
|
+
* `assertWgOverlayReady(page)` (or WAYGRAPH_PROVE_EXIT=1) passes.
|
|
11
|
+
*/
|
|
12
|
+
import type { Page } from "@playwright/test";
|
|
13
|
+
export declare const WG_UI_SEL = "[data-wg-ui=\"1\"]";
|
|
14
|
+
export declare const WG_READY_PANEL_SEL = "[data-wg-modal=\"panel\"][data-wg-ready=\"1\"]";
|
|
15
|
+
export declare const WG_READY_AUTO_SEL = "[data-wg-modal=\"auto-panel\"][data-wg-ready=\"1\"]";
|
|
16
|
+
export declare const WG_READY_BANNER_SEL = "[data-wg-modal=\"banner\"][data-wg-ready=\"1\"]";
|
|
17
|
+
export type WgModalKind = "panel" | "banner" | "auto-panel";
|
|
18
|
+
export type WgBeaconRow = {
|
|
19
|
+
id: string | null;
|
|
20
|
+
modal: string | null;
|
|
21
|
+
ready: boolean;
|
|
22
|
+
phase: string | null;
|
|
23
|
+
step: string | null;
|
|
24
|
+
block: string | null;
|
|
25
|
+
collapsed: boolean;
|
|
26
|
+
opacity: string;
|
|
27
|
+
textLen: number;
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
visible: boolean;
|
|
31
|
+
};
|
|
32
|
+
/** Browser-side beacon reader (also installed as window.__wgOverlayBeacon). */
|
|
33
|
+
export declare function readWgOverlayBeaconInPage(): WgBeaconRow[];
|
|
34
|
+
export declare function readWgOverlayBeacon(page: Page): Promise<WgBeaconRow[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Hard gate: a blank / missing / opacity-0 modal fails.
|
|
37
|
+
* Use after demo/auto paints its first overlay.
|
|
38
|
+
*/
|
|
39
|
+
export declare function assertWgOverlayReady(page: Page, opts?: {
|
|
40
|
+
modal?: WgModalKind;
|
|
41
|
+
minTextLen?: number;
|
|
42
|
+
/** When true, collapsed mini chrome is allowed (still needs visible box + text). */
|
|
43
|
+
allowCollapsed?: boolean;
|
|
44
|
+
}): Promise<WgBeaconRow>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blind-agent / Playwright checks for waygraph overlay modals.
|
|
3
|
+
*
|
|
4
|
+
* Every live modal root must carry:
|
|
5
|
+
* data-wg-ui="1"
|
|
6
|
+
* data-wg-modal="panel|banner|auto-panel"
|
|
7
|
+
* data-wg-ready="1" when painted and readable
|
|
8
|
+
*
|
|
9
|
+
* Agents: do not claim the stepper works unless
|
|
10
|
+
* `assertWgOverlayReady(page)` (or WAYGRAPH_PROVE_EXIT=1) passes.
|
|
11
|
+
*/
|
|
12
|
+
export const WG_UI_SEL = '[data-wg-ui="1"]';
|
|
13
|
+
export const WG_READY_PANEL_SEL = '[data-wg-modal="panel"][data-wg-ready="1"]';
|
|
14
|
+
export const WG_READY_AUTO_SEL = '[data-wg-modal="auto-panel"][data-wg-ready="1"]';
|
|
15
|
+
export const WG_READY_BANNER_SEL = '[data-wg-modal="banner"][data-wg-ready="1"]';
|
|
16
|
+
/** Browser-side beacon reader (also installed as window.__wgOverlayBeacon). */
|
|
17
|
+
export function readWgOverlayBeaconInPage() {
|
|
18
|
+
const w = globalThis;
|
|
19
|
+
if (typeof w.__wgOverlayBeacon === "function")
|
|
20
|
+
return w.__wgOverlayBeacon();
|
|
21
|
+
return Array.from(document.querySelectorAll(WG_UI_SEL)).map((el) => {
|
|
22
|
+
const r = el.getBoundingClientRect();
|
|
23
|
+
const st = getComputedStyle(el);
|
|
24
|
+
return {
|
|
25
|
+
id: el.id || null,
|
|
26
|
+
modal: el.getAttribute("data-wg-modal"),
|
|
27
|
+
ready: el.getAttribute("data-wg-ready") === "1",
|
|
28
|
+
phase: el.getAttribute("data-wg-phase"),
|
|
29
|
+
step: el.getAttribute("data-wg-step"),
|
|
30
|
+
block: el.getAttribute("data-wg-block"),
|
|
31
|
+
collapsed: el.getAttribute("data-wg-collapsed") === "1" || el.classList.contains("wg-collapsed"),
|
|
32
|
+
opacity: st.opacity,
|
|
33
|
+
textLen: (el.textContent || "").trim().length,
|
|
34
|
+
w: Math.round(r.width),
|
|
35
|
+
h: Math.round(r.height),
|
|
36
|
+
visible: r.width > 0 && r.height > 0 && Number(st.opacity) > 0.05,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function readWgOverlayBeacon(page) {
|
|
41
|
+
return page.evaluate(() => {
|
|
42
|
+
const w = window;
|
|
43
|
+
if (typeof w.__wgOverlayBeacon === "function") {
|
|
44
|
+
return w.__wgOverlayBeacon();
|
|
45
|
+
}
|
|
46
|
+
return Array.from(document.querySelectorAll('[data-wg-ui="1"]')).map((el) => {
|
|
47
|
+
const r = el.getBoundingClientRect();
|
|
48
|
+
const st = getComputedStyle(el);
|
|
49
|
+
return {
|
|
50
|
+
id: el.id || null,
|
|
51
|
+
modal: el.getAttribute("data-wg-modal"),
|
|
52
|
+
ready: el.getAttribute("data-wg-ready") === "1",
|
|
53
|
+
phase: el.getAttribute("data-wg-phase"),
|
|
54
|
+
step: el.getAttribute("data-wg-step"),
|
|
55
|
+
block: el.getAttribute("data-wg-block"),
|
|
56
|
+
collapsed: el.getAttribute("data-wg-collapsed") === "1" || el.classList.contains("wg-collapsed"),
|
|
57
|
+
opacity: st.opacity,
|
|
58
|
+
textLen: (el.textContent || "").trim().length,
|
|
59
|
+
w: Math.round(r.width),
|
|
60
|
+
h: Math.round(r.height),
|
|
61
|
+
visible: r.width > 0 && r.height > 0 && Number(st.opacity) > 0.05,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hard gate: a blank / missing / opacity-0 modal fails.
|
|
68
|
+
* Use after demo/auto paints its first overlay.
|
|
69
|
+
*/
|
|
70
|
+
export async function assertWgOverlayReady(page, opts) {
|
|
71
|
+
const modal = opts?.modal ?? "panel";
|
|
72
|
+
const minText = opts?.minTextLen ?? 12;
|
|
73
|
+
const rows = await readWgOverlayBeacon(page);
|
|
74
|
+
const hit = rows.find((r) => r.modal === modal &&
|
|
75
|
+
r.ready &&
|
|
76
|
+
r.visible &&
|
|
77
|
+
r.textLen >= minText &&
|
|
78
|
+
(opts?.allowCollapsed || !r.collapsed || r.textLen >= minText));
|
|
79
|
+
if (!hit) {
|
|
80
|
+
throw new Error(`waygraph overlay NOT ready (modal=${modal}, minTextLen=${minText}). ` +
|
|
81
|
+
`beacons=${JSON.stringify(rows)}. ` +
|
|
82
|
+
`Do not claim stepper/modal works.`);
|
|
83
|
+
}
|
|
84
|
+
return hit;
|
|
85
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waygraph Pilot: the one bootstrap call an agent needs to start driving a
|
|
3
|
+
* real, persistent, inspectable browser session toward a natural-language
|
|
4
|
+
* goal it plans and executes itself.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately NOT a resolver that maps one ask to one Block
|
|
7
|
+
* (`resolveAsk`/`pilotNarrate`/`pilotAct`, the v1 shape this replaced - see
|
|
8
|
+
* git tag `waygraph-pilot-v1-logs-prettified` for that history). Real
|
|
9
|
+
* requests are multi-step ("log in and buy the backpack for me", "make a
|
|
10
|
+
* signature draft request") and need an agent that plans a whole sequence
|
|
11
|
+
* against the graph, not a single best-matching edge. `pilotStart` does not
|
|
12
|
+
* plan, resolve, narrate, or act on anything - it only combines two
|
|
13
|
+
* already-proven, separately-existing primitives into one payload:
|
|
14
|
+
*
|
|
15
|
+
* - `spawnDetachedSession` (same mechanism as `auto --cli --detach`) - a
|
|
16
|
+
* real, persistent, visible-if-headful Playwright session an agent can
|
|
17
|
+
* keep driving across many calls, not a fresh session per request.
|
|
18
|
+
* - `discoverGraph` (same mechanism as `waygraph graph`) - the WHOLE
|
|
19
|
+
* project's Checkpoint/edge/description graph, not just what's reachable
|
|
20
|
+
* from the session's current position, because planning a multi-step
|
|
21
|
+
* route needs to see steps ahead, not just the next one.
|
|
22
|
+
*
|
|
23
|
+
* Driving the session afterward - `auto send <id> "<pick>"`, `auto status
|
|
24
|
+
* <id>`, `auto dom <id>`, `auto trace <id>` - is left entirely to whatever
|
|
25
|
+
* agent is holding it. All four already existed before this file did; see
|
|
26
|
+
* openspec/changes/waygraph-pilot/design.md for the worked example (a real
|
|
27
|
+
* login + add-to-cart + checkout run against examples/saucedemo, driven by
|
|
28
|
+
* hand-picking indices from each status response) that proved this needs no
|
|
29
|
+
* new execution primitive.
|
|
30
|
+
*/
|
|
31
|
+
import { type WaygraphGraph } from "../analysis/graph.js";
|
|
32
|
+
import { listBrowserSessions, type SessionMeta } from "./auto-session-ipc.js";
|
|
33
|
+
import { type BrowserStartInit } from "./browser.js";
|
|
34
|
+
import type { SessionSnapshot } from "../auto-session.js";
|
|
35
|
+
export interface PilotStartResult {
|
|
36
|
+
sessionId: string;
|
|
37
|
+
socketPath: string;
|
|
38
|
+
headless: boolean;
|
|
39
|
+
/** The whole project's Block graph - every Checkpoint/edge/description, not just what's reachable right now. */
|
|
40
|
+
graph: WaygraphGraph;
|
|
41
|
+
/** The session's starting position, or `null` if the very first `status` read failed. */
|
|
42
|
+
snapshot: SessionSnapshot | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Starts a detached session and reads back its own graph + starting
|
|
46
|
+
* snapshot in one call, so an agent bootstraps with everything it needs
|
|
47
|
+
* (a live session it can keep driving, and the full map of what exists) in
|
|
48
|
+
* one round trip instead of separately knowing to chain `auto --cli
|
|
49
|
+
* --detach` and `waygraph graph` itself.
|
|
50
|
+
*/
|
|
51
|
+
export declare function pilotStart(init: BrowserStartInit): Promise<PilotStartResult>;
|
|
52
|
+
/** Reattach to an existing browser session — does not spawn a new browser. */
|
|
53
|
+
export declare function pilotAttach(projectDir: string, sessionId: string, inject?: string[]): Promise<PilotStartResult>;
|
|
54
|
+
export { listBrowserSessions, type SessionMeta };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waygraph Pilot: the one bootstrap call an agent needs to start driving a
|
|
3
|
+
* real, persistent, inspectable browser session toward a natural-language
|
|
4
|
+
* goal it plans and executes itself.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately NOT a resolver that maps one ask to one Block
|
|
7
|
+
* (`resolveAsk`/`pilotNarrate`/`pilotAct`, the v1 shape this replaced - see
|
|
8
|
+
* git tag `waygraph-pilot-v1-logs-prettified` for that history). Real
|
|
9
|
+
* requests are multi-step ("log in and buy the backpack for me", "make a
|
|
10
|
+
* signature draft request") and need an agent that plans a whole sequence
|
|
11
|
+
* against the graph, not a single best-matching edge. `pilotStart` does not
|
|
12
|
+
* plan, resolve, narrate, or act on anything - it only combines two
|
|
13
|
+
* already-proven, separately-existing primitives into one payload:
|
|
14
|
+
*
|
|
15
|
+
* - `spawnDetachedSession` (same mechanism as `auto --cli --detach`) - a
|
|
16
|
+
* real, persistent, visible-if-headful Playwright session an agent can
|
|
17
|
+
* keep driving across many calls, not a fresh session per request.
|
|
18
|
+
* - `discoverGraph` (same mechanism as `waygraph graph`) - the WHOLE
|
|
19
|
+
* project's Checkpoint/edge/description graph, not just what's reachable
|
|
20
|
+
* from the session's current position, because planning a multi-step
|
|
21
|
+
* route needs to see steps ahead, not just the next one.
|
|
22
|
+
*
|
|
23
|
+
* Driving the session afterward - `auto send <id> "<pick>"`, `auto status
|
|
24
|
+
* <id>`, `auto dom <id>`, `auto trace <id>` - is left entirely to whatever
|
|
25
|
+
* agent is holding it. All four already existed before this file did; see
|
|
26
|
+
* openspec/changes/waygraph-pilot/design.md for the worked example (a real
|
|
27
|
+
* login + add-to-cart + checkout run against examples/saucedemo, driven by
|
|
28
|
+
* hand-picking indices from each status response) that proved this needs no
|
|
29
|
+
* new execution primitive.
|
|
30
|
+
*/
|
|
31
|
+
import { discoverGraph } from "../analysis/graph.js";
|
|
32
|
+
import { requestSession, listBrowserSessions, resolveSessionMeta, } from "./auto-session-ipc.js";
|
|
33
|
+
import { browserStart } from "./browser.js";
|
|
34
|
+
/**
|
|
35
|
+
* Starts a detached session and reads back its own graph + starting
|
|
36
|
+
* snapshot in one call, so an agent bootstraps with everything it needs
|
|
37
|
+
* (a live session it can keep driving, and the full map of what exists) in
|
|
38
|
+
* one round trip instead of separately knowing to chain `auto --cli
|
|
39
|
+
* --detach` and `waygraph graph` itself.
|
|
40
|
+
*/
|
|
41
|
+
export async function pilotStart(init) {
|
|
42
|
+
const { resolveInjectRoots } = await import("./block-inject.js");
|
|
43
|
+
const exploreInject = init.inject ??
|
|
44
|
+
(init.injectTokens?.length ? resolveInjectRoots(init.injectTokens, init.projectDir) : undefined);
|
|
45
|
+
const started = await browserStart({
|
|
46
|
+
...init,
|
|
47
|
+
...(exploreInject?.length ? { inject: exploreInject } : {}),
|
|
48
|
+
// Pilot navigates to baseURL on start (unlike `browser`, which defaults to about:blank).
|
|
49
|
+
skipInitialNavigation: init.skipInitialNavigation ?? false,
|
|
50
|
+
});
|
|
51
|
+
const graph = await discoverGraph(init.projectDir, exploreInject?.length ? { inject: exploreInject } : undefined);
|
|
52
|
+
const status = await requestSession(init.projectDir, started.sessionId, { op: "status" });
|
|
53
|
+
return {
|
|
54
|
+
sessionId: started.sessionId,
|
|
55
|
+
socketPath: started.socketPath,
|
|
56
|
+
headless: started.headless,
|
|
57
|
+
graph,
|
|
58
|
+
snapshot: status.ok ? status.snapshot : null,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** Reattach to an existing browser session — does not spawn a new browser. */
|
|
62
|
+
export async function pilotAttach(projectDir, sessionId, inject) {
|
|
63
|
+
const meta = resolveSessionMeta(sessionId, projectDir);
|
|
64
|
+
if (!meta) {
|
|
65
|
+
throw new Error(`waygraph pilot attach: no such session "${sessionId}" — run \`waygraph pilot sessions\` from the project dir`);
|
|
66
|
+
}
|
|
67
|
+
const graph = await discoverGraph(meta.projectDir, inject?.length ? { inject } : undefined);
|
|
68
|
+
const status = await requestSession(meta.projectDir, sessionId, { op: "status" });
|
|
69
|
+
if (!status.ok) {
|
|
70
|
+
throw new Error(`waygraph pilot attach: session "${sessionId}" not reachable (${status.error})`);
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
sessionId: meta.sessionId,
|
|
74
|
+
socketPath: meta.socketPath,
|
|
75
|
+
headless: meta.headless,
|
|
76
|
+
graph,
|
|
77
|
+
snapshot: status.snapshot,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export { listBrowserSessions };
|
package/dist/traverse/run.js
CHANGED
|
@@ -6,8 +6,8 @@ import { readFileSync, existsSync } from "node:fs";
|
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
import { Engine, start, end, locate } from "../engine.js";
|
|
8
8
|
import { MemPage } from "../mem-page.js";
|
|
9
|
-
import { buildExploreContext, buildExploreMenu, } from "../auto-explore.js";
|
|
10
|
-
import { defaultMemValueForKey } from "../auto-explore-run.js";
|
|
9
|
+
import { buildExploreContext, buildExploreMenu, } from "../session/auto-explore.js";
|
|
10
|
+
import { defaultMemValueForKey } from "../session/auto-explore-run.js";
|
|
11
11
|
import { EdgeLeaseCoordinator } from "./lease.js";
|
|
12
12
|
import { buildCoverageReport, collectGraphEdgeKeys, defaultCoverageOutPath, formatCoverageLine, writeCoverageReport, } from "./coverage.js";
|
|
13
13
|
function resolveBaseUrl(projectDir) {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[13:03:06.191] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:03:06.193] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:03:06.193] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:03:06.193] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:03:06.193] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:03:07.307] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
7
|
+
[13:03:10.364] waygraph pilot: stub.before ring #password tone=planned label="Password"
|
|
8
|
+
[13:03:10.548] waygraph pilot: stub.after ctx.todos n=6 index=2
|
|
9
|
+
[13:03:13.519] waygraph pilot: stub.before ring #login-button tone=warning label="Login"
|
|
10
|
+
[13:03:13.719] waygraph pilot: stub.after ctx.title("Inventory · landscape")
|
|
11
|
+
[13:03:13.719] waygraph pilot: stub.after ctx.todos n=6 index=3
|
|
12
|
+
[13:03:13.719] waygraph pilot: stub.after ctx.device(mobile)
|
|
13
|
+
[13:03:13.719] waygraph pilot: stub.after ring .inventory_list tone=success label="Product shelf"
|
|
14
|
+
[13:03:19.068] waygraph pilot: stub.before ctx.title("Pick a product · tablet")
|
|
15
|
+
[13:03:19.068] waygraph pilot: stub.before ctx.todos n=6 index=3
|
|
16
|
+
[13:03:19.068] waygraph pilot: stub.before ctx.device(tablet)
|
|
17
|
+
[13:03:19.068] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
18
|
+
[13:03:19.068] waygraph pilot: stub.before ring div.inventory_item:has(button[data-test="add-to-cart-sauce-labs-backpack"], button[data-test="remove-sauce-labs-backpack"]) .inventory_item_name tone=info label="Sauce Labs Backpack"
|
|
19
|
+
[13:03:19.068] waygraph pilot: stub.before ring [data-test="add-to-cart-sauce-labs-backpack"] tone=success label="Add to cart"
|
|
20
|
+
[13:03:20.353] waygraph pilot: stub.after ctx.title("In the cart")
|
|
21
|
+
[13:03:20.353] waygraph pilot: stub.after ctx.todos n=6 index=4
|
|
22
|
+
[13:03:20.353] waygraph pilot: stub.after ring .shopping_cart_badge tone=success label="Cart badge"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
[13:02:45.353] waygraph pilot: highlight ctx.todos n=3 index=0
|
|
2
|
+
[13:02:45.353] waygraph pilot: highlight ring #user-name tone=planned label="Username"
|
|
3
|
+
[13:02:45.354] waygraph pilot: highlight ring #password tone=info label="Password"
|
|
4
|
+
[13:02:47.600] waygraph pilot: highlight ring #no-such-element-waygraph tone=danger label="Gone"
|
|
5
|
+
[13:02:50.359] waygraph pilot: highlight ring #login-button tone=success label="Login"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
[13:03:12.156] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:03:12.157] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:03:12.157] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:03:12.159] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:03:12.159] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:03:13.508] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
[13:04:34.053] waygraph pilot: highlight ctx.todos n=3 index=0
|
|
2
|
+
[13:04:34.053] waygraph pilot: highlight ring #user-name tone=planned label="Username"
|
|
3
|
+
[13:04:34.054] waygraph pilot: highlight ring #password tone=info label="Password"
|
|
4
|
+
[13:04:37.020] waygraph pilot: highlight ring #no-such-element-waygraph tone=danger label="Gone"
|
|
5
|
+
[13:04:39.671] waygraph pilot: highlight ring #login-button tone=success label="Login"
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/examples/saucedemo/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932)
|
|
13
|
+
at resolveDirectorySync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238)
|
|
14
|
+
at resolveTsPathsSync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445)
|
|
15
|
+
at resolve (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991) {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932[90m)[39m
|
|
13
|
+
at resolveDirectorySync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238[90m)[39m
|
|
14
|
+
at resolveTsPathsSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445[90m)[39m
|
|
15
|
+
at resolve [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991[90m)[39m {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932[90m)[39m
|
|
13
|
+
at resolveDirectorySync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238[90m)[39m
|
|
14
|
+
at resolveTsPathsSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445[90m)[39m
|
|
15
|
+
at resolve [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991[90m)[39m {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[13:04:45.981] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:04:45.982] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:04:45.982] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:04:45.982] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:04:45.982] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:04:47.594] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
7
|
+
[13:04:49.088] waygraph pilot: stub.before ring #password tone=planned label="Password"
|
|
8
|
+
[13:04:49.276] waygraph pilot: stub.after ctx.todos n=6 index=2
|
|
9
|
+
[13:04:51.102] waygraph pilot: stub.before ring #login-button tone=warning label="Login"
|
|
10
|
+
[13:04:51.352] waygraph pilot: stub.after ctx.title("Inventory · landscape")
|
|
11
|
+
[13:04:51.353] waygraph pilot: stub.after ctx.todos n=6 index=3
|
|
12
|
+
[13:04:51.353] waygraph pilot: stub.after ctx.device(mobile)
|
|
13
|
+
[13:04:51.354] waygraph pilot: stub.after ring .inventory_list tone=success label="Product shelf"
|
|
14
|
+
[13:04:55.294] waygraph pilot: stub.before ctx.title("Open cart · landscape")
|
|
15
|
+
[13:04:55.294] waygraph pilot: stub.before ctx.todos n=6 index=5
|
|
16
|
+
[13:04:55.294] waygraph pilot: stub.before ctx.device(mobile)
|
|
17
|
+
[13:04:55.294] waygraph pilot: stub.before ctx.zoom(1.4)
|
|
18
|
+
[13:04:55.294] waygraph pilot: stub.before ring .shopping_cart_link tone=planned label="Cart"
|
|
19
|
+
[13:04:55.768] waygraph pilot: stub.after ctx.title("Your cart · desktop")
|
|
20
|
+
[13:04:55.768] waygraph pilot: stub.after ring .cart_item tone=success label="Cart items"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/examples/saucedemo/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932)
|
|
13
|
+
at resolveDirectorySync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238)
|
|
14
|
+
at resolveTsPathsSync (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445)
|
|
15
|
+
at resolve (file:///home/dan/Desktop/Projects/waygraph/node_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991) {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[13:02:58.767] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:02:58.768] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:02:58.768] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:02:58.768] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:02:58.768] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:02:59.901] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
7
|
+
[13:03:01.746] waygraph pilot: stub.before ring #password tone=planned label="Password"
|
|
8
|
+
[13:03:01.917] waygraph pilot: stub.after ctx.todos n=6 index=2
|
|
9
|
+
[13:03:03.342] waygraph pilot: stub.before ring #login-button tone=warning label="Login"
|
|
10
|
+
[13:03:03.706] waygraph pilot: stub.after ctx.title("Inventory · landscape")
|
|
11
|
+
[13:03:03.706] waygraph pilot: stub.after ctx.todos n=6 index=3
|
|
12
|
+
[13:03:03.706] waygraph pilot: stub.after ctx.device(mobile)
|
|
13
|
+
[13:03:03.706] waygraph pilot: stub.after ring .inventory_list tone=success label="Product shelf"
|
|
14
|
+
[13:03:07.006] waygraph pilot: stub.before ctx.title("Open cart · landscape")
|
|
15
|
+
[13:03:07.006] waygraph pilot: stub.before ctx.todos n=6 index=5
|
|
16
|
+
[13:03:07.006] waygraph pilot: stub.before ctx.device(mobile)
|
|
17
|
+
[13:03:07.006] waygraph pilot: stub.before ctx.zoom(1.4)
|
|
18
|
+
[13:03:07.007] waygraph pilot: stub.before ring .shopping_cart_link tone=planned label="Cart"
|
|
19
|
+
[13:03:07.381] waygraph pilot: stub.after ctx.title("Your cart · desktop")
|
|
20
|
+
[13:03:07.381] waygraph pilot: stub.after ring .cart_item tone=success label="Cart items"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932[90m)[39m
|
|
13
|
+
at resolveDirectorySync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238[90m)[39m
|
|
14
|
+
at resolveTsPathsSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445[90m)[39m
|
|
15
|
+
at resolve [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991[90m)[39m {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932[90m)[39m
|
|
13
|
+
at resolveDirectorySync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238[90m)[39m
|
|
14
|
+
at resolveTsPathsSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445[90m)[39m
|
|
15
|
+
at resolve [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991[90m)[39m {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
[13:05:33.005] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:05:33.006] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:05:33.006] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:05:33.006] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:05:33.006] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:05:34.576] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
node:internal/modules/esm/resolve:272
|
|
2
|
+
throw new ERR_MODULE_NOT_FOUND(
|
|
3
|
+
^
|
|
4
|
+
|
|
5
|
+
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/dan/Desktop/Projects/waygraph/dist/dist/cli.js' imported from /home/dan/Desktop/Projects/waygraph/
|
|
6
|
+
[90m at finalizeResolution (node:internal/modules/esm/resolve:272:11)[39m
|
|
7
|
+
[90m at moduleResolve (node:internal/modules/esm/resolve:879:10)[39m
|
|
8
|
+
[90m at defaultResolve (node:internal/modules/esm/resolve:1006:11)[39m
|
|
9
|
+
[90m at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)[39m
|
|
10
|
+
[90m at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)[39m
|
|
11
|
+
[90m at nextStep (node:internal/modules/customization_hooks:189:26)[39m
|
|
12
|
+
at resolveBaseSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:10932[90m)[39m
|
|
13
|
+
at resolveDirectorySync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:12238[90m)[39m
|
|
14
|
+
at resolveTsPathsSync [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:13445[90m)[39m
|
|
15
|
+
at resolve [90m(file:///home/dan/Desktop/Projects/waygraph/[39mnode_modules/[4mtsx[24m/dist/register-SoqaU4rg.mjs:2:15991[90m)[39m {
|
|
16
|
+
code: [32m'ERR_MODULE_NOT_FOUND'[39m,
|
|
17
|
+
url: [32m'file:///home/dan/Desktop/Projects/waygraph/dist/dist/cli.js'[39m
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Node.js v26.7.0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[13:04:44.176] waygraph pilot: stub.before ctx.title("Signing in · mobile")
|
|
2
|
+
[13:04:44.177] waygraph pilot: stub.before ctx.todos n=6 index=0
|
|
3
|
+
[13:04:44.177] waygraph pilot: stub.before ctx.device(mobile)
|
|
4
|
+
[13:04:44.177] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
5
|
+
[13:04:44.177] waygraph pilot: stub.before ring #user-name tone=info label="Username"
|
|
6
|
+
[13:04:45.401] waygraph pilot: stub.after ctx.todos n=6 index=1
|
|
7
|
+
[13:04:48.550] waygraph pilot: stub.before ring #password tone=planned label="Password"
|
|
8
|
+
[13:04:48.656] waygraph pilot: stub.after ctx.todos n=6 index=2
|
|
9
|
+
[13:04:52.040] waygraph pilot: stub.before ring #login-button tone=warning label="Login"
|
|
10
|
+
[13:04:52.285] waygraph pilot: stub.after ctx.title("Inventory · landscape")
|
|
11
|
+
[13:04:52.285] waygraph pilot: stub.after ctx.todos n=6 index=3
|
|
12
|
+
[13:04:52.285] waygraph pilot: stub.after ctx.device(mobile)
|
|
13
|
+
[13:04:52.285] waygraph pilot: stub.after ring .inventory_list tone=success label="Product shelf"
|
|
14
|
+
[13:04:58.453] waygraph pilot: stub.before ctx.title("Pick a product · tablet")
|
|
15
|
+
[13:04:58.453] waygraph pilot: stub.before ctx.todos n=6 index=3
|
|
16
|
+
[13:04:58.454] waygraph pilot: stub.before ctx.device(tablet)
|
|
17
|
+
[13:04:58.454] waygraph pilot: stub.before ctx.zoom(1.35)
|
|
18
|
+
[13:04:58.454] waygraph pilot: stub.before ring div.inventory_item:has(button[data-test="add-to-cart-sauce-labs-backpack"], button[data-test="remove-sauce-labs-backpack"]) .inventory_item_name tone=info label="Sauce Labs Backpack"
|
|
19
|
+
[13:04:58.454] waygraph pilot: stub.before ring [data-test="add-to-cart-sauce-labs-backpack"] tone=success label="Add to cart"
|
|
20
|
+
[13:04:59.651] waygraph pilot: stub.after ctx.title("In the cart")
|
|
21
|
+
[13:04:59.651] waygraph pilot: stub.after ctx.todos n=6 index=4
|
|
22
|
+
[13:04:59.651] waygraph pilot: stub.after ring .shopping_cart_badge tone=success label="Cart badge"
|