waygraph 0.15.53 → 0.16.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/README.md +8 -3
- package/bin/waygraph +2 -2
- package/dist/analysis/check.d.ts +38 -0
- package/dist/analysis/check.js +87 -0
- package/dist/analysis/coverage-gap.d.ts +1 -1
- package/dist/analysis/coverage-gap.js +14 -37
- package/dist/analysis/flow-source.d.ts +9 -0
- package/dist/analysis/flow-source.js +25 -0
- package/dist/analysis/graph.d.ts +13 -14
- package/dist/analysis/graph.js +48 -371
- package/dist/analysis/map-check.js +4 -39
- package/dist/analysis/practices-check.d.ts +1 -1
- package/dist/analysis/practices-check.js +24 -45
- package/dist/cli/args.d.ts +23 -0
- package/dist/cli/args.js +20 -0
- package/dist/{cli.d.ts → cli/cli.d.ts} +0 -1
- package/dist/{cli.js → cli/cli.js} +10 -9
- package/dist/{commands → cli/commands}/agent-dive-scaffold.js +35 -64
- package/dist/cli/commands/agent-dive.js +42 -0
- package/dist/{commands → cli/commands}/check.d.ts +0 -1
- package/dist/cli/commands/check.js +104 -0
- package/dist/cli/commands/codemod-checkpoints.d.ts +18 -0
- package/dist/cli/commands/codemod-checkpoints.js +186 -0
- package/dist/cli/commands/codemod-flows.d.ts +18 -0
- package/dist/cli/commands/codemod-flows.js +284 -0
- package/dist/cli/commands/codemod-stubs.d.ts +10 -0
- package/dist/cli/commands/codemod-stubs.js +187 -0
- package/dist/{commands → cli/commands}/extensions.js +5 -4
- package/dist/{commands → cli/commands}/init.js +1 -2
- package/dist/{commands → cli/commands}/list.js +9 -7
- package/dist/cli/commands/manifest.d.ts +2 -0
- package/dist/cli/commands/manifest.js +20 -0
- package/dist/cli/commands/map.js +57 -0
- package/dist/{commands → cli/commands}/run.d.ts +0 -1
- package/dist/cli/commands/run.js +64 -0
- package/dist/{commands → cli/commands}/session.js +61 -88
- package/dist/{commands → cli/commands}/test.js +11 -14
- package/dist/cli/commands/traverse.js +105 -0
- package/dist/{commands → cli/commands}/try.js +29 -25
- package/dist/{commands → cli/commands}/upgrade.js +40 -4
- package/dist/cli/flags.d.ts +193 -16
- package/dist/cli/flags.js +179 -234
- package/dist/cli/run-chain.d.ts +1 -0
- package/dist/cli/run-chain.js +42 -7
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +21 -53
- package/dist/cli/util.d.ts +2 -2
- package/dist/cli/util.js +2 -3
- package/dist/{highlights → demo/narration}/css.d.ts +1 -1
- package/dist/{highlights → demo/narration}/css.js +2 -3
- package/dist/{highlights → demo/narration}/demo-pace.d.ts +7 -11
- package/dist/{highlights → demo/narration}/demo-pace.js +9 -11
- package/dist/{highlights → demo/narration}/device.d.ts +4 -2
- package/dist/{highlights → demo/narration}/device.js +3 -1
- package/dist/demo/narration/merge.d.ts +8 -0
- package/dist/demo/narration/merge.js +71 -0
- package/dist/{highlights/run-phase.d.ts → demo/narration/narration.d.ts} +10 -14
- package/dist/{highlights/run-phase.js → demo/narration/narration.js} +25 -94
- package/dist/{highlights → demo/narration}/shorthand.d.ts +1 -1
- package/dist/demo/narration/stub-ctx.d.ts +8 -0
- package/dist/demo/narration/stub-ctx.js +164 -0
- package/dist/{highlights → demo/narration}/style.d.ts +1 -7
- package/dist/{highlights → demo/narration}/style.js +1 -41
- package/dist/{highlights → demo/narration}/todo-dock.d.ts +3 -3
- package/dist/{highlights → demo/narration}/todo-dock.js +13 -30
- package/dist/demo/overlay/auto-chrome.d.ts +7 -0
- package/dist/demo/overlay/auto-chrome.js +97 -0
- package/dist/{session/overlay-beacon.d.ts → demo/overlay/beacon.d.ts} +7 -0
- package/dist/{session/overlay-beacon.js → demo/overlay/beacon.js} +5 -0
- package/dist/demo/overlay/cursor.d.ts +12 -0
- package/dist/demo/overlay/cursor.js +142 -0
- package/dist/demo/overlay/device-stage.d.ts +13 -0
- package/dist/demo/overlay/device-stage.js +396 -0
- package/dist/demo/overlay/inpage/banner.d.ts +1 -0
- package/dist/demo/overlay/inpage/banner.js +160 -0
- package/dist/demo/overlay/inpage/caption.d.ts +2 -0
- package/dist/demo/overlay/inpage/caption.js +24 -0
- package/dist/demo/overlay/inpage/core.d.ts +1 -0
- package/dist/demo/overlay/inpage/core.js +345 -0
- package/dist/demo/overlay/inpage/device-chip.d.ts +1 -0
- package/dist/demo/overlay/inpage/device-chip.js +191 -0
- package/dist/demo/overlay/inpage/network.d.ts +9 -0
- package/dist/demo/overlay/inpage/network.js +200 -0
- package/dist/demo/overlay/inpage/panel-chrome.d.ts +1 -0
- package/dist/demo/overlay/inpage/panel-chrome.js +203 -0
- package/dist/demo/overlay/inpage/stamp.d.ts +1 -0
- package/dist/demo/overlay/inpage/stamp.js +46 -0
- package/dist/demo/overlay/inpage/swipe-zoom.d.ts +1 -0
- package/dist/demo/overlay/inpage/swipe-zoom.js +220 -0
- package/dist/demo/overlay/inpage/todos.d.ts +1 -0
- package/dist/demo/overlay/inpage/todos.js +294 -0
- package/dist/demo/overlay/locator-theater.d.ts +25 -0
- package/dist/demo/overlay/locator-theater.js +76 -0
- package/dist/demo/overlay/network-capture.d.ts +22 -0
- package/dist/demo/overlay/network-capture.js +127 -0
- package/dist/demo/overlay/overlay-css.d.ts +3 -0
- package/dist/demo/overlay/overlay-css.js +369 -0
- package/dist/demo/overlay/overlay-stage.d.ts +23 -0
- package/dist/demo/overlay/overlay-stage.js +106 -0
- package/dist/demo/overlay/overlay.d.ts +10 -0
- package/dist/demo/overlay/overlay.js +89 -0
- package/dist/{pilot-overlay/overlay-fixtures.d.ts → demo/overlay/phase-fixtures.d.ts} +2 -2
- package/dist/{pilot-overlay/overlay-fixtures.js → demo/overlay/phase-fixtures.js} +2 -2
- package/dist/{pilot-overlay/action-ring.js → demo/overlay/pilot/actions.js} +2 -1
- package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.d.ts +6 -5
- package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.js +19 -18
- package/dist/{pilot-overlay → demo/overlay/pilot}/shell.d.ts +2 -2
- package/dist/{pilot-overlay → demo/overlay/pilot}/shell.js +13 -22
- package/dist/demo/overlay/reattach.d.ts +7 -0
- package/dist/demo/overlay/reattach.js +23 -0
- package/dist/demo/overlay/rings.d.ts +33 -0
- package/dist/demo/overlay/rings.js +448 -0
- package/dist/{ui → demo/overlay/ui}/components/ring.js +2 -2
- package/dist/{ui → demo/overlay/ui}/overlay.css +4 -4
- package/dist/{ui → demo/overlay/ui}/shadow.d.ts +1 -1
- package/dist/{ui → demo/overlay/ui}/shadow.js +39 -2
- package/dist/demo/stepper/after.d.ts +3 -0
- package/dist/demo/stepper/after.js +113 -0
- package/dist/demo/stepper/banner-log.d.ts +37 -0
- package/dist/demo/stepper/banner-log.js +63 -0
- package/dist/demo/stepper/before.d.ts +4 -0
- package/dist/demo/stepper/before.js +110 -0
- package/dist/demo/stepper/demo-log.d.ts +31 -0
- package/dist/demo/stepper/demo-log.js +309 -0
- package/dist/demo/stepper/gate.d.ts +11 -0
- package/dist/demo/stepper/gate.js +78 -0
- package/dist/demo/stepper/interaction-patch.d.ts +3 -0
- package/dist/demo/stepper/interaction-patch.js +323 -0
- package/dist/demo/stepper/pacing.d.ts +21 -0
- package/dist/demo/stepper/pacing.js +23 -0
- package/dist/demo/stepper/slides.d.ts +11 -0
- package/dist/demo/stepper/slides.js +233 -0
- package/dist/demo/stepper/step-panels.d.ts +21 -0
- package/dist/demo/stepper/step-panels.js +589 -0
- package/dist/demo/stepper/stepper.d.ts +24 -0
- package/dist/demo/stepper/stepper.js +122 -0
- package/dist/demo/stepper/teardown.d.ts +48 -0
- package/dist/demo/stepper/teardown.js +179 -0
- package/dist/demo/stepper/todo-advance.d.ts +14 -0
- package/dist/demo/stepper/todo-advance.js +110 -0
- package/dist/demo/stepper/view.d.ts +68 -0
- package/dist/demo/stepper/view.js +31 -0
- package/dist/demo/types.d.ts +17 -0
- package/dist/demo/verbose-log.js +15 -0
- package/dist/{types.d.ts → engine/block/block.d.ts} +106 -91
- package/dist/{core → engine/block}/block.js +10 -53
- package/dist/{core → engine/block}/compose.d.ts +10 -7
- package/dist/{core → engine/block}/compose.js +1 -1
- package/dist/{core/blocks → engine/block/kinds}/api.d.ts +17 -12
- package/dist/{core/blocks → engine/block/kinds}/api.js +26 -18
- package/dist/{core/blocks → engine/block/kinds}/effect.d.ts +13 -18
- package/dist/engine/block/kinds/effect.js +17 -0
- package/dist/{core/blocks → engine/block/kinds}/method.d.ts +19 -29
- package/dist/{core/blocks → engine/block/kinds}/method.js +7 -21
- package/dist/{core/blocks → engine/block/kinds}/nav.d.ts +22 -31
- package/dist/{core/blocks → engine/block/kinds}/nav.js +6 -12
- package/dist/{core/blocks → engine/block/kinds}/page.d.ts +15 -20
- package/dist/{core/blocks → engine/block/kinds}/page.js +5 -7
- package/dist/engine/checkpoint/checkpoint.d.ts +22 -0
- package/dist/engine/checkpoint/checkpoint.js +8 -0
- package/dist/engine/checkpoint/route.d.ts +28 -0
- package/dist/engine/checkpoint/route.js +28 -0
- package/dist/{core → engine}/config.d.ts +7 -2
- package/dist/engine/config.js +6 -0
- package/dist/engine/engine.d.ts +45 -0
- package/dist/{core → engine}/engine.js +6 -10
- package/dist/engine/env.d.ts +59 -0
- package/dist/engine/env.js +83 -0
- package/dist/{errors.d.ts → engine/errors.d.ts} +23 -22
- package/dist/{errors.js → engine/errors.js} +22 -22
- package/dist/{core → engine/flow}/branch-regression.d.ts +8 -7
- package/dist/{core → engine/flow}/branch-regression.js +4 -3
- package/dist/engine/flow/flow.d.ts +162 -0
- package/dist/engine/flow/flow.js +244 -0
- package/dist/{core → engine/flow}/map-builder.d.ts +42 -40
- package/dist/{core → engine/flow}/map-builder.js +46 -48
- package/dist/{core → engine}/locate.d.ts +1 -1
- package/dist/{core → engine}/locate.js +1 -2
- package/dist/{mem-stub.d.ts → engine/mem/mem-stub.d.ts} +9 -8
- package/dist/{mem-stub.js → engine/mem/mem-stub.js} +2 -2
- package/dist/{mem-page.d.ts → engine/mem/mem.d.ts} +1 -1
- package/dist/{mem-page.js → engine/mem/mem.js} +2 -1
- package/dist/engine/page-gone.d.ts +5 -0
- package/dist/engine/page-gone.js +20 -0
- package/dist/engine/run/connect.d.ts +28 -0
- package/dist/{types.js → engine/run/connect.js} +11 -10
- package/dist/engine/run/events.d.ts +67 -0
- package/dist/engine/run/events.js +90 -0
- package/dist/engine/run/hooks.d.ts +16 -0
- package/dist/engine/run/hooks.js +8 -0
- package/dist/engine/run/launch.d.ts +13 -0
- package/dist/engine/run/launch.js +27 -0
- package/dist/{core/run-graph.d.ts → engine/run/run.d.ts} +9 -11
- package/dist/{core/run-graph.js → engine/run/run.js} +22 -11
- package/dist/engine/stub/pace.d.ts +12 -0
- package/dist/engine/stub/pace.js +2 -0
- package/dist/engine/stub/ring.d.ts +130 -0
- package/dist/engine/stub/ring.js +41 -0
- package/dist/engine/stub/stub.d.ts +268 -0
- package/dist/engine/stub/stub.js +1 -0
- package/dist/engine/stub/todos.d.ts +104 -0
- package/dist/engine/stub/todos.js +2 -0
- package/dist/engine/stub/viewport.d.ts +26 -0
- package/dist/engine/stub/viewport.js +2 -0
- package/dist/{trait.d.ts → engine/trait/trait.d.ts} +1 -1
- package/dist/index.d.ts +84 -36
- package/dist/index.js +44 -19
- package/dist/{session/auto-explore-run.d.ts → live/auto/auto.d.ts} +10 -16
- package/dist/{session/auto-explore-run.js → live/auto/auto.js} +164 -248
- package/dist/{session/auto-explore.d.ts → live/auto/explore.d.ts} +4 -14
- package/dist/{session/auto-explore.js → live/auto/explore.js} +21 -127
- package/dist/{auto-session/session.d.ts → live/auto-session/auto-session.d.ts} +1 -1
- package/dist/{auto-session/session.js → live/auto-session/auto-session.js} +27 -24
- package/dist/{auto-session → live/auto-session}/helpers.d.ts +16 -5
- package/dist/{auto-session → live/auto-session}/helpers.js +1 -1
- package/dist/{session/auto-session-ipc.d.ts → live/auto-session/ipc.d.ts} +7 -5
- package/dist/{session/auto-session-ipc.js → live/auto-session/ipc.js} +31 -16
- package/dist/{session/browser.d.ts → live/auto-session/start.d.ts} +1 -2
- package/dist/{session/browser.js → live/auto-session/start.js} +2 -3
- package/dist/{pilot-overlay → live/pilot}/panel.d.ts +1 -1
- package/dist/{pilot-overlay → live/pilot}/panel.js +23 -31
- package/dist/{session → live/pilot}/pilot.d.ts +4 -3
- package/dist/{session → live/pilot}/pilot.js +4 -4
- package/dist/{traverse → live/traverse}/coverage.d.ts +4 -0
- package/dist/{traverse → live/traverse}/coverage.js +3 -0
- package/dist/{traverse → live/traverse}/lease.d.ts +1 -0
- package/dist/{traverse → live/traverse}/lease.js +1 -0
- package/dist/{traverse/run.d.ts → live/traverse/traverse.d.ts} +4 -1
- package/dist/{traverse/run.js → live/traverse/traverse.js} +26 -43
- package/dist/manifest/manifest.d.ts +52 -0
- package/dist/manifest/manifest.js +93 -0
- package/dist/manifest/map-imports.d.ts +7 -0
- package/dist/manifest/map-imports.js +22 -0
- package/dist/manifest/maps.d.ts +33 -0
- package/dist/manifest/maps.js +62 -0
- package/dist/manifest/pack.d.ts +21 -0
- package/dist/manifest/pack.js +109 -0
- package/dist/manifest/project.d.ts +60 -0
- package/dist/manifest/project.js +101 -0
- package/dist/{session/block-inject.js → manifest/roots.js} +1 -18
- package/dist/manifest/scan.d.ts +19 -0
- package/dist/manifest/scan.js +57 -0
- package/dist/{blocks-select.d.ts → manifest/select.d.ts} +3 -0
- package/dist/{blocks-select.js → manifest/select.js} +2 -0
- package/dist/manifest/source.d.ts +23 -0
- package/dist/manifest/source.js +86 -0
- package/dist/runner/mode.d.ts +71 -0
- package/dist/runner/mode.js +1 -0
- package/dist/runner/modes/branches.d.ts +5 -0
- package/dist/runner/modes/branches.js +37 -0
- package/dist/runner/modes/demo.d.ts +3 -0
- package/dist/runner/modes/demo.js +13 -0
- package/dist/runner/modes/report.d.ts +2 -0
- package/dist/runner/modes/report.js +54 -0
- package/dist/runner/modes/run.d.ts +2 -0
- package/dist/runner/modes/run.js +3 -0
- package/dist/runner/options.d.ts +31 -0
- package/dist/runner/options.js +42 -0
- package/dist/runner/plan/find.d.ts +18 -0
- package/dist/runner/plan/find.js +65 -0
- package/dist/runner/plan/plan.d.ts +11 -0
- package/dist/runner/plan/plan.js +97 -0
- package/dist/runner/plan/seed-mem.d.ts +12 -0
- package/dist/runner/plan/seed-mem.js +98 -0
- package/dist/runner/plan/spec.d.ts +5 -0
- package/dist/runner/plan/spec.js +17 -0
- package/dist/runner/play-steps.d.ts +2 -0
- package/dist/runner/play-steps.js +59 -0
- package/dist/runner/runner.d.ts +4 -0
- package/dist/runner/runner.js +64 -0
- package/dist/runner/session.d.ts +9 -0
- package/dist/runner/session.js +87 -0
- package/dist/{browser.js → runtime/browser.js} +4 -2
- package/dist/{env-file.js → runtime/env-file.js} +7 -12
- package/dist/{extensions.d.ts → runtime/extensions.d.ts} +2 -5
- package/dist/{extensions.js → runtime/extensions.js} +3 -1
- package/dist/runtime/full-launch.d.ts +1 -0
- package/dist/runtime/full-launch.js +34 -0
- package/dist/runtime/global-flag.d.ts +5 -0
- package/dist/runtime/global-flag.js +18 -0
- package/dist/{playwright-config.d.ts → runtime/playwright-config.d.ts} +1 -1
- package/dist/{playwright.config.js → runtime/playwright.config.js} +3 -2
- package/dist/runtime/run-log.d.ts +2 -0
- package/dist/runtime/run-log.js +17 -0
- package/dist/{video-dir.js → runtime/video-dir.js} +3 -2
- package/dist/{config.d.ts → runtime/waygraph-config.d.ts} +8 -9
- package/dist/{config.js → runtime/waygraph-config.js} +21 -51
- package/dist/{webserver.js → runtime/webserver.js} +5 -30
- package/examples/routed-demo/config/waygraph.config.ts +20 -0
- package/examples/routed-demo/package.json +1 -4
- package/examples/routed-demo/scripts/fixture-server.mjs +1 -1
- package/examples/routed-demo/src/flows/routed-demo-map.flow.ts +2 -4
- package/examples/routed-demo/src/flows/routed-demo.flow.ts +2 -3
- package/examples/routed-demo/src/map/(app_base)/dashboard/_methods/click-widget.block.ts +5 -4
- package/examples/routed-demo/src/map/(app_base)/dashboard/_nav.block.ts +3 -3
- package/examples/routed-demo/src/map/(app_base)/dashboard/_page.block.ts +3 -3
- package/examples/routed-demo/src/map/(external)/docs/_nav.block.ts +3 -3
- package/examples/routed-demo/src/map/(external)/docs/_page.block.ts +3 -3
- package/examples/routed-demo/src/states/routed-demo.states.ts +5 -3
- package/examples/routed-demo/tests/routed-demo.spec.ts +4 -4
- package/examples/routed-demo/tsconfig.json +1 -1
- package/examples/saucedemo/README.md +11 -12
- package/examples/saucedemo/config/waygraph.config.ts +17 -0
- package/examples/saucedemo/docs/CONVENTION.md +5 -7
- package/examples/saucedemo/docs/HELPERS.md +12 -12
- package/examples/saucedemo/package-lock.json +10 -3
- package/examples/saucedemo/package.json +12 -29
- package/examples/saucedemo/src/blocks/SITE-MAP.md +0 -1
- package/examples/saucedemo/src/blocks/saucedemo-web/NAV.md +1 -5
- package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
- package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
- package/examples/saucedemo/src/flows/api-demo.flow.ts +26 -18
- package/examples/saucedemo/src/flows/cart-bulk.flow.ts +19 -14
- package/examples/saucedemo/src/flows/cart-continue.flow.ts +10 -8
- package/examples/saucedemo/src/flows/cart-mem.flow.ts +7 -7
- package/examples/saucedemo/src/flows/catalog-logout.flow.ts +13 -8
- package/examples/saucedemo/src/flows/checkout-then-browse-again.flow.ts +26 -48
- package/examples/saucedemo/src/flows/checkout.flow.ts +70 -86
- package/examples/saucedemo/src/flows/device-showcase.flow.ts +24 -25
- package/examples/saucedemo/src/flows/login.flow.ts +11 -18
- package/examples/saucedemo/src/flows/mem-stub-demo.flow.ts +9 -20
- package/examples/saucedemo/src/flows/shop.flow.ts +15 -20
- package/examples/saucedemo/src/flows/smoke.flow.ts +12 -27
- package/examples/saucedemo/src/flows/stub-on-error.flow.ts +24 -43
- package/examples/saucedemo/src/flows/viewer-blocked.flow.ts +26 -34
- package/examples/saucedemo/src/states/checkout.mem-stubs.ts +11 -0
- package/examples/saucedemo/src/states/checkout.states.ts +21 -11
- package/examples/saucedemo/src/stubs/device-showcase.ts +191 -0
- package/examples/saucedemo/src/stubs/login.ts +37 -0
- package/examples/saucedemo/tests/auto-graph.spec.ts +4 -12
- package/examples/saucedemo/tests/chain-flow-episodes.spec.ts +7 -9
- package/examples/saucedemo/tests/submit-login-branch.spec.ts +18 -5
- package/package.json +12 -7
- package/templates/agents/waygraph-planner.agent.md +2 -2
- package/templates/quickstart/README.md +4 -7
- package/templates/quickstart/config/waygraph.config.ts +17 -0
- package/templates/quickstart/docs/CONVENTION.md +5 -6
- package/templates/quickstart/docs/HELPERS.md +11 -9
- package/templates/quickstart/package.json +14 -17
- package/templates/quickstart/src/blocks/SITE-MAP.md +13 -3
- package/templates/quickstart/src/blocks/saucedemo-web/NAV.md +1 -5
- package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
- package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
- package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
- package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
- package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
- package/templates/quickstart/src/flows/api-demo.flow.ts +45 -0
- package/templates/quickstart/src/flows/cart-bulk.flow.ts +19 -14
- package/templates/quickstart/src/flows/cart-continue.flow.ts +10 -8
- package/templates/quickstart/src/flows/cart-mem.flow.ts +7 -7
- package/templates/quickstart/src/flows/catalog-logout.flow.ts +13 -8
- package/templates/quickstart/src/flows/checkout-then-browse-again.flow.ts +26 -48
- package/templates/quickstart/src/flows/checkout.flow.ts +70 -63
- package/templates/quickstart/src/flows/device-showcase.flow.ts +24 -25
- package/templates/quickstart/src/flows/login.flow.ts +11 -18
- package/templates/quickstart/src/flows/mem-stub-demo.flow.ts +12 -0
- package/templates/quickstart/src/flows/shop.flow.ts +15 -20
- package/templates/quickstart/src/flows/smoke.flow.ts +12 -27
- package/templates/quickstart/src/flows/stub-on-error.flow.ts +31 -0
- package/templates/quickstart/src/flows/viewer-blocked.flow.ts +26 -34
- package/templates/quickstart/src/states/checkout.mem-stubs.ts +11 -0
- package/templates/quickstart/src/states/checkout.states.ts +21 -11
- package/templates/quickstart/src/stubs/device-showcase.ts +191 -0
- package/templates/quickstart/src/stubs/login.ts +37 -0
- package/templates/quickstart/tests/chain-flow.spec.ts +7 -10
- package/templates/scaffold/README.md +2 -1
- package/templates/scaffold/STRUCTURE.md +5 -4
- package/templates/scaffold/config/waygraph.config.ts +1 -0
- package/templates/scaffold/gitignore +1 -0
- package/templates/scaffold/src/flows/README.md +2 -2
- package/templates/scaffold/src/map/(app_base)/docs/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/docs/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/add-item.effect.block.ts +4 -4
- package/templates/scaffold/src/map/(app_base)/home/_methods/assert-hello.method.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/assert-item-added.method.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/clear-cart.method.block.ts +5 -4
- package/templates/scaffold/src/map/(app_base)/home/_methods/remove-item.effect.block.ts +4 -4
- package/templates/scaffold/src/map/(app_base)/home/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/nav-verification-link.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_keys.ts +21 -0
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-body.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-header.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-status.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.ts +5 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-body.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-headers.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/send-request.method.block.ts +5 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-bearer-token.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-headers.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-json-body.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-method.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-query-params.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-url.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/hoppscotch/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/hoppscotch/_states.ts +6 -0
- package/templates/scaffold/src/map/(external)/hoppscotch/settings/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_keys.ts +13 -0
- package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-content.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-received.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/mailpit/_methods/extract-email-link.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/mailpit/_methods/open-message.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/mailpit/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_states.ts +9 -0
- package/templates/scaffold/src/map/README.md +7 -0
- package/templates/scaffold/src/states/README.md +4 -1
- package/templates/scaffold/src/states/demo.mem-keys.ts +1 -29
- package/templates/scaffold/src/states/demo.states.ts +14 -20
- package/templates/scaffold/tests/hoppscotch.spec.ts +1 -11
- package/templates/scaffold/tests/mail-verify.spec.ts +2 -2
- package/templates/skills/waygraph-blind-pilot.skill.md +2 -6
- package/templates/skills/waygraph-convention.skill.md +23 -14
- package/templates/skills/waygraph-pilot.skill.md +7 -4
- package/dist/auto-session/verbose-log.js +0 -16
- package/dist/auto-session.d.ts +0 -2
- package/dist/auto-session.js +0 -3
- package/dist/cli/discover.d.ts +0 -40
- package/dist/cli/discover.js +0 -148
- package/dist/commands/agent-dive.js +0 -52
- package/dist/commands/check.js +0 -192
- package/dist/commands/map.js +0 -29
- package/dist/commands/run.js +0 -104
- package/dist/commands/traverse.js +0 -177
- package/dist/core/block.d.ts +0 -109
- package/dist/core/blocks/effect.js +0 -23
- package/dist/core/config.js +0 -17
- package/dist/core/engine.d.ts +0 -198
- package/dist/core/flow.d.ts +0 -293
- package/dist/core/flow.js +0 -432
- package/dist/core.d.ts +0 -14
- package/dist/core.js +0 -15
- package/dist/highlights/merge.d.ts +0 -8
- package/dist/highlights/merge.js +0 -173
- package/dist/highlights/stub-ctx.d.ts +0 -10
- package/dist/highlights/stub-ctx.js +0 -331
- package/dist/highlights/types.d.ts +0 -607
- package/dist/highlights.d.ts +0 -9
- package/dist/highlights.js +0 -10
- package/dist/pilot-overlay.d.ts +0 -5
- package/dist/pilot-overlay.js +0 -6
- package/dist/runner/banner-log.js +0 -63
- package/dist/runner/chain-run.js +0 -102
- package/dist/runner/cursor.js +0 -140
- package/dist/runner/demo-log.js +0 -316
- package/dist/runner/device-stage.d.ts +0 -9
- package/dist/runner/device-stage.js +0 -420
- package/dist/runner/discovery.js +0 -105
- package/dist/runner/index.js +0 -2
- package/dist/runner/inpage/banner.d.ts +0 -21
- package/dist/runner/inpage/banner.js +0 -156
- package/dist/runner/inpage/caption.d.ts +0 -3
- package/dist/runner/inpage/caption.js +0 -23
- package/dist/runner/inpage/core.d.ts +0 -4
- package/dist/runner/inpage/core.js +0 -316
- package/dist/runner/inpage/device.d.ts +0 -3
- package/dist/runner/inpage/device.js +0 -211
- package/dist/runner/inpage/network.d.ts +0 -15
- package/dist/runner/inpage/network.js +0 -217
- package/dist/runner/inpage/panel-chrome.js +0 -192
- package/dist/runner/inpage/stamp.js +0 -46
- package/dist/runner/inpage/swipe-zoom.js +0 -220
- package/dist/runner/inpage/todos.js +0 -337
- package/dist/runner/interaction-patch.js +0 -384
- package/dist/runner/main.js +0 -469
- package/dist/runner/network-capture.d.ts +0 -9
- package/dist/runner/network-capture.js +0 -126
- package/dist/runner/overlay-css.d.ts +0 -3
- package/dist/runner/overlay-css.js +0 -377
- package/dist/runner/overlay-install.js +0 -90
- package/dist/runner/overlay-stage.js +0 -110
- package/dist/runner/rings.js +0 -514
- package/dist/runner/seed-mem.js +0 -110
- package/dist/runner/slides.js +0 -278
- package/dist/runner/step-mode.js +0 -703
- package/dist/runner/step-panels.js +0 -729
- package/dist/runner/teardown.js +0 -202
- package/dist/runner/todo-dock.js +0 -142
- package/dist/session/step-overlay.d.ts +0 -37
- package/dist/session/step-overlay.js +0 -244
- package/examples/routed-demo/playwright.config.ts +0 -21
- package/examples/saucedemo/playwright.config.ts +0 -19
- package/examples/saucedemo/scripts/drive-auto-cli.mjs +0 -93
- package/examples/saucedemo/scripts/prove-add-to-cart-menu.mjs +0 -126
- package/examples/saucedemo/scripts/prove-auto-graph.mjs +0 -92
- package/examples/saucedemo/scripts/prove-wrong-login-runtime.mjs +0 -63
- package/examples/saucedemo/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
- package/templates/quickstart/playwright.config.ts +0 -14
- package/templates/quickstart/scripts/drive-auto-cli.mjs +0 -93
- package/templates/quickstart/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
- /package/dist/{commands → cli/commands}/agent-dive-scaffold.d.ts +0 -0
- /package/dist/{commands → cli/commands}/agent-dive.d.ts +0 -0
- /package/dist/{commands → cli/commands}/extensions.d.ts +0 -0
- /package/dist/{commands → cli/commands}/init.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/map.d.ts +0 -0
- /package/dist/{commands → cli/commands}/session.d.ts +0 -0
- /package/dist/{commands → cli/commands}/test.d.ts +0 -0
- /package/dist/{commands → cli/commands}/traverse.d.ts +0 -0
- /package/dist/{commands → cli/commands}/try.d.ts +0 -0
- /package/dist/{commands → cli/commands}/upgrade.d.ts +0 -0
- /package/dist/{highlights → demo/narration}/shorthand.js +0 -0
- /package/dist/{pilot-overlay/action-ring.d.ts → demo/overlay/pilot/actions.d.ts} +0 -0
- /package/dist/{ui → demo/overlay/ui}/components/ring.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/stylesheet.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/stylesheet.js +0 -0
- /package/dist/{ui → demo/overlay/ui}/tokens.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/tokens.js +0 -0
- /package/dist/{highlights → demo}/types.js +0 -0
- /package/dist/{auto-session → demo}/verbose-log.d.ts +0 -0
- /package/dist/{selector.d.ts → engine/trait/selector.d.ts} +0 -0
- /package/dist/{selector.js → engine/trait/selector.js} +0 -0
- /package/dist/{trait.js → engine/trait/trait.js} +0 -0
- /package/dist/{session/block-inject.d.ts → manifest/roots.d.ts} +0 -0
- /package/dist/{browser.d.ts → runtime/browser.d.ts} +0 -0
- /package/dist/{env-file.d.ts → runtime/env-file.d.ts} +0 -0
- /package/dist/{playwright-config.js → runtime/playwright-config.js} +0 -0
- /package/dist/{playwright.config.d.ts → runtime/playwright.config.d.ts} +0 -0
- /package/dist/{video-dir.d.ts → runtime/video-dir.d.ts} +0 -0
- /package/dist/{webserver.d.ts → runtime/webserver.d.ts} +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WgPage } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* `ui` = authored banner UX from the stub phase: { pos, collision, hidden } (all optional).
|
|
4
|
+
* `caption` = bottom subtitle-bar text (ctx.caption()/ctx.hideCaption()) - `undefined` leaves it
|
|
5
|
+
* alone (unset this step), `""` hides it, any other string shows/updates it.
|
|
6
|
+
* `networkTabVisible` = network-tab panel shown/hidden (ctx.showNetworkTab()/hideNetworkTab()) -
|
|
7
|
+
* `undefined` leaves it alone (default state is hidden, set the very first time restoreNetworkHistory
|
|
8
|
+
* builds a panel); capture itself is unconditional and unaffected by this either way.
|
|
9
|
+
*/
|
|
10
|
+
export declare function installOverlay(page: WgPage, title?: any, ui?: any, caption?: any, networkTabVisible?: any): Promise<void>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { HOST_CSS, RUNNER_EXTRA_CSS, WAYGRAPH_FAVICON } from "./overlay-css.js";
|
|
2
|
+
import { ensureShadowRoot } from "./ui/shadow.js";
|
|
3
|
+
import { resolveTodoDockUi } from "../narration/todo-dock.js";
|
|
4
|
+
import { installCore } from "./inpage/core.js";
|
|
5
|
+
import { installSwipeZoom } from "./inpage/swipe-zoom.js";
|
|
6
|
+
import { installBanner } from "./inpage/banner.js";
|
|
7
|
+
import { showCaption, hideCaption } from "./inpage/caption.js";
|
|
8
|
+
import { installStamp } from "./inpage/stamp.js";
|
|
9
|
+
import { installPanelChrome } from "./inpage/panel-chrome.js";
|
|
10
|
+
import { installTodos } from "./inpage/todos.js";
|
|
11
|
+
import { installDevice } from "./inpage/device-chip.js";
|
|
12
|
+
import { applyVideoDeviceStage } from "./device-stage.js";
|
|
13
|
+
import { installNetworkCapture, restoreNetworkHistory } from "./network-capture.js";
|
|
14
|
+
import { setNetworkTabVisible } from "./inpage/network.js";
|
|
15
|
+
import { envFlag, envString } from "../../engine/env.js";
|
|
16
|
+
import { ignorePageGone } from "../../engine/page-gone.js";
|
|
17
|
+
/**
|
|
18
|
+
* `ui` = authored banner UX from the stub phase: { pos, collision, hidden } (all optional).
|
|
19
|
+
* `caption` = bottom subtitle-bar text (ctx.caption()/ctx.hideCaption()) - `undefined` leaves it
|
|
20
|
+
* alone (unset this step), `""` hides it, any other string shows/updates it.
|
|
21
|
+
* `networkTabVisible` = network-tab panel shown/hidden (ctx.showNetworkTab()/hideNetworkTab()) -
|
|
22
|
+
* `undefined` leaves it alone (default state is hidden, set the very first time restoreNetworkHistory
|
|
23
|
+
* builds a panel); capture itself is unconditional and unaffected by this either way.
|
|
24
|
+
*/
|
|
25
|
+
export async function installOverlay(page, title, ui, caption, networkTabVisible) {
|
|
26
|
+
// ring/cursor/banner/dock come from the ONE shared bundle every surface installs (ui/css/*.css).
|
|
27
|
+
await ensureShadowRoot(page);
|
|
28
|
+
// Idempotent (guarded on page.__wgNetworkCaptureInstalled) - safe to call every step even though
|
|
29
|
+
// installOverlay itself runs every step; the page.on() listeners this installs are attached to
|
|
30
|
+
// the Page object, not any one document, so they already survive navigations on their own.
|
|
31
|
+
installNetworkCapture(page);
|
|
32
|
+
// Visibility is Node-side state too (page.__wgNetworkTabVisible), same reason history is: a
|
|
33
|
+
// navigation wipes window.__wgNetworkTabVisible along with the rest of the page-side JS state,
|
|
34
|
+
// so "shown" would silently revert to the hidden default on the very next navigated step without
|
|
35
|
+
// this. Default false (hidden) - matches addNetworkEntry's own default-hidden behavior.
|
|
36
|
+
if (networkTabVisible !== undefined)
|
|
37
|
+
page.__wgNetworkTabVisible = !!networkTabVisible;
|
|
38
|
+
await page.evaluate((v) => { window.__wgNetworkTabVisible = v; }, !!page.__wgNetworkTabVisible).catch(ignorePageGone);
|
|
39
|
+
// Real bug this fixes: a navigation wipes the shadow root (and with it, the network panel's DOM
|
|
40
|
+
// and in-page entry list) - without replaying page.__wgNetworkHistory (Node-side, survives
|
|
41
|
+
// navigation) back in every step, the "network tab" silently reset to empty on any step that
|
|
42
|
+
// navigated, instead of staying persistent like a real Network tab.
|
|
43
|
+
await restoreNetworkHistory(page);
|
|
44
|
+
// Explicit toggle too, not just the flag write above - covers the case where the panel already
|
|
45
|
+
// existed (no restore ran this step) and this step's `networkTabVisible` differs from before.
|
|
46
|
+
if (networkTabVisible !== undefined) {
|
|
47
|
+
await page.evaluate(setNetworkTabVisible, networkTabVisible).catch(ignorePageGone);
|
|
48
|
+
}
|
|
49
|
+
// Runner-only chrome (step panel, zoom/typing/device chips) - separate key, no collision.
|
|
50
|
+
await page.evaluate(([css, key]) => __wgCss(css, key), [RUNNER_EXTRA_CSS, "wg-runner-css"]).catch(ignorePageGone);
|
|
51
|
+
await page.addStyleTag({ content: HOST_CSS }).catch(ignorePageGone);
|
|
52
|
+
// Default top-left; override with WAYGRAPH_TITLE_POS=left|center|right.
|
|
53
|
+
// Click cycles left -> center -> right (persisted in localStorage so a
|
|
54
|
+
// navigation that rebuilds the banner keeps the human's last pick).
|
|
55
|
+
const envPos = (envString("WAYGRAPH_TITLE_POS") || "left").toLowerCase();
|
|
56
|
+
const bannerPos = envPos === "center" || envPos === "right" ? envPos : "left";
|
|
57
|
+
const envTodoPos = (envString("WAYGRAPH_TODO_POS") || "left").toLowerCase();
|
|
58
|
+
const todoPos = envTodoPos === "right" ? "right" : "left";
|
|
59
|
+
const envAutoplay = envFlag("WAYGRAPH_AUTOPLAY");
|
|
60
|
+
const todoDockUi = resolveTodoDockUi();
|
|
61
|
+
const args = { title, favicon: WAYGRAPH_FAVICON, bannerPos, todoPos, envAutoplay, todoDockUi, bannerUi: ui || null };
|
|
62
|
+
await page.evaluate(installCore, args).catch(ignorePageGone);
|
|
63
|
+
await page.evaluate(installSwipeZoom, args).catch(ignorePageGone);
|
|
64
|
+
await page.evaluate(installBanner, args).catch(ignorePageGone);
|
|
65
|
+
await page.evaluate(installStamp, args).catch(ignorePageGone);
|
|
66
|
+
await page.evaluate(installPanelChrome, args).catch(ignorePageGone);
|
|
67
|
+
await page.evaluate(installTodos, args).catch(ignorePageGone);
|
|
68
|
+
await page.evaluate(installDevice, args).catch(ignorePageGone);
|
|
69
|
+
if (caption !== undefined) {
|
|
70
|
+
if (caption === "") {
|
|
71
|
+
await page.evaluate(hideCaption).catch(ignorePageGone);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
await page.evaluate(showCaption, caption).catch(ignorePageGone);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Navigations wipe #wg-device-shell - rebuild when video stage + device are live.
|
|
78
|
+
// If we already shuttered to desktop-flat, re-apply FLAT (never re-add bezel).
|
|
79
|
+
if (page.__wgVideoViewport &&
|
|
80
|
+
page.__wgDeviceShell &&
|
|
81
|
+
page.__wgDeviceShell.width &&
|
|
82
|
+
page.__wgDeviceShell.height) {
|
|
83
|
+
await applyVideoDeviceStage(page, page.__wgDeviceShell, page.__wgVideoViewport, {
|
|
84
|
+
clear: false,
|
|
85
|
+
shutterOut: !!page.__wgDesktopFlat,
|
|
86
|
+
desktopFlat: !!page.__wgDesktopFlat,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { StubPhaseResult } from "
|
|
2
|
-
import type { PilotHighlightFixtures } from "./fixtures.js";
|
|
1
|
+
import type { StubPhaseResult } from "../../engine/stub/stub.js";
|
|
2
|
+
import type { PilotHighlightFixtures } from "./pilot/fixtures.js";
|
|
3
3
|
/**
|
|
4
4
|
* The reverse: a resolved stub phase (what `runStubPhase` returns for a Block's stubBefore/After/OnError)
|
|
5
5
|
* -> what the Pilot painter takes. Lets `auto/browser/pilot send` paint a Block's authored waygraph overlay
|
|
@@ -48,8 +48,8 @@ export function describeOverlayFixtures(tag, f) {
|
|
|
48
48
|
out.push(`${tag} ctx.bannerUi(${JSON.stringify(f.bannerUi)})`);
|
|
49
49
|
if (f.todos?.length)
|
|
50
50
|
out.push(`${tag} ctx.todos n=${f.todos.length} index=${f.todoIndex ?? 0}${f.todoPos ? ` pos=${f.todoPos}` : ""}`);
|
|
51
|
-
if (f.
|
|
52
|
-
out.push(`${tag}
|
|
51
|
+
if (f.todoUi)
|
|
52
|
+
out.push(`${tag} todoUi ${JSON.stringify(f.todoUi)}`);
|
|
53
53
|
if (f.device)
|
|
54
54
|
out.push(`${tag} ctx.device(${typeof f.device === "string" ? f.device : f.device.preset ?? "custom"})`);
|
|
55
55
|
if (f.zoom)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ensureInstalled } from "./shell.js";
|
|
2
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
2
3
|
/** Paint the gray "auto" ring (Playwright is about to act here) at a viewport rectangle. */
|
|
3
4
|
async function showPilotRect(page, box, label, tone = "auto") {
|
|
4
5
|
await ensureInstalled(page);
|
|
@@ -30,7 +31,7 @@ async function showPilotRect(page, box, label, tone = "auto") {
|
|
|
30
31
|
tag.style.opacity = "0";
|
|
31
32
|
}, 4_000);
|
|
32
33
|
}, { box, label, tone })
|
|
33
|
-
.catch(
|
|
34
|
+
.catch(ignorePageGone);
|
|
34
35
|
}
|
|
35
36
|
const LOCATOR_ACTIONS = ["click", "dblclick", "hover", "tap", "fill", "check", "uncheck", "selectOption", "press", "pressSequentially", "setInputFiles"];
|
|
36
37
|
const patched = new WeakSet();
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { BannerPos, BannerUiOpts
|
|
1
|
+
import type { BannerPos, BannerUiOpts } from "../../../engine/stub/stub.js";
|
|
2
|
+
import type { DevicePreset, DeviceState } from "../../../engine/stub/viewport.js";
|
|
3
|
+
import type { HighlightTone } from "../../../engine/stub/ring.js";
|
|
4
|
+
import type { TodoDockUiOpts, TodoListStyle, WaygraphTodoGroupInput } from "../../../engine/stub/todos.js";
|
|
2
5
|
import type { Page } from "@playwright/test";
|
|
3
6
|
/** One ring the Pilot agent wants painted (same fields as demo stub rings). */
|
|
4
7
|
export type PilotFixtureRing = {
|
|
@@ -26,7 +29,7 @@ export type PilotFixtureRing = {
|
|
|
26
29
|
};
|
|
27
30
|
/**
|
|
28
31
|
* Agent-sent highlight fixtures for a live Pilot / auto session.
|
|
29
|
-
* Painted by
|
|
32
|
+
* Painted by `showPilotFixtures`; driven via IPC `op: "highlight"`.
|
|
30
33
|
* Mirrors demo stub surface: rings, todos, zoom, focus, device.
|
|
31
34
|
*/
|
|
32
35
|
export type PilotHighlightFixtures = {
|
|
@@ -40,7 +43,7 @@ export type PilotHighlightFixtures = {
|
|
|
40
43
|
todoTitle?: string;
|
|
41
44
|
/** Todo dock side. Default `right`. */
|
|
42
45
|
todoPos?: "left" | "right";
|
|
43
|
-
/** Presentation: `sequential` (default, arrow walkthrough) | `checklist` | `bullets`. Same as ctx.
|
|
46
|
+
/** Presentation: `sequential` (default, arrow walkthrough) | `checklist` | `bullets`. Same as ctx.todos(id, items, { style }). */
|
|
44
47
|
todoStyle?: TodoListStyle;
|
|
45
48
|
/** Multiple titled lists (FR/Scenarios/ACs, same as ctx.todoGroups) - replaces {@link todos} when set. */
|
|
46
49
|
todoGroups?: readonly WaygraphTodoGroupInput[];
|
|
@@ -78,8 +81,6 @@ export type PilotHighlightFixtures = {
|
|
|
78
81
|
titlePos?: BannerPos;
|
|
79
82
|
/** Banner UX: collision / hidden (same as `ctx.bannerUi`). */
|
|
80
83
|
bannerUi?: BannerUiOpts;
|
|
81
|
-
/** Alias of {@link todoUi} - the name `ctx.todoDockUi` uses. */
|
|
82
|
-
todoDockUi?: TodoDockUiOpts;
|
|
83
84
|
};
|
|
84
85
|
/**
|
|
85
86
|
* Paint (or clear) agent-authored highlight fixtures on the live page.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
import { buildTodoDock, resolveTodoDockUi } from "../../narration/todo-dock.js";
|
|
2
|
+
import { formatHighlightCaption } from "../../narration/style.js";
|
|
3
|
+
import { normalizeHighlightSize, normalizeHighlightTone, normalizeHighlightWeight } from "../../../engine/stub/ring.js";
|
|
4
|
+
import { resolveDeviceState } from "../../narration/device.js";
|
|
3
5
|
import { ensureInstalled } from "./shell.js";
|
|
4
|
-
import { verboseLog } from "
|
|
6
|
+
import { verboseLog } from "../../verbose-log.js";
|
|
7
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
5
8
|
/**
|
|
6
9
|
* Paint (or clear) agent-authored highlight fixtures on the live page.
|
|
7
10
|
* Multi-ring + optional todo strip + zoom/focus/device - the Pilot equivalent
|
|
@@ -44,7 +47,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
44
47
|
const todoPos = fixtures.todoPos === "left" ? "left" : "right";
|
|
45
48
|
const todoUi = resolveTodoDockUi(fixtures.todoUi ?? null);
|
|
46
49
|
// Real TodoDockState (groups/style), same builder the demo runner uses - not a flat string[]
|
|
47
|
-
// re-implementation, so a Block/agent that authors ctx.todoGroups()
|
|
50
|
+
// re-implementation, so a Block/agent that authors ctx.todoGroups() or a todos style looks the
|
|
48
51
|
// same on Pilot as it does in `waygraph demo`.
|
|
49
52
|
const todoDock = fixtures.clear
|
|
50
53
|
? undefined
|
|
@@ -84,31 +87,31 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
84
87
|
if (hit?.zoomOut !== undefined)
|
|
85
88
|
zoomOut = hit.zoomOut !== false;
|
|
86
89
|
}
|
|
87
|
-
// Device viewport - same
|
|
90
|
+
// Device viewport - same demo/overlay/device-stage.ts + inpage/device.ts every other surface uses
|
|
88
91
|
// (toast + persistent chip + touch mode), not a separate, simpler Pilot-only chip.
|
|
89
92
|
if (fixtures.clear === true) {
|
|
90
|
-
const { applyDeviceToPage } = await import("../
|
|
91
|
-
await applyDeviceToPage(page, undefined, "clear").catch(
|
|
93
|
+
const { applyDeviceToPage } = await import("../device-stage.js");
|
|
94
|
+
await applyDeviceToPage(page, undefined, "clear").catch(ignorePageGone);
|
|
92
95
|
}
|
|
93
96
|
else if (fixtures.device !== undefined) {
|
|
94
97
|
const d = resolveDeviceState(fixtures.device);
|
|
95
98
|
if (d) {
|
|
96
99
|
const [{ applyDeviceToPage }, { installDevice }] = await Promise.all([
|
|
97
|
-
import("../
|
|
98
|
-
import("../
|
|
100
|
+
import("../device-stage.js"),
|
|
101
|
+
import("../inpage/device-chip.js"),
|
|
99
102
|
]);
|
|
100
|
-
await page.evaluate(installDevice, {}).catch(
|
|
101
|
-
await applyDeviceToPage(page, d, "set").catch(
|
|
103
|
+
await page.evaluate(installDevice, {}).catch(ignorePageGone);
|
|
104
|
+
await applyDeviceToPage(page, d, "set").catch(ignorePageGone);
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
const bannerTitle = fixtures.clear ? undefined : fixtures.title;
|
|
105
108
|
const bannerPos = fixtures.clear ? undefined : fixtures.titlePos;
|
|
106
109
|
const bannerHidden = !!fixtures.clear || !!fixtures.bannerUi?.hidden;
|
|
107
110
|
const bannerCollision = fixtures.bannerUi?.collision !== false;
|
|
108
|
-
// Same #wg-banner installer the demo runner uses (
|
|
111
|
+
// Same #wg-banner installer the demo runner uses (demo/overlay/inpage/banner.ts) - not a separate
|
|
109
112
|
// re-implementation. `tag: "waygraph pilot"` is the only Pilot-specific bit.
|
|
110
113
|
if (bannerTitle !== undefined || bannerHidden) {
|
|
111
|
-
const { installBanner } = await import("../
|
|
114
|
+
const { installBanner } = await import("../inpage/banner.js");
|
|
112
115
|
await page
|
|
113
116
|
.evaluate(installBanner, {
|
|
114
117
|
title: bannerTitle,
|
|
@@ -116,7 +119,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
116
119
|
bannerUi: { hidden: bannerHidden, collision: bannerCollision, ...(bannerPos ? { pos: bannerPos } : {}) },
|
|
117
120
|
tag: "waygraph pilot",
|
|
118
121
|
})
|
|
119
|
-
.catch(
|
|
122
|
+
.catch(ignorePageGone);
|
|
120
123
|
}
|
|
121
124
|
// Resolve every ring's box (and the zoom target, if any) through Playwright's own locator, not a
|
|
122
125
|
// selector string handed to the page for a raw DOM querySelector to fail silently on - >>
|
|
@@ -185,9 +188,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
185
188
|
}
|
|
186
189
|
const zoomed = level > 1.001 || level < 0.999;
|
|
187
190
|
badge.dataset.zoomed = zoomed ? "1" : "0";
|
|
188
|
-
badge.
|
|
189
|
-
'<span class="wg-pilot-fx-zoom-ico"><svg viewBox="0 0 24 24" fill="none" stroke="#fde68a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg></span>' +
|
|
190
|
-
`<span class="wg-pilot-fx-zoom-val">${level.toFixed(2)}\u00d7</span>`;
|
|
191
|
+
__wgSet(badge, __wgEl("span", { class: "wg-pilot-fx-zoom-ico" }, __wgSvg('<svg viewBox="0 0 24 24" fill="none" stroke="#fde68a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg>')), __wgEl("span", { class: "wg-pilot-fx-zoom-val" }, level.toFixed(2) + "\u00d7"));
|
|
191
192
|
};
|
|
192
193
|
const clearZoom = () => {
|
|
193
194
|
// Undo any leftover CSS-scale from older Pilot zoom path.
|
|
@@ -217,7 +218,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
217
218
|
let painted = 0;
|
|
218
219
|
let focusBox = null;
|
|
219
220
|
// Paint through the SAME shared ring primitive the demo/auto singleton ring uses
|
|
220
|
-
// (window.__wgPaintRingAt, installed by
|
|
221
|
+
// (window.__wgPaintRingAt, installed by demo/overlay/inpage/core.ts's installCore - see
|
|
221
222
|
// ensureInstalled) - one ring implementation, not a separate DOM-building copy here.
|
|
222
223
|
rings.forEach((ring, i) => {
|
|
223
224
|
const box = ringBoxes[i];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HighlightTone } from "
|
|
1
|
+
import type { HighlightTone } from "../../../engine/stub/ring.js";
|
|
2
2
|
import type { BrowserContext, Page } from "@playwright/test";
|
|
3
3
|
/**
|
|
4
4
|
* Re-install the overlay shell on every navigation (about:blank, goto, etc.)
|
|
@@ -26,7 +26,7 @@ export declare function showPilotActivity(page: Page, text: string): Promise<voi
|
|
|
26
26
|
* JSON blob in a terminal. Real, direct user request.
|
|
27
27
|
*
|
|
28
28
|
* Reuses the real `#wg-ring`/`#wg-ring-label` elements + `WAYGRAPH_RING_CSS`
|
|
29
|
-
* (see `
|
|
29
|
+
* (see `demo/narration/index.ts`) - the exact same visual language `cli.ts`'s own demo
|
|
30
30
|
* stepper paints rings with, not a separate look-alike. Still a purpose-built
|
|
31
31
|
* renderer here (position/show/hide only, via plain `getBoundingClientRect` -
|
|
32
32
|
* no camera zoom/spotlight/todo-dock/pacing), since that whole engine still
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// Split out of the former 950-line pilot-overlay.ts (see src/ARCHITECTURE.md). Behavior unchanged.
|
|
2
1
|
import { SURFACE } from "../ui/tokens.js";
|
|
3
2
|
import { ensureShadowRoot, installShadowRoot } from "../ui/shadow.js";
|
|
4
|
-
import { verboseLog } from "
|
|
3
|
+
import { verboseLog } from "../../verbose-log.js";
|
|
4
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
5
5
|
// Real, direct user request: this overlay's own colors were an improvised
|
|
6
6
|
// purple/white scheme (#a78bfa / #1a1033) that didn't match anything else -
|
|
7
7
|
// "our design here seems like barely shares with the ui on the stepper
|
|
@@ -64,7 +64,7 @@ const OVERLAY_CSS = `
|
|
|
64
64
|
}
|
|
65
65
|
#wg-pilot-activity.wg-pilot-toast-show { opacity: 1; transform: translateY(0); }
|
|
66
66
|
/* Agent fixture rings (painted via the shared .wg-ring-el primitive, see ui/css/ring.css and
|
|
67
|
-
|
|
67
|
+
demo/overlay/inpage/core.ts's __wgPaintRingAt), #wg-pilot-fx-todos, #wg-ring/#wg-ring-label and
|
|
68
68
|
#wg-banner all come from the ONE shared bundle ensureShadowRoot installs (ui/css/*.css) - not
|
|
69
69
|
redefined here. */
|
|
70
70
|
/* Spotlight (demo focus:true) - dim page, cutout around target. */
|
|
@@ -96,16 +96,7 @@ function installPilotOverlayShell(css) {
|
|
|
96
96
|
if (__wgById("wg-pilot-overlay"))
|
|
97
97
|
return;
|
|
98
98
|
__wgCss(css, "wg-pilot-overlay-css");
|
|
99
|
-
const root =
|
|
100
|
-
root.id = "wg-pilot-overlay";
|
|
101
|
-
root.innerHTML =
|
|
102
|
-
'<div id="wg-pilot-badge">Waygraph Pilot</div>' +
|
|
103
|
-
'<div id="wg-pilot-panel">' +
|
|
104
|
-
'<div id="wg-pilot-panel-toggle"><button id="wg-pilot-view-current" class="wg-pilot-tab-active">Here</button>' +
|
|
105
|
-
'<button id="wg-pilot-view-graph">All nodes</button></div>' +
|
|
106
|
-
'<div id="wg-pilot-panel-current"></div>' +
|
|
107
|
-
'<div id="wg-pilot-panel-graph" style="display:none"></div>' +
|
|
108
|
-
"</div>";
|
|
99
|
+
const root = __wgEl("div", { id: "wg-pilot-overlay" }, __wgEl("div", { id: "wg-pilot-badge" }, "Waygraph Pilot"), __wgEl("div", { id: "wg-pilot-panel" }, __wgEl("div", { id: "wg-pilot-panel-toggle" }, __wgEl("button", { id: "wg-pilot-view-current", class: "wg-pilot-tab-active" }, "Here"), __wgEl("button", { id: "wg-pilot-view-graph" }, "All nodes")), __wgEl("div", { id: "wg-pilot-panel-current" }), __wgEl("div", { id: "wg-pilot-panel-graph", style: "display:none" })));
|
|
109
100
|
__wgAdd(root);
|
|
110
101
|
__wgById("wg-pilot-badge").addEventListener("click", () => {
|
|
111
102
|
__wgById("wg-pilot-panel").classList.toggle("wg-pilot-open");
|
|
@@ -150,16 +141,16 @@ export async function installPersistentPilotOverlay(context) {
|
|
|
150
141
|
/** Idempotent - safe to call before every update, matching narrate mode's own precedent. */
|
|
151
142
|
export async function ensureInstalled(page) {
|
|
152
143
|
await ensureShadowRoot(page);
|
|
153
|
-
await page.evaluate(installPilotOverlayShell, OVERLAY_CSS).catch(
|
|
144
|
+
await page.evaluate(installPilotOverlayShell, OVERLAY_CSS).catch(ignorePageGone);
|
|
154
145
|
// The shared ring primitive (__wgEnsureRingEl/__wgPaintRingAt) - so Pilot's fixture rings paint
|
|
155
146
|
// through the SAME implementation the demo/auto singleton ring uses (see ui/css/ring.css / this
|
|
156
147
|
// file's own header comment on redundancy), not a separate DOM-building copy.
|
|
157
|
-
const { installCore } = await import("../
|
|
158
|
-
await page.evaluate(installCore, {}).catch(
|
|
159
|
-
// Device toast/chip CSS (
|
|
148
|
+
const { installCore } = await import("../inpage/core.js");
|
|
149
|
+
await page.evaluate(installCore, {}).catch(ignorePageGone);
|
|
150
|
+
// Device toast/chip CSS (demo/overlay/overlay-css.ts's RUNNER_EXTRA_CSS) - same rules the demo runner
|
|
160
151
|
// uses, reused here (not re-authored) so a device fixture looks identical on Pilot.
|
|
161
|
-
const { RUNNER_EXTRA_CSS } = await import("../
|
|
162
|
-
await page.evaluate(([css, key]) => __wgCss(css, key), [RUNNER_EXTRA_CSS, "wg-runner-css"]).catch(
|
|
152
|
+
const { RUNNER_EXTRA_CSS } = await import("../overlay-css.js");
|
|
153
|
+
await page.evaluate(([css, key]) => __wgCss(css, key), [RUNNER_EXTRA_CSS, "wg-runner-css"]).catch(ignorePageGone);
|
|
163
154
|
}
|
|
164
155
|
/**
|
|
165
156
|
* Bottom-left transient toast, separate from the persistent bottom-right
|
|
@@ -187,7 +178,7 @@ export async function showPilotActivity(page, text) {
|
|
|
187
178
|
toast.classList.remove("wg-pilot-toast-show");
|
|
188
179
|
}, 2500);
|
|
189
180
|
}, text)
|
|
190
|
-
.catch(
|
|
181
|
+
.catch(ignorePageGone);
|
|
191
182
|
}
|
|
192
183
|
/**
|
|
193
184
|
* "browser-use"-style vision box: a ring drawn around the exact element
|
|
@@ -196,7 +187,7 @@ export async function showPilotActivity(page, text) {
|
|
|
196
187
|
* JSON blob in a terminal. Real, direct user request.
|
|
197
188
|
*
|
|
198
189
|
* Reuses the real `#wg-ring`/`#wg-ring-label` elements + `WAYGRAPH_RING_CSS`
|
|
199
|
-
* (see `
|
|
190
|
+
* (see `demo/narration/index.ts`) - the exact same visual language `cli.ts`'s own demo
|
|
200
191
|
* stepper paints rings with, not a separate look-alike. Still a purpose-built
|
|
201
192
|
* renderer here (position/show/hide only, via plain `getBoundingClientRect` -
|
|
202
193
|
* no camera zoom/spotlight/todo-dock/pacing), since that whole engine still
|
|
@@ -276,5 +267,5 @@ export async function showPilotVision(page, selector, label, tone = "auto") {
|
|
|
276
267
|
tag.style.opacity = "0";
|
|
277
268
|
}, 4_000);
|
|
278
269
|
}, { box, label, tone })
|
|
279
|
-
.catch(
|
|
270
|
+
.catch(ignorePageGone);
|
|
280
271
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Page } from "@playwright/test";
|
|
2
|
+
type Repaint = () => Promise<unknown>;
|
|
3
|
+
/** Repaints the page's overlay now, after any repaint already running (two never interleave). */
|
|
4
|
+
export declare function repaintOverlay(page: Page): Promise<void>;
|
|
5
|
+
/** Registers (or replaces) how this page's overlay repaints itself after a navigation. */
|
|
6
|
+
export declare function keepOverlayOnNavigation(page: Page, repaint: Repaint): void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ignorePageGone } from "../../engine/page-gone.js";
|
|
2
|
+
const repaints = new WeakMap();
|
|
3
|
+
const running = new WeakMap();
|
|
4
|
+
/** Repaints the page's overlay now, after any repaint already running (two never interleave). */
|
|
5
|
+
export function repaintOverlay(page) {
|
|
6
|
+
const next = (running.get(page) ?? Promise.resolve()).then(async () => {
|
|
7
|
+
await repaints.get(page)?.();
|
|
8
|
+
}).catch(ignorePageGone);
|
|
9
|
+
running.set(page, next);
|
|
10
|
+
return next;
|
|
11
|
+
}
|
|
12
|
+
/** Registers (or replaces) how this page's overlay repaints itself after a navigation. */
|
|
13
|
+
export function keepOverlayOnNavigation(page, repaint) {
|
|
14
|
+
const listening = repaints.has(page);
|
|
15
|
+
repaints.set(page, repaint);
|
|
16
|
+
if (listening)
|
|
17
|
+
return;
|
|
18
|
+
let settle;
|
|
19
|
+
page.on("load", () => {
|
|
20
|
+
clearTimeout(settle);
|
|
21
|
+
settle = setTimeout(() => void repaintOverlay(page), 80);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { WgBox, WgPage } from "../types.js";
|
|
2
|
+
import type { Locator } from "@playwright/test";
|
|
3
|
+
/**
|
|
4
|
+
* Scroll a locator into view for demo theater.
|
|
5
|
+
* Prefer CSS smooth scroll + scrollend wait. Do NOT call Playwright's
|
|
6
|
+
* scrollIntoViewIfNeeded first - that jumps instantly and makes the
|
|
7
|
+
* following smooth scroll a no-op (looks like a teleport), especially
|
|
8
|
+
* noticeable under --fast when dwell is shorter.
|
|
9
|
+
* Pass opts.instant=true only for skipTheater / blitz.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ensureLocatorInView(locator: Locator, opts: any): Promise<void>;
|
|
12
|
+
export declare function ensureSelectorInView(page: WgPage, selector: any, opts?: any): Promise<void>;
|
|
13
|
+
export declare function applyHighlightZoom(page: WgPage, selector: any, zoom: any, zoomOut: any): Promise<void>;
|
|
14
|
+
export declare function cycleHighlightRings(page: WgPage, highlights: any, gatesFast: any, opts: any): Promise<void>;
|
|
15
|
+
export declare function showRing(page: WgPage, box: WgBox, label: any, tone: any, style: any): Promise<void>;
|
|
16
|
+
/** 0-based stub index for Method fill/click todo advance; -1 if none. */
|
|
17
|
+
export declare function matchStubIndexForLocator(page: WgPage, locator: Locator, stubs: any): Promise<number>;
|
|
18
|
+
export declare function captionForLocator(page: WgPage, locator: Locator, stubs: any, fallback: any): Promise<{
|
|
19
|
+
label: any;
|
|
20
|
+
tone: string;
|
|
21
|
+
size: string;
|
|
22
|
+
weight: string;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function dwellMatchedStub(page: WgPage, locator: Locator, stubs: any, pacing: any): Promise<void>;
|
|
25
|
+
export declare function hideRing(page: WgPage): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* True if the engine's own narrate() (waygraph's public export, for a Block
|
|
28
|
+
* author explicitly captioning one action) JUST positioned the ring for
|
|
29
|
+
* THIS action, moments ago - the automatic per-fill/per-click narration
|
|
30
|
+
* below should not immediately overwrite an author's own explicit caption
|
|
31
|
+
* with its generic guess.
|
|
32
|
+
*/
|
|
33
|
+
export declare function wasJustNarrated(page: WgPage): Promise<boolean>;
|