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
package/dist/core/flow.d.ts
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import type { Block, Checkpoint } from "../types.js";
|
|
2
|
-
import type { RunGraphOptions } from "./run-graph.js";
|
|
3
|
-
import type { EngineConfig } from "./config.js";
|
|
4
|
-
import type { BrowserContext, Page } from "@playwright/test";
|
|
5
|
-
import { MemPage } from "../mem-page.js";
|
|
6
|
-
import type { Trait } from "../trait.js";
|
|
7
|
-
import type { DemoPace, HighlightStyleDefaults } from "../highlights.js";
|
|
8
|
-
/**
|
|
9
|
-
* A composed, runnable flow. Always begins from Checkpoint<"__start__">, same as
|
|
10
|
-
* runGraph's `entry`. `run(context, mem)` uses a context you already have (the
|
|
11
|
-
* usual case inside a `@playwright/test` file, via its `context` fixture) -
|
|
12
|
-
* there's no browser for this Flow to launch, so no config to pass. `run(mem,
|
|
13
|
-
* config?)` - no context - has the Engine launch and own its own browser for
|
|
14
|
-
* this one run instead, and closes it in `finally`; use this outside a
|
|
15
|
-
* Playwright test file, or when a flow genuinely needs its own browser instance
|
|
16
|
-
* rather than sharing the test's. `config` here overrides, per key, whatever
|
|
17
|
-
* `new Engine(...)` was constructed with - so one flow (module-level, imported
|
|
18
|
-
* by many specs) can still have every run choose its own `headless`/`slowMo`
|
|
19
|
-
* rather than being stuck with whatever the flow's own file happened to set.
|
|
20
|
-
*
|
|
21
|
-
* `withBlockVerify`/`modBlockVerify` do what {@link withVerify}/{@link modVerify}
|
|
22
|
-
* do for a single Block, one level up - a spec that only imports the finished
|
|
23
|
-
* Flow (not necessarily the individual Blocks it was built from) can still
|
|
24
|
-
* patch one Block's verify for just that call, without editing the flow's own
|
|
25
|
-
* file or hand-rebuilding its Block list. Addressed the same three ways
|
|
26
|
-
* `modVerify` already addresses a Trait - the Block reference itself
|
|
27
|
-
* (`LoginBlock`, imported like any other Block; typo-proof, refactor-safe,
|
|
28
|
-
* jump-to-definition works), a plain string name, or a numeric index into this
|
|
29
|
-
* Flow's Block list (position between `start`/`end`, 0-based) for a spec that
|
|
30
|
-
* genuinely doesn't have the Block imported and doesn't want to spell its
|
|
31
|
-
* name. A reference or string resolves by `.name` under the hood (a Block's
|
|
32
|
-
* own stable identity in this codebase, same as every error message elsewhere
|
|
33
|
-
* in this file already uses) rather than object identity - it stays
|
|
34
|
-
* resolvable even after an earlier patch already swapped that slot for a new
|
|
35
|
-
* object, since the name survives every `withVerify`/`modVerify` in the
|
|
36
|
-
* chain; an index is checked fresh against this Flow's current Block list
|
|
37
|
-
* each call, so it's still correct after a patch too. Returns a new Flow -
|
|
38
|
-
* the original is untouched, same as every other decorator in this module.
|
|
39
|
-
*/
|
|
40
|
-
/**
|
|
41
|
-
* One Block's identity as exposed by graph introspection - {@link Flow.blocks},
|
|
42
|
-
* {@link ComposedBlock.steps} - without needing to execute anything. Does not
|
|
43
|
-
* include the Block's literal Checkpoint `In`/`Out` tags: those are TypeScript
|
|
44
|
-
* literal types, erased at runtime, and can only be recovered by a build-time
|
|
45
|
-
* static-analysis tool reading the source's own type annotations - see the
|
|
46
|
-
* `graph-visualization` openspec change for that piece.
|
|
47
|
-
*/
|
|
48
|
-
export interface BlockInfo {
|
|
49
|
-
name: string;
|
|
50
|
-
/** `branch()`'s routing table, if this Block has one - see {@link Block.routes}. */
|
|
51
|
-
routes?: Readonly<Record<string, string | null>>;
|
|
52
|
-
/**
|
|
53
|
-
* True when {@link chainFlow} inserted a session-reset boundary
|
|
54
|
-
* immediately before this Block - i.e. this is the first Block of a
|
|
55
|
-
* sub-flow that was wrapped in {@link withSessionReset}, and it isn't
|
|
56
|
-
* the very first sub-flow in the chain. Absent (not just false) from
|
|
57
|
-
* `Flow.blocks()` on an ordinary, non-chained Flow.
|
|
58
|
-
*/
|
|
59
|
-
resetSessionBefore?: boolean;
|
|
60
|
-
/**
|
|
61
|
-
* The actual Block, re-runnable on its own via
|
|
62
|
-
* `engine.defineFlow([start, info.block, end])` - e.g. step-through
|
|
63
|
-
* tooling that runs a Flow's Blocks one at a time. Introspection that only
|
|
64
|
-
* wants to read the shape (a visualizer) can ignore this and use `name`/
|
|
65
|
-
* `routes` alone.
|
|
66
|
-
*/
|
|
67
|
-
block: Block<any, any>;
|
|
68
|
-
}
|
|
69
|
-
export interface Flow<Out extends Checkpoint<string>> {
|
|
70
|
-
/**
|
|
71
|
-
* True once this Flow has been wrapped in {@link withSessionReset} - a
|
|
72
|
-
* hint for `chainFlow`, not something `run()` itself checks: it marks
|
|
73
|
-
* this Flow as one that expects to start from a genuinely fresh,
|
|
74
|
-
* unauthenticated browser state (e.g. a login flow meant to be
|
|
75
|
-
* re-entered later in a longer chain). `chainFlow` clears cookies and
|
|
76
|
-
* storage right before this Flow's first Block runs, but only when this
|
|
77
|
-
* Flow isn't the very first thing in the chain (nothing to reset yet).
|
|
78
|
-
*/
|
|
79
|
-
readonly resetSession: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Set once this Flow has been wrapped in {@link withTitle} - a display
|
|
82
|
-
* hint for a step-through overlay/showcase (e.g. "Ticket #123"), not
|
|
83
|
-
* something `run()` itself uses.
|
|
84
|
-
*/
|
|
85
|
-
readonly title?: string;
|
|
86
|
-
/**
|
|
87
|
-
* Set once this Flow has been wrapped in {@link withExpectedFailure} - a
|
|
88
|
-
* display hint for a step-through overlay: this Flow is DESIGNED to throw
|
|
89
|
-
* (e.g. a blocked user's login attempt genuinely failing), not a bug in
|
|
90
|
-
* the demo itself. `run()` never reads this - the Flow still throws
|
|
91
|
-
* exactly as it would otherwise; only the overlay's error panel reads it,
|
|
92
|
-
* to show an informational "this is the point" panel instead of an
|
|
93
|
-
* alarming one indistinguishable from a real break.
|
|
94
|
-
*/
|
|
95
|
-
readonly expectedFailureReason?: string;
|
|
96
|
-
/**
|
|
97
|
-
* Set once this Flow has been wrapped in {@link withHighlightFixtures} -
|
|
98
|
-
* demo narration overrides (unlimited purposes on `.flow.ts`) keyed by
|
|
99
|
-
* block.name. `run()` never reads this; step/`demo` merges onto block stubs.
|
|
100
|
-
*/
|
|
101
|
-
readonly highlightFixtures?: import("../highlights.js").HighlightFixtureMap;
|
|
102
|
-
/**
|
|
103
|
-
* Demo pacing for this Flow's episode (`withDemoPace`).
|
|
104
|
-
* `run()` ignores; step/demo applies per Block in the episode.
|
|
105
|
-
*/
|
|
106
|
-
readonly demoPace?: import("../highlights.js").DemoPace;
|
|
107
|
-
/**
|
|
108
|
-
* Default highlight size/weight/tone for this Flow's episode (`withHighlightStyle`).
|
|
109
|
-
* Per-slot stub/fixture values win. `run()` ignores.
|
|
110
|
-
*/
|
|
111
|
-
readonly highlightStyle?: import("../highlights.js").HighlightStyleDefaults;
|
|
112
|
-
/**
|
|
113
|
-
* Set once this Flow has been wrapped in {@link withMemStub} - opts into
|
|
114
|
-
* auto-filling `requires` keys with registered fake values
|
|
115
|
-
* (`registerMemStub`, `src/mem-stub.ts`) instead of failing preflight when
|
|
116
|
-
* the caller didn't supply them. `run()` never reads this - the CLI's own
|
|
117
|
-
* `--data`/`--mem-stub` seeding, or a bare-library caller's own explicit
|
|
118
|
-
* `seedMemStub(mem, flow)` call, is what actually fills mem before `run()`.
|
|
119
|
-
*/
|
|
120
|
-
readonly memStub?: boolean;
|
|
121
|
-
/**
|
|
122
|
-
* This Flow's constituent Blocks, in order between `start`/`end`, as plain
|
|
123
|
-
* data - for introspection/visualization tools, without running anything.
|
|
124
|
-
* @example loginFlow.blocks() // [{ name: "login" }, { name: "add-to-cart", routes: {...} }]
|
|
125
|
-
*/
|
|
126
|
-
blocks(): readonly BlockInfo[];
|
|
127
|
-
run(context: BrowserContext, mem: MemPage): Promise<Out>;
|
|
128
|
-
/**
|
|
129
|
-
* `options.closeOnFinish: false` hands the driven page back instead of
|
|
130
|
-
* closing it - use this overload (a literal `false`, not a `boolean`) to
|
|
131
|
-
* get the `{ result, page }` shape typed correctly.
|
|
132
|
-
* @example const { result, page } = await loginFlow.run(context, mem, { closeOnFinish: false });
|
|
133
|
-
*/
|
|
134
|
-
run(context: BrowserContext, mem: MemPage, options: RunGraphOptions & {
|
|
135
|
-
closeOnFinish: false;
|
|
136
|
-
}): Promise<{
|
|
137
|
-
result: Out;
|
|
138
|
-
page: Page;
|
|
139
|
-
}>;
|
|
140
|
-
/**
|
|
141
|
-
* `options.page` drives that already-open page instead of opening a new
|
|
142
|
-
* one - see {@link RunGraphOptions}.
|
|
143
|
-
* @example await loginFlow.run(context, mem, { page: existingPage });
|
|
144
|
-
*/
|
|
145
|
-
run(context: BrowserContext, mem: MemPage, options?: RunGraphOptions): Promise<Out>;
|
|
146
|
-
run(mem: MemPage, config?: EngineConfig): Promise<Out>;
|
|
147
|
-
/**
|
|
148
|
-
* Replaces the given Block's whole verify list, wherever it sits in this
|
|
149
|
-
* Flow - same rules as {@link withVerify}. Throws if no Block in this Flow
|
|
150
|
-
* matches.
|
|
151
|
-
* @example checkoutFlow.withBlockVerify(LoginBlock, [])
|
|
152
|
-
* @example checkoutFlow.withBlockVerify("login", [])
|
|
153
|
-
* @example checkoutFlow.withBlockVerify(0, [])
|
|
154
|
-
*/
|
|
155
|
-
withBlockVerify(block: Block<any, any> | string | number, verify: Trait[] | ((out: any) => Trait[])): Flow<Out>;
|
|
156
|
-
/**
|
|
157
|
-
* Replaces one Trait inside the given Block's verify list - same rules as
|
|
158
|
-
* {@link modVerify}. Throws if no Block in this Flow matches, or if that
|
|
159
|
-
* Block has no verify trait at the given name/index.
|
|
160
|
-
* @example checkoutFlow.modBlockVerify(LoginBlock, "url-matches", Trait.url({ pathname: "/inventory.html" }))
|
|
161
|
-
*/
|
|
162
|
-
modBlockVerify(block: Block<any, any> | string | number, nameOrIndex: string | number, newCheck: Trait["check"] | Trait): Flow<Out>;
|
|
163
|
-
}
|
|
164
|
-
export declare function buildFlow<Out extends Checkpoint<string>>(middle: readonly Block<any, any>[], engineConfig: EngineConfig): Flow<Out>;
|
|
165
|
-
/**
|
|
166
|
-
* Marks a Flow as expecting to start from a genuinely fresh, unauthenticated
|
|
167
|
-
* browser state - e.g. a login flow meant to be re-entered later in a longer
|
|
168
|
-
* showcase. Non-destructive, same pattern as {@link withVerify}: returns a
|
|
169
|
-
* new Flow: the original is untouched, and the flag survives any further
|
|
170
|
-
* `withBlockVerify`/`modBlockVerify` patch applied to the result.
|
|
171
|
-
*
|
|
172
|
-
* By itself this does nothing - `Flow.run()` never reads `resetSession`.
|
|
173
|
-
* It's a hint {@link chainFlow} looks for: right before this Flow's first
|
|
174
|
-
* Block runs (skipped if it's the very first thing in the chain - nothing
|
|
175
|
-
* to reset yet), chainFlow clears cookies and storage so this Flow starts
|
|
176
|
-
* exactly as if a human had opened the app fresh, not wherever the
|
|
177
|
-
* previous Flow in the chain happened to leave the page.
|
|
178
|
-
* @example const loginFlow = withSessionReset(engine.defineFlow([start, LoginBlock, end]));
|
|
179
|
-
* @deprecated Use `map().flow(sub, { reset: true })`; the reset belongs to where flows are joined.
|
|
180
|
-
*/
|
|
181
|
-
export declare function withSessionReset<Out extends Checkpoint<string>>(flow: Flow<Out>): Flow<Out>;
|
|
182
|
-
/**
|
|
183
|
-
* Names a Flow for display - a step-through overlay/showcase (waygraph's
|
|
184
|
-
* `chain --step`) shows this as the running banner while this Flow's own
|
|
185
|
-
* Blocks are executing, instead of one fixed title for the whole run.
|
|
186
|
-
* Non-destructive, same pattern as {@link withSessionReset}.
|
|
187
|
-
* @example const ticket123 = withTitle(loginFlow, "Ticket #123 - Sales rep signs in");
|
|
188
|
-
* @deprecated Name a flow with `ctx.title(...)` in a stub on its first step.
|
|
189
|
-
*/
|
|
190
|
-
export declare function withTitle<Out extends Checkpoint<string>>(flow: Flow<Out>, title: string): Flow<Out>;
|
|
191
|
-
/**
|
|
192
|
-
* Opts this Flow into memStub: `requires` keys the caller didn't supply get
|
|
193
|
-
* filled from `registerMemStub`'s registry (`src/mem-stub.ts`) instead of
|
|
194
|
-
* failing preflight, for any key that has a registered fake generator - a
|
|
195
|
-
* required key with no registration still fails exactly as before.
|
|
196
|
-
* Non-destructive, same pattern as {@link withTitle}. `run()` never reads
|
|
197
|
-
* this itself - the CLI's `--data`/`--mem-stub` seeding, or a bare-library
|
|
198
|
-
* caller's own explicit `seedMemStub(mem, flow)` call, does the filling.
|
|
199
|
-
* @example const demoLogin = withMemStub(loginFlow);
|
|
200
|
-
* @deprecated Use `engine.map({ memStub: true })`.
|
|
201
|
-
*/
|
|
202
|
-
export declare function withMemStub<Out extends Checkpoint<string>>(flow: Flow<Out>): Flow<Out>;
|
|
203
|
-
/**
|
|
204
|
-
* Demo pacing for a whole Flow episode (fast review vs slow gap/wrong walkthrough).
|
|
205
|
-
* Non-destructive. `fastForwardComposeBlock` is always blitz for its own step;
|
|
206
|
-
* use this when an entire episode should be fast or slow.
|
|
207
|
-
* @example withDemoPace(withTitle(gapFlow, "Episode 2 - gaps"), "slow")
|
|
208
|
-
* @example withDemoPace(happyFlow, 0.5) // 2x faster than normal
|
|
209
|
-
* @example withDemoPace(gapFlow, 2.5) // 2.5x slower
|
|
210
|
-
* @example withDemoPace(gapFlow, 4500) // absolute ~4.5s gates/dwells
|
|
211
|
-
* @deprecated Use `engine.map({ demoPace })`, a step `{ pace }`, or `demo.pace` in the config.
|
|
212
|
-
*/
|
|
213
|
-
export declare function withDemoPace<Out extends Checkpoint<string>>(flow: Flow<Out>, pace: DemoPace): Flow<Out>;
|
|
214
|
-
/**
|
|
215
|
-
* Default highlight look for a Flow episode (size / weight / optional tone).
|
|
216
|
-
* Per-slot stub or {@link withHighlightFixtures} values win when set.
|
|
217
|
-
* @example withHighlightStyle(withDemoPace(gapFlow, "slow"), { size: "lg", weight: "bold" })
|
|
218
|
-
* @deprecated Use `engine.map({ highlightStyle })`.
|
|
219
|
-
*/
|
|
220
|
-
export declare function withHighlightStyle<Out extends Checkpoint<string>>(flow: Flow<Out>, style: HighlightStyleDefaults): Flow<Out>;
|
|
221
|
-
/**
|
|
222
|
-
* Demo pacing for one Block or compose unit (not FF - use fastForwardComposeBlock for blitz).
|
|
223
|
-
* @example withBlockPace(composeBlock("gap-review", [...]), "slow")
|
|
224
|
-
* @deprecated Use a step option: `.method(Block, { pace })`.
|
|
225
|
-
*/
|
|
226
|
-
export declare function withBlockPace<In extends Checkpoint<string>, Out extends Checkpoint<string>>(block: Block<In, Out>, pace: DemoPace): Block<In, Out>;
|
|
227
|
-
/**
|
|
228
|
-
* Marks a Flow as one that's SUPPOSED to throw - e.g. a locked-out user's
|
|
229
|
-
* login attempt genuinely failing, demonstrating the app's own real
|
|
230
|
-
* behavior rather than a bug in the demo. Non-destructive, same pattern as
|
|
231
|
-
* {@link withTitle}.
|
|
232
|
-
*
|
|
233
|
-
* By itself this changes nothing about how the Flow runs - it still throws
|
|
234
|
-
* Marks a Flow whose last step is an intentional product failure (demo overlay).
|
|
235
|
-
* Step mode shows stubOnError rings + an amber "expected outcome" panel when:
|
|
236
|
-
* - the last block **throws**, or
|
|
237
|
-
* - the last block **succeeds** on the fail branch (e.g. LoginPage + error banner
|
|
238
|
-
* after submit-login branched instead of throwing).
|
|
239
|
-
* Headless `run()` is unchanged - branching success returns the checkpoint.
|
|
240
|
-
* @example const viewerBlockedFlow = withExpectedFailure(
|
|
241
|
-
* engine.defineFlow([start, NavLoginBlock, SubmitLoginActionBlock, end]),
|
|
242
|
-
* "locked_out_user stays on LoginPage with the error banner - working as intended.",
|
|
243
|
-
* );
|
|
244
|
-
* @deprecated Use `engine.map({ expectedFailure: reason })`.
|
|
245
|
-
*/
|
|
246
|
-
export declare function withExpectedFailure<Out extends Checkpoint<string>>(flow: Flow<Out>, reason: string): Flow<Out>;
|
|
247
|
-
/**
|
|
248
|
-
* Attaches demo highlight fixtures to a Flow - unlimited purposes on `.flow.ts`
|
|
249
|
-
* (AC copy, BUG/GATE tags, detail) merged onto each block's stubBefore/stubAfter/
|
|
250
|
-
* stubOnError slots. Non-destructive, same pattern as {@link withTitle}.
|
|
251
|
-
* Demo/`chain --step` reads `flow.highlightFixtures`; `run()` ignores it.
|
|
252
|
-
* @example withHighlightFixtures(issueFlow, { "submit-login": { stubBefore: { email: { label: "AC-1" } } } })
|
|
253
|
-
* @deprecated Chain ctx stubs on the Block: `Block.stubAfter((ctx) => …)`.
|
|
254
|
-
*/
|
|
255
|
-
export declare function withHighlightFixtures<Out extends Checkpoint<string>>(flow: Flow<Out>, fixtures: import("../highlights.js").HighlightFixtureMap): Flow<Out>;
|
|
256
|
-
/** Everything a `with*` wrapper can set, given up front: `engine.defineFlow([...], { title, memStub, ... })`. */
|
|
257
|
-
export interface FlowOptions {
|
|
258
|
-
/** Shown as the banner while the Flow runs (`withTitle`). */
|
|
259
|
-
title?: string;
|
|
260
|
-
/** Fill missing `requires` keys from `registerMemStub` (`withMemStub`). */
|
|
261
|
-
memStub?: boolean;
|
|
262
|
-
/** Clear cookies and storage before this Flow's first Block when chained after another (`withSessionReset`). */
|
|
263
|
-
sessionReset?: boolean;
|
|
264
|
-
/** `withDemoPace`. */
|
|
265
|
-
demoPace?: DemoPace;
|
|
266
|
-
/** `withHighlightStyle`. */
|
|
267
|
-
highlightStyle?: HighlightStyleDefaults;
|
|
268
|
-
/** Marks a Flow that is supposed to throw, with the reason (`withExpectedFailure`). */
|
|
269
|
-
expectedFailure?: string;
|
|
270
|
-
}
|
|
271
|
-
/** Applies each set option through its `with*` wrapper, so both spellings produce the same Flow. */
|
|
272
|
-
export declare function applyFlowOptions<Out extends Checkpoint<string>>(flow: Flow<Out>, options: FlowOptions | undefined): Flow<Out>;
|
|
273
|
-
export declare function clearSessionState(context: BrowserContext, page: Page): Promise<void>;
|
|
274
|
-
/**
|
|
275
|
-
* Runs several complete, independent Flows one after another, reusing the
|
|
276
|
-
* same page/context/mem in order - each remains its own validated
|
|
277
|
-
* start-to-end unit (a Flow's own `[start, ...blocks, end]` contract is
|
|
278
|
-
* untouched), this only sequences whole Flows. Deliberately NOT the same
|
|
279
|
-
* thing as {@link composeBlock}: composeBlock nests several Blocks into
|
|
280
|
-
* one Block that can drop back into another `defineFlow([...])` - a
|
|
281
|
-
* chainFlow result is a Flow, but not meant to be nested inside another
|
|
282
|
-
* Flow's own Block list. Recursive nesting stays composeBlock's job alone;
|
|
283
|
-
* chainFlow is a flat, one-level sequencing of complete showcases (e.g.
|
|
284
|
-
* "ticket #123 end to end, then ticket #456 end to end").
|
|
285
|
-
*
|
|
286
|
-
* A sub-flow wrapped in {@link withSessionReset} gets its cookies/storage
|
|
287
|
-
* cleared right before it runs (skipped for the very first flow in the
|
|
288
|
-
* chain - nothing to reset yet). The combined result is whatever the LAST
|
|
289
|
-
* flow resolved to.
|
|
290
|
-
* @example chainFlow(ticket123Flow, ticket456Flow).run(context, mem)
|
|
291
|
-
* @deprecated Nest flows with `map().flow(a).flow(b, { reset: true })`.
|
|
292
|
-
*/
|
|
293
|
-
export declare function chainFlow(...flows: readonly Flow<any>[]): Flow<any>;
|