waygraph 0.15.53 → 0.15.54

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.
Files changed (108) hide show
  1. package/dist/analysis/graph.d.ts +3 -0
  2. package/dist/auto-session/helpers.d.ts +10 -0
  3. package/dist/blocks-select.d.ts +3 -0
  4. package/dist/blocks-select.js +2 -0
  5. package/dist/config.d.ts +2 -0
  6. package/dist/core/blocks/api.d.ts +1 -0
  7. package/dist/core/blocks/method.d.ts +2 -0
  8. package/dist/core/blocks/method.js +1 -0
  9. package/dist/core/blocks/nav.d.ts +1 -0
  10. package/dist/core/blocks/page.d.ts +1 -0
  11. package/dist/core/branch-regression.d.ts +1 -0
  12. package/dist/core/compose.d.ts +1 -0
  13. package/dist/core/flow.d.ts +1 -0
  14. package/dist/core/map-builder.d.ts +8 -1
  15. package/dist/core/map-builder.js +1 -1
  16. package/dist/core/run-graph.d.ts +2 -0
  17. package/dist/core/run-graph.js +1 -0
  18. package/dist/errors.d.ts +1 -0
  19. package/dist/extensions.d.ts +1 -0
  20. package/dist/extensions.js +1 -0
  21. package/dist/highlights/demo-pace.d.ts +4 -0
  22. package/dist/highlights/demo-pace.js +4 -0
  23. package/dist/highlights/device.d.ts +2 -0
  24. package/dist/highlights/device.js +2 -0
  25. package/dist/highlights/types.d.ts +6 -0
  26. package/dist/session/auto-explore-run.js +6 -0
  27. package/dist/session/overlay-beacon.d.ts +7 -0
  28. package/dist/session/overlay-beacon.js +5 -0
  29. package/dist/session/pilot.d.ts +1 -0
  30. package/dist/traverse/coverage.d.ts +4 -0
  31. package/dist/traverse/coverage.js +3 -0
  32. package/dist/traverse/lease.d.ts +1 -0
  33. package/dist/traverse/lease.js +1 -0
  34. package/dist/traverse/run.d.ts +3 -0
  35. package/examples/routed-demo/src/flows/routed-demo-map.flow.ts +1 -1
  36. package/examples/routed-demo/src/flows/routed-demo.flow.ts +2 -2
  37. package/examples/saucedemo/README.md +11 -12
  38. package/examples/saucedemo/config/waygraph.config.ts +17 -0
  39. package/examples/saucedemo/docs/CONVENTION.md +1 -2
  40. package/examples/saucedemo/docs/HELPERS.md +1 -1
  41. package/examples/saucedemo/package-lock.json +10 -3
  42. package/examples/saucedemo/package.json +12 -29
  43. package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-cart.block.ts +0 -49
  44. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +22 -25
  45. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +0 -6
  46. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +38 -96
  47. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +1 -26
  48. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +1 -45
  49. package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +14 -77
  50. package/examples/saucedemo/src/flows/api-demo.flow.ts +17 -11
  51. package/examples/saucedemo/src/flows/cart-bulk.flow.ts +19 -14
  52. package/examples/saucedemo/src/flows/cart-continue.flow.ts +10 -8
  53. package/examples/saucedemo/src/flows/cart-mem.flow.ts +7 -7
  54. package/examples/saucedemo/src/flows/catalog-logout.flow.ts +13 -8
  55. package/examples/saucedemo/src/flows/checkout-then-browse-again.flow.ts +26 -48
  56. package/examples/saucedemo/src/flows/checkout.flow.ts +70 -86
  57. package/examples/saucedemo/src/flows/device-showcase.flow.ts +24 -25
  58. package/examples/saucedemo/src/flows/login.flow.ts +11 -18
  59. package/examples/saucedemo/src/flows/mem-stub-demo.flow.ts +9 -20
  60. package/examples/saucedemo/src/flows/shop.flow.ts +15 -20
  61. package/examples/saucedemo/src/flows/smoke.flow.ts +12 -27
  62. package/examples/saucedemo/src/flows/stub-on-error.flow.ts +24 -43
  63. package/examples/saucedemo/src/flows/viewer-blocked.flow.ts +26 -34
  64. package/examples/saucedemo/src/states/checkout.mem-stubs.ts +11 -0
  65. package/examples/saucedemo/src/stubs/device-showcase.ts +193 -0
  66. package/examples/saucedemo/src/stubs/login.ts +37 -0
  67. package/examples/saucedemo/tests/chain-flow-episodes.spec.ts +7 -9
  68. package/examples/saucedemo/tests/submit-login-branch.spec.ts +18 -5
  69. package/package.json +3 -2
  70. package/templates/quickstart/README.md +4 -7
  71. package/templates/quickstart/config/waygraph.config.ts +17 -0
  72. package/templates/quickstart/docs/CONVENTION.md +1 -2
  73. package/templates/quickstart/docs/HELPERS.md +1 -1
  74. package/templates/quickstart/package.json +14 -14
  75. package/templates/quickstart/src/blocks/SITE-MAP.md +14 -3
  76. package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +0 -49
  77. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +22 -25
  78. package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +0 -6
  79. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +38 -96
  80. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +1 -26
  81. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +1 -45
  82. package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +14 -77
  83. package/templates/quickstart/src/flows/api-demo.flow.ts +43 -0
  84. package/templates/quickstart/src/flows/cart-bulk.flow.ts +19 -14
  85. package/templates/quickstart/src/flows/cart-continue.flow.ts +10 -8
  86. package/templates/quickstart/src/flows/cart-mem.flow.ts +7 -7
  87. package/templates/quickstart/src/flows/catalog-logout.flow.ts +13 -8
  88. package/templates/quickstart/src/flows/checkout-then-browse-again.flow.ts +26 -48
  89. package/templates/quickstart/src/flows/checkout.flow.ts +70 -63
  90. package/templates/quickstart/src/flows/device-showcase.flow.ts +24 -25
  91. package/templates/quickstart/src/flows/login.flow.ts +11 -18
  92. package/templates/quickstart/src/flows/mem-stub-demo.flow.ts +12 -0
  93. package/templates/quickstart/src/flows/shop.flow.ts +15 -20
  94. package/templates/quickstart/src/flows/smoke.flow.ts +12 -27
  95. package/templates/quickstart/src/flows/stub-on-error.flow.ts +31 -0
  96. package/templates/quickstart/src/flows/viewer-blocked.flow.ts +26 -34
  97. package/templates/quickstart/src/states/checkout.mem-stubs.ts +11 -0
  98. package/templates/quickstart/src/stubs/device-showcase.ts +193 -0
  99. package/templates/quickstart/src/stubs/login.ts +37 -0
  100. package/templates/quickstart/tests/chain-flow.spec.ts +7 -10
  101. package/templates/skills/waygraph-convention.skill.md +1 -1
  102. package/examples/saucedemo/playwright.config.ts +0 -19
  103. package/examples/saucedemo/scripts/drive-auto-cli.mjs +0 -93
  104. package/examples/saucedemo/scripts/prove-add-to-cart-menu.mjs +0 -126
  105. package/examples/saucedemo/scripts/prove-auto-graph.mjs +0 -92
  106. package/examples/saucedemo/scripts/prove-wrong-login-runtime.mjs +0 -63
  107. package/templates/quickstart/playwright.config.ts +0 -14
  108. package/templates/quickstart/scripts/drive-auto-cli.mjs +0 -93
@@ -1,14 +0,0 @@
1
- import { defineConfig } from "@playwright/test";
2
-
3
- export default defineConfig({
4
- testDir: "./tests",
5
- fullyParallel: false,
6
- workers: 1,
7
- timeout: 30_000,
8
- reporter: [["list"], ["html", { open: "never" }]],
9
- use: {
10
- headless: true,
11
- baseURL: "https://www.saucedemo.com",
12
- trace: "retain-on-failure",
13
- },
14
- });
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Drive `waygraph auto --cli` through login -> add-all -> remove-all -> quit.
4
- * Waits for each Choose: prompt so picks are not sent early.
5
- *
6
- * Usage (from examples/saucedemo):
7
- * node scripts/drive-auto-cli.mjs
8
- */
9
- import { spawn } from "node:child_process";
10
- import { createInterface } from "node:readline";
11
- import { fileURLToPath } from "node:url";
12
- import { dirname, join } from "node:path";
13
-
14
- const root = join(dirname(fileURLToPath(import.meta.url)), "..");
15
- const waygraphBin = join(root, "../../bin/waygraph");
16
- const DATA =
17
- process.env.WAYGRAPH_DATA ??
18
- '{"saucedemo.credentials":{"username":"standard_user","password":"secret_sauce"}}';
19
-
20
- function pickByLabel(menuText, label) {
21
- const re = new RegExp(`\\[(\\d+)\\]\\s+${label.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}`);
22
- const m = menuText.match(re);
23
- if (!m) throw new Error(`menu missing "${label}"\n${menuText}`);
24
- return m[1];
25
- }
26
-
27
- async function main() {
28
- const child = spawn(waygraphBin, ["auto", "--cli", "--data", DATA, "."], {
29
- cwd: root,
30
- stdio: ["pipe", "pipe", "pipe"],
31
- env: process.env,
32
- });
33
-
34
- let buf = "";
35
- const dump = (chunk, stream) => {
36
- const s = chunk.toString();
37
- buf += s;
38
- process[stream].write(s);
39
- };
40
- child.stdout.on("data", (c) => dump(c, "stdout"));
41
- child.stderr.on("data", (c) => dump(c, "stderr"));
42
-
43
- const waitChoose = () =>
44
- new Promise((resolve, reject) => {
45
- const start = Date.now();
46
- const tick = () => {
47
- if (buf.includes("Choose:")) {
48
- const i = buf.lastIndexOf("Choose:");
49
- const slice = buf.slice(Math.max(0, i - 4000), i + 8);
50
- resolve(slice);
51
- return;
52
- }
53
- if (Date.now() - start > 120_000) {
54
- reject(new Error(`timeout waiting for Choose:\n${buf.slice(-2000)}`));
55
- return;
56
- }
57
- setTimeout(tick, 100);
58
- };
59
- tick();
60
- });
61
-
62
- const send = (line) => {
63
- console.error(`\n>> pick ${line.trim()}`);
64
- buf = buf.replace(/Choose:/g, "Choose(done):");
65
- child.stdin.write(line);
66
- };
67
-
68
- try {
69
- let menu = await waitChoose();
70
- send("1\n"); // submit-login
71
- menu = await waitChoose();
72
- if (!/LoggedIn|Add all to cart/.test(menu)) {
73
- throw new Error(`expected inventory after login, got:\n${menu}`);
74
- }
75
- send(`${pickByLabel(menu, "Add all to cart")}\n`);
76
- menu = await waitChoose();
77
- send(`${pickByLabel(menu, "Remove all from cart")}\n`);
78
- menu = await waitChoose();
79
- if (!/Add all to cart/.test(menu)) {
80
- throw new Error(`expected Add all again after remove-all, got:\n${menu}`);
81
- }
82
- send("q\n");
83
- const code = await new Promise((res) => child.on("exit", res));
84
- if (code !== 0 && code !== null) process.exitCode = code;
85
- else console.error("\ndrive-auto-cli: PASS login -> add-all -> remove-all -> quit");
86
- } catch (err) {
87
- console.error(err instanceof Error ? err.message : String(err));
88
- child.kill("SIGTERM");
89
- process.exitCode = 1;
90
- }
91
- }
92
-
93
- main();