waygraph 0.15.50 → 0.15.52

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 (559) hide show
  1. package/dist/analysis/graph.d.ts +1 -1
  2. package/dist/analysis/graph.js +10 -15
  3. package/dist/analysis/map-check.js +5 -2
  4. package/dist/analysis/practices-check.d.ts +0 -1
  5. package/dist/analysis/practices-check.js +17 -17
  6. package/dist/auto-session/session.d.ts +1 -1
  7. package/dist/auto-session/session.js +14 -8
  8. package/dist/blocks-select.d.ts +7 -4
  9. package/dist/blocks-select.js +0 -14
  10. package/dist/browser.d.ts +27 -0
  11. package/dist/browser.js +62 -0
  12. package/dist/cli/run-chain.js +5 -0
  13. package/dist/cli/usage.js +14 -1
  14. package/dist/cli.js +10 -1
  15. package/dist/commands/agent-dive-scaffold.d.ts +5 -0
  16. package/dist/commands/agent-dive-scaffold.js +7 -0
  17. package/dist/commands/extensions.d.ts +1 -0
  18. package/dist/commands/extensions.js +22 -0
  19. package/dist/commands/init.js +45 -2
  20. package/dist/commands/test.js +16 -2
  21. package/dist/commands/try.js +2 -1
  22. package/dist/commands/upgrade.d.ts +6 -0
  23. package/dist/commands/upgrade.js +107 -0
  24. package/dist/config.d.ts +47 -3
  25. package/dist/config.js +45 -12
  26. package/dist/core/block.d.ts +12 -0
  27. package/dist/core/block.js +36 -0
  28. package/dist/core/blocks/effect.d.ts +0 -3
  29. package/dist/core/blocks/method.d.ts +0 -6
  30. package/dist/core/blocks/nav.d.ts +11 -3
  31. package/dist/core/blocks/nav.js +8 -0
  32. package/dist/core/blocks/page.d.ts +0 -3
  33. package/dist/core/config.d.ts +5 -0
  34. package/dist/core/engine.d.ts +17 -16
  35. package/dist/core/engine.js +3 -3
  36. package/dist/core/flow.d.ts +17 -0
  37. package/dist/core/flow.js +44 -24
  38. package/dist/core/map-builder.d.ts +3 -3
  39. package/dist/core/map-builder.js +3 -3
  40. package/dist/env-file.d.ts +7 -7
  41. package/dist/env-file.js +29 -16
  42. package/dist/extensions.d.ts +21 -0
  43. package/dist/extensions.js +178 -0
  44. package/dist/highlights/types.d.ts +3 -2
  45. package/dist/index.d.ts +8 -3
  46. package/dist/index.js +4 -1
  47. package/dist/pilot-overlay/overlay-fixtures.d.ts +0 -7
  48. package/dist/pilot-overlay/overlay-fixtures.js +0 -45
  49. package/dist/playwright-config.d.ts +4 -0
  50. package/dist/playwright-config.js +15 -0
  51. package/dist/playwright.config.d.ts +2 -0
  52. package/dist/playwright.config.js +6 -0
  53. package/dist/runner/demo-log.js +1 -7
  54. package/dist/runner/inpage/banner.js +10 -2
  55. package/dist/runner/inpage/core.d.ts +1 -1
  56. package/dist/runner/inpage/core.js +8 -7
  57. package/dist/runner/main.js +27 -15
  58. package/dist/runner/rings.js +0 -49
  59. package/dist/session/auto-explore-run.js +21 -6
  60. package/dist/session/auto-explore.js +6 -4
  61. package/dist/session/step-overlay.js +3 -1
  62. package/dist/traverse/run.js +4 -1
  63. package/dist/types.d.ts +0 -3
  64. package/dist/ui/components/ring.js +1 -0
  65. package/dist/ui/overlay.css +1 -0
  66. package/dist/ui/shadow.d.ts +1 -3
  67. package/dist/ui/shadow.js +0 -4
  68. package/dist/ui/tokens.d.ts +0 -11
  69. package/dist/ui/tokens.js +0 -5
  70. package/dist/video-dir.d.ts +8 -0
  71. package/dist/video-dir.js +60 -0
  72. package/dist/webserver.d.ts +14 -0
  73. package/dist/webserver.js +95 -0
  74. package/examples/routed-demo/package.json +3 -3
  75. package/examples/routed-demo/playwright.config.ts +8 -8
  76. package/examples/routed-demo/scripts/fixture-server.mjs +12 -31
  77. package/examples/routed-demo/src/map/(app_base)/dashboard/_sel.ts +1 -3
  78. package/examples/routed-demo/src/map/(external)/docs/_sel.ts +1 -3
  79. package/examples/routed-demo/src/pages/dashboard.html +1 -1
  80. package/examples/routed-demo/src/pages/docs.html +1 -1
  81. package/examples/saucedemo/playwright.config.ts +2 -3
  82. package/examples/saucedemo/scripts/prove-add-to-cart-menu.mjs +2 -1
  83. package/examples/saucedemo/scripts/prove-auto-graph.mjs +2 -1
  84. package/examples/saucedemo/scripts/prove-wrong-login-runtime.mjs +2 -1
  85. package/examples/saucedemo/tests/flow-block-verify.spec.ts +2 -7
  86. package/package.json +10 -2
  87. package/templates/quickstart/playwright.config.ts +0 -6
  88. package/templates/scaffold/README.md +7 -3
  89. package/templates/scaffold/STRUCTURE.md +8 -6
  90. package/templates/scaffold/config/waygraph.config.ts +26 -0
  91. package/templates/scaffold/package.json +9 -13
  92. package/templates/scaffold/src/flows/README.md +5 -5
  93. package/templates/scaffold/src/flows/example.flow.ts +31 -17
  94. package/templates/scaffold/src/flows/hoppscotch-auth.flow.ts +35 -0
  95. package/templates/scaffold/src/flows/hoppscotch-get.flow.ts +23 -0
  96. package/templates/scaffold/src/flows/hoppscotch-post.flow.ts +33 -0
  97. package/templates/scaffold/src/flows/mail-verify.flow.ts +36 -75
  98. package/templates/scaffold/src/flows/shop.flow.ts +41 -65
  99. package/templates/scaffold/src/map/(app_base)/docs/_nav.block.ts +0 -9
  100. package/templates/scaffold/src/map/(app_base)/docs/_page.block.ts +0 -5
  101. package/templates/scaffold/src/map/(app_base)/docs/_sel.ts +2 -3
  102. package/templates/scaffold/src/map/(app_base)/docs/{docs.html → index.html} +1 -1
  103. package/templates/scaffold/src/map/(app_base)/home/_methods/add-item.effect.block.ts +4 -21
  104. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-hello.method.block.ts +4 -30
  105. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-item-added.method.block.ts +2 -19
  106. package/templates/scaffold/src/map/(app_base)/home/_methods/clear-cart.method.block.ts +0 -17
  107. package/templates/scaffold/src/map/(app_base)/home/_methods/remove-item.effect.block.ts +3 -16
  108. package/templates/scaffold/src/map/(app_base)/home/_nav.block.ts +3 -14
  109. package/templates/scaffold/src/map/(app_base)/home/_page.block.ts +0 -9
  110. package/templates/scaffold/src/map/(app_base)/home/_sel.ts +4 -4
  111. package/templates/scaffold/src/map/(app_base)/home/nav-verification-link.block.ts +1 -23
  112. package/templates/scaffold/src/map/(app_base)/index.html +17 -0
  113. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-body.method.block.ts +21 -0
  114. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-header.method.block.ts +19 -0
  115. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-status.method.block.ts +20 -0
  116. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.ts +18 -0
  117. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-body.method.block.ts +21 -0
  118. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-headers.method.block.ts +21 -0
  119. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/send-request.method.block.ts +15 -0
  120. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-bearer-token.method.block.ts +20 -0
  121. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-headers.method.block.ts +23 -0
  122. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-json-body.method.block.ts +36 -0
  123. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-method.method.block.ts +17 -0
  124. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-query-params.method.block.ts +22 -0
  125. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-url.method.block.ts +18 -0
  126. package/templates/scaffold/src/map/(external)/hoppscotch/_nav.block.ts +11 -0
  127. package/templates/scaffold/src/map/(external)/hoppscotch/_page.block.ts +36 -0
  128. package/templates/scaffold/src/map/(external)/hoppscotch/_sel.ts +27 -0
  129. package/templates/scaffold/src/map/(external)/hoppscotch/settings/_nav.block.ts +10 -0
  130. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-content.method.block.ts +2 -27
  131. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-received.method.block.ts +2 -21
  132. package/templates/scaffold/src/map/(external)/mailpit/_methods/extract-email-link.method.block.ts +1 -19
  133. package/templates/scaffold/src/map/(external)/mailpit/_methods/open-message.method.block.ts +1 -11
  134. package/templates/scaffold/src/map/(external)/mailpit/_nav.block.ts +1 -9
  135. package/templates/scaffold/src/map/(external)/mailpit/_page.block.ts +0 -11
  136. package/templates/scaffold/src/states/demo.mem-keys.ts +20 -19
  137. package/templates/scaffold/src/states/demo.mem-stubs.ts +4 -0
  138. package/templates/scaffold/src/states/demo.states.ts +7 -1
  139. package/templates/scaffold/tests/README.md +3 -2
  140. package/templates/scaffold/tests/example.spec.ts +2 -3
  141. package/templates/scaffold/tests/hoppscotch.spec.ts +97 -0
  142. package/templates/scaffold/tests/mail-verify.spec.ts +2 -11
  143. package/templates/scaffold/tsconfig.json +1 -1
  144. package/templates/skills/waygraph-convention.skill.md +37 -6
  145. package/templates/skills/waygraph-pilot.skill.md +5 -6
  146. package/dist/runner/overlay-present.d.ts +0 -8
  147. package/dist/runner/overlay-present.js +0 -57
  148. package/dist/ui/components/banner.d.ts +0 -2
  149. package/dist/ui/components/banner.js +0 -10
  150. package/dist/ui/components/cursor.d.ts +0 -2
  151. package/dist/ui/components/cursor.js +0 -19
  152. package/examples/routed-demo/.waygraph-auto/4d4902b7.log +0 -0
  153. package/examples/routed-demo/.waygraph-auto/51ef462e.log +0 -0
  154. package/examples/routed-demo/.waygraph-auto/71527ad9.log +0 -0
  155. package/examples/routed-demo/.waygraph-auto/ca16778e.log +0 -0
  156. package/examples/routed-demo/scripts/with-fixture.mjs +0 -70
  157. package/examples/saucedemo/.waygraph-auto/00b0c55c.log +0 -22
  158. package/examples/saucedemo/.waygraph-auto/00d147d1.log +0 -21
  159. package/examples/saucedemo/.waygraph-auto/00e5d037.log +0 -5
  160. package/examples/saucedemo/.waygraph-auto/015be8f6.log +0 -6
  161. package/examples/saucedemo/.waygraph-auto/026e188e.log +0 -0
  162. package/examples/saucedemo/.waygraph-auto/02f7dd22.log +0 -20
  163. package/examples/saucedemo/.waygraph-auto/03df352d.log +0 -0
  164. package/examples/saucedemo/.waygraph-auto/0402cfcf.log +0 -6
  165. package/examples/saucedemo/.waygraph-auto/050e5b55.log +0 -0
  166. package/examples/saucedemo/.waygraph-auto/05d76fc3.log +0 -0
  167. package/examples/saucedemo/.waygraph-auto/062b581f.log +0 -20
  168. package/examples/saucedemo/.waygraph-auto/0681582b.log +0 -6
  169. package/examples/saucedemo/.waygraph-auto/07845ed1.log +0 -0
  170. package/examples/saucedemo/.waygraph-auto/07f3e964.log +0 -6
  171. package/examples/saucedemo/.waygraph-auto/0868ae4d.log +0 -0
  172. package/examples/saucedemo/.waygraph-auto/0924ddaa.log +0 -22
  173. package/examples/saucedemo/.waygraph-auto/092d6173.log +0 -5
  174. package/examples/saucedemo/.waygraph-auto/096fea05.log +0 -20
  175. package/examples/saucedemo/.waygraph-auto/09924510.log +0 -0
  176. package/examples/saucedemo/.waygraph-auto/0998c941.log +0 -21
  177. package/examples/saucedemo/.waygraph-auto/0a8c3719.log +0 -0
  178. package/examples/saucedemo/.waygraph-auto/0bf74300.log +0 -21
  179. package/examples/saucedemo/.waygraph-auto/0c01fd29.log +0 -4
  180. package/examples/saucedemo/.waygraph-auto/0c19e232.log +0 -5
  181. package/examples/saucedemo/.waygraph-auto/0c302590.log +0 -0
  182. package/examples/saucedemo/.waygraph-auto/0dee62d6.log +0 -5
  183. package/examples/saucedemo/.waygraph-auto/0eb4c081.log +0 -5
  184. package/examples/saucedemo/.waygraph-auto/0f0cb120.log +0 -0
  185. package/examples/saucedemo/.waygraph-auto/102c38ca.log +0 -0
  186. package/examples/saucedemo/.waygraph-auto/10fd431c.log +0 -0
  187. package/examples/saucedemo/.waygraph-auto/1122c13c.log +0 -0
  188. package/examples/saucedemo/.waygraph-auto/123d1cad.log +0 -5
  189. package/examples/saucedemo/.waygraph-auto/12ed8e28.log +0 -0
  190. package/examples/saucedemo/.waygraph-auto/13c6fe3c.log +0 -0
  191. package/examples/saucedemo/.waygraph-auto/1581b677.log +0 -0
  192. package/examples/saucedemo/.waygraph-auto/161cc8dd.log +0 -22
  193. package/examples/saucedemo/.waygraph-auto/164761a5.log +0 -6
  194. package/examples/saucedemo/.waygraph-auto/1905ceb2.log +0 -0
  195. package/examples/saucedemo/.waygraph-auto/1b1d55c6.log +0 -0
  196. package/examples/saucedemo/.waygraph-auto/1b80fd24.log +0 -6
  197. package/examples/saucedemo/.waygraph-auto/1bd7b7bf.log +0 -0
  198. package/examples/saucedemo/.waygraph-auto/1c30a3c2.log +0 -0
  199. package/examples/saucedemo/.waygraph-auto/1c58a174.log +0 -0
  200. package/examples/saucedemo/.waygraph-auto/1cb6f44c.log +0 -5
  201. package/examples/saucedemo/.waygraph-auto/1d90aa9a.log +0 -0
  202. package/examples/saucedemo/.waygraph-auto/1de7d889.log +0 -0
  203. package/examples/saucedemo/.waygraph-auto/1f233a4c.log +0 -6
  204. package/examples/saucedemo/.waygraph-auto/1fdb2100.log +0 -0
  205. package/examples/saucedemo/.waygraph-auto/20e66801.log +0 -0
  206. package/examples/saucedemo/.waygraph-auto/20e91af6.log +0 -5
  207. package/examples/saucedemo/.waygraph-auto/20ffdb77.log +0 -0
  208. package/examples/saucedemo/.waygraph-auto/22048fff.log +0 -4
  209. package/examples/saucedemo/.waygraph-auto/222d1d09.log +0 -0
  210. package/examples/saucedemo/.waygraph-auto/22f1a704.log +0 -5
  211. package/examples/saucedemo/.waygraph-auto/2324269a.log +0 -0
  212. package/examples/saucedemo/.waygraph-auto/232a1d81.log +0 -0
  213. package/examples/saucedemo/.waygraph-auto/239cced3.log +0 -20
  214. package/examples/saucedemo/.waygraph-auto/25204b46.log +0 -4
  215. package/examples/saucedemo/.waygraph-auto/2553d107.log +0 -0
  216. package/examples/saucedemo/.waygraph-auto/25e2e90f.log +0 -0
  217. package/examples/saucedemo/.waygraph-auto/2708455e.log +0 -22
  218. package/examples/saucedemo/.waygraph-auto/272a96fd.log +0 -20
  219. package/examples/saucedemo/.waygraph-auto/28d7be5d.log +0 -0
  220. package/examples/saucedemo/.waygraph-auto/2a577961.log +0 -0
  221. package/examples/saucedemo/.waygraph-auto/2a6a8266.log +0 -6
  222. package/examples/saucedemo/.waygraph-auto/2b3401cf.log +0 -20
  223. package/examples/saucedemo/.waygraph-auto/2b831907.log +0 -6
  224. package/examples/saucedemo/.waygraph-auto/2b9b56fc.log +0 -20
  225. package/examples/saucedemo/.waygraph-auto/2c79c73a.log +0 -0
  226. package/examples/saucedemo/.waygraph-auto/2c94a05b.log +0 -0
  227. package/examples/saucedemo/.waygraph-auto/2ceccd6d.log +0 -0
  228. package/examples/saucedemo/.waygraph-auto/2e2069e7.log +0 -0
  229. package/examples/saucedemo/.waygraph-auto/2e6bc35e.log +0 -6
  230. package/examples/saucedemo/.waygraph-auto/2efd1983.log +0 -0
  231. package/examples/saucedemo/.waygraph-auto/2f1b0c13.log +0 -6
  232. package/examples/saucedemo/.waygraph-auto/2f4f531e.log +0 -0
  233. package/examples/saucedemo/.waygraph-auto/2f8d4073.log +0 -6
  234. package/examples/saucedemo/.waygraph-auto/2fdbd916.log +0 -0
  235. package/examples/saucedemo/.waygraph-auto/30739278.log +0 -6
  236. package/examples/saucedemo/.waygraph-auto/30a5c848.log +0 -20
  237. package/examples/saucedemo/.waygraph-auto/31cb2e80.log +0 -0
  238. package/examples/saucedemo/.waygraph-auto/322d63cd.log +0 -0
  239. package/examples/saucedemo/.waygraph-auto/3239aa8a.log +0 -6
  240. package/examples/saucedemo/.waygraph-auto/326d87b7.log +0 -6
  241. package/examples/saucedemo/.waygraph-auto/331c6e8e.log +0 -0
  242. package/examples/saucedemo/.waygraph-auto/3351c0b6.log +0 -0
  243. package/examples/saucedemo/.waygraph-auto/33a50dc0.log +0 -0
  244. package/examples/saucedemo/.waygraph-auto/33df0770.log +0 -0
  245. package/examples/saucedemo/.waygraph-auto/340d624d.log +0 -0
  246. package/examples/saucedemo/.waygraph-auto/36367ccf.log +0 -0
  247. package/examples/saucedemo/.waygraph-auto/372536a5.log +0 -6
  248. package/examples/saucedemo/.waygraph-auto/37b56184.log +0 -0
  249. package/examples/saucedemo/.waygraph-auto/38f6799d.log +0 -0
  250. package/examples/saucedemo/.waygraph-auto/3a208bb8.log +0 -20
  251. package/examples/saucedemo/.waygraph-auto/3a412f3c.log +0 -0
  252. package/examples/saucedemo/.waygraph-auto/3a859bd7.log +0 -0
  253. package/examples/saucedemo/.waygraph-auto/3a8674d5.log +0 -6
  254. package/examples/saucedemo/.waygraph-auto/3bdb2f5a.log +0 -0
  255. package/examples/saucedemo/.waygraph-auto/3c1e5fe0.log +0 -22
  256. package/examples/saucedemo/.waygraph-auto/3cb0add7.log +0 -0
  257. package/examples/saucedemo/.waygraph-auto/3e3c0f3b.log +0 -0
  258. package/examples/saucedemo/.waygraph-auto/3e42f0d8.log +0 -0
  259. package/examples/saucedemo/.waygraph-auto/3f088138.log +0 -0
  260. package/examples/saucedemo/.waygraph-auto/401177a3.log +0 -0
  261. package/examples/saucedemo/.waygraph-auto/413d934d.log +0 -0
  262. package/examples/saucedemo/.waygraph-auto/4144071d.log +0 -0
  263. package/examples/saucedemo/.waygraph-auto/4176a3c6.log +0 -0
  264. package/examples/saucedemo/.waygraph-auto/41d0793d.log +0 -4
  265. package/examples/saucedemo/.waygraph-auto/41e6feae.log +0 -0
  266. package/examples/saucedemo/.waygraph-auto/424b4d5d.log +0 -0
  267. package/examples/saucedemo/.waygraph-auto/42e014d1.log +0 -0
  268. package/examples/saucedemo/.waygraph-auto/43253aba.log +0 -0
  269. package/examples/saucedemo/.waygraph-auto/432d09e3.log +0 -22
  270. package/examples/saucedemo/.waygraph-auto/438c6c53.log +0 -22
  271. package/examples/saucedemo/.waygraph-auto/4477db12.log +0 -0
  272. package/examples/saucedemo/.waygraph-auto/47247959.log +0 -0
  273. package/examples/saucedemo/.waygraph-auto/476cff76.log +0 -0
  274. package/examples/saucedemo/.waygraph-auto/4a1258b7.log +0 -0
  275. package/examples/saucedemo/.waygraph-auto/4ad09ece.log +0 -0
  276. package/examples/saucedemo/.waygraph-auto/4adcd179.log +0 -20
  277. package/examples/saucedemo/.waygraph-auto/4c9d9b16.log +0 -21
  278. package/examples/saucedemo/.waygraph-auto/4cebc228.log +0 -20
  279. package/examples/saucedemo/.waygraph-auto/4da39c36.log +0 -6
  280. package/examples/saucedemo/.waygraph-auto/4dbefa7e.log +0 -5
  281. package/examples/saucedemo/.waygraph-auto/4efa7035.log +0 -6
  282. package/examples/saucedemo/.waygraph-auto/505affdc.log +0 -4
  283. package/examples/saucedemo/.waygraph-auto/51bcb60a.log +0 -0
  284. package/examples/saucedemo/.waygraph-auto/527b6d76.log +0 -0
  285. package/examples/saucedemo/.waygraph-auto/5291bc78.log +0 -22
  286. package/examples/saucedemo/.waygraph-auto/535e8922.log +0 -0
  287. package/examples/saucedemo/.waygraph-auto/54274c39.log +0 -5
  288. package/examples/saucedemo/.waygraph-auto/5440ce7e.log +0 -0
  289. package/examples/saucedemo/.waygraph-auto/5738175f.log +0 -22
  290. package/examples/saucedemo/.waygraph-auto/573abedd.log +0 -0
  291. package/examples/saucedemo/.waygraph-auto/57ce5643.log +0 -22
  292. package/examples/saucedemo/.waygraph-auto/5984426b.log +0 -6
  293. package/examples/saucedemo/.waygraph-auto/5a682e7c.log +0 -22
  294. package/examples/saucedemo/.waygraph-auto/5b79320c.log +0 -21
  295. package/examples/saucedemo/.waygraph-auto/5b838485.log +0 -0
  296. package/examples/saucedemo/.waygraph-auto/5c55aaac.log +0 -21
  297. package/examples/saucedemo/.waygraph-auto/5d13bdde.log +0 -0
  298. package/examples/saucedemo/.waygraph-auto/5d285cd3.log +0 -0
  299. package/examples/saucedemo/.waygraph-auto/5ed00b16.log +0 -4
  300. package/examples/saucedemo/.waygraph-auto/60b9c066.log +0 -6
  301. package/examples/saucedemo/.waygraph-auto/610dd127.log +0 -0
  302. package/examples/saucedemo/.waygraph-auto/61105500.log +0 -5
  303. package/examples/saucedemo/.waygraph-auto/61333142.log +0 -5
  304. package/examples/saucedemo/.waygraph-auto/6134afe8.log +0 -20
  305. package/examples/saucedemo/.waygraph-auto/61937e83.log +0 -22
  306. package/examples/saucedemo/.waygraph-auto/625e7f65.log +0 -5
  307. package/examples/saucedemo/.waygraph-auto/62a0bdc9.log +0 -22
  308. package/examples/saucedemo/.waygraph-auto/6376fc15.log +0 -0
  309. package/examples/saucedemo/.waygraph-auto/63b0f4cd.log +0 -0
  310. package/examples/saucedemo/.waygraph-auto/6599cbca.log +0 -22
  311. package/examples/saucedemo/.waygraph-auto/6706ead4.log +0 -0
  312. package/examples/saucedemo/.waygraph-auto/67aaca30.log +0 -0
  313. package/examples/saucedemo/.waygraph-auto/685714af.log +0 -0
  314. package/examples/saucedemo/.waygraph-auto/68b10298.log +0 -0
  315. package/examples/saucedemo/.waygraph-auto/68be5e12.log +0 -0
  316. package/examples/saucedemo/.waygraph-auto/68df05a6.log +0 -22
  317. package/examples/saucedemo/.waygraph-auto/68fa0682.log +0 -0
  318. package/examples/saucedemo/.waygraph-auto/693f67c4.log +0 -20
  319. package/examples/saucedemo/.waygraph-auto/69ae030a.log +0 -6
  320. package/examples/saucedemo/.waygraph-auto/69e73f35.log +0 -6
  321. package/examples/saucedemo/.waygraph-auto/6b2333b0.log +0 -5
  322. package/examples/saucedemo/.waygraph-auto/6c4c3817.log +0 -0
  323. package/examples/saucedemo/.waygraph-auto/6c954911.log +0 -0
  324. package/examples/saucedemo/.waygraph-auto/6d65a439.log +0 -5
  325. package/examples/saucedemo/.waygraph-auto/6d700055.log +0 -0
  326. package/examples/saucedemo/.waygraph-auto/6ead848f.log +0 -0
  327. package/examples/saucedemo/.waygraph-auto/6f05bdc1.log +0 -0
  328. package/examples/saucedemo/.waygraph-auto/70279fc3.log +0 -0
  329. package/examples/saucedemo/.waygraph-auto/70c97639.log +0 -0
  330. package/examples/saucedemo/.waygraph-auto/72675b2d.log +0 -6
  331. package/examples/saucedemo/.waygraph-auto/731a14bd.log +0 -0
  332. package/examples/saucedemo/.waygraph-auto/733dd260.log +0 -5
  333. package/examples/saucedemo/.waygraph-auto/73a41843.log +0 -0
  334. package/examples/saucedemo/.waygraph-auto/75016486.log +0 -0
  335. package/examples/saucedemo/.waygraph-auto/752b01c6.log +0 -22
  336. package/examples/saucedemo/.waygraph-auto/75675227.log +0 -6
  337. package/examples/saucedemo/.waygraph-auto/756fd326.log +0 -20
  338. package/examples/saucedemo/.waygraph-auto/75e2e658.log +0 -0
  339. package/examples/saucedemo/.waygraph-auto/76128a2d.log +0 -0
  340. package/examples/saucedemo/.waygraph-auto/76ac1a86.log +0 -0
  341. package/examples/saucedemo/.waygraph-auto/77605295.log +0 -0
  342. package/examples/saucedemo/.waygraph-auto/7773a809.log +0 -0
  343. package/examples/saucedemo/.waygraph-auto/78043767.log +0 -20
  344. package/examples/saucedemo/.waygraph-auto/792671f4.log +0 -22
  345. package/examples/saucedemo/.waygraph-auto/796ab578.log +0 -0
  346. package/examples/saucedemo/.waygraph-auto/79915adb.log +0 -20
  347. package/examples/saucedemo/.waygraph-auto/7a398774.log +0 -6
  348. package/examples/saucedemo/.waygraph-auto/7a72f66e.log +0 -6
  349. package/examples/saucedemo/.waygraph-auto/7a984334.log +0 -4
  350. package/examples/saucedemo/.waygraph-auto/7b226350.log +0 -5
  351. package/examples/saucedemo/.waygraph-auto/7c6ee793.log +0 -20
  352. package/examples/saucedemo/.waygraph-auto/7c726dc4.log +0 -22
  353. package/examples/saucedemo/.waygraph-auto/7c72e8a5.log +0 -4
  354. package/examples/saucedemo/.waygraph-auto/7c99674f.log +0 -0
  355. package/examples/saucedemo/.waygraph-auto/7dbee625.log +0 -22
  356. package/examples/saucedemo/.waygraph-auto/7df66956.log +0 -0
  357. package/examples/saucedemo/.waygraph-auto/7e053160.log +0 -0
  358. package/examples/saucedemo/.waygraph-auto/7e8a6b62.log +0 -0
  359. package/examples/saucedemo/.waygraph-auto/7effd5b2.log +0 -20
  360. package/examples/saucedemo/.waygraph-auto/7f1b4864.log +0 -0
  361. package/examples/saucedemo/.waygraph-auto/7f94fd02.log +0 -0
  362. package/examples/saucedemo/.waygraph-auto/7fcb512f.log +0 -22
  363. package/examples/saucedemo/.waygraph-auto/7fdd47ee.log +0 -2
  364. package/examples/saucedemo/.waygraph-auto/802a0b5b.log +0 -0
  365. package/examples/saucedemo/.waygraph-auto/80322e0b.log +0 -0
  366. package/examples/saucedemo/.waygraph-auto/80a4978e.log +0 -6
  367. package/examples/saucedemo/.waygraph-auto/81257bf0.log +0 -0
  368. package/examples/saucedemo/.waygraph-auto/81cfe480.log +0 -22
  369. package/examples/saucedemo/.waygraph-auto/832f5add.log +0 -0
  370. package/examples/saucedemo/.waygraph-auto/8337b6ad.log +0 -0
  371. package/examples/saucedemo/.waygraph-auto/8481aa1c.log +0 -0
  372. package/examples/saucedemo/.waygraph-auto/8493928e.log +0 -0
  373. package/examples/saucedemo/.waygraph-auto/849ed45d.log +0 -0
  374. package/examples/saucedemo/.waygraph-auto/84dc6480.log +0 -6
  375. package/examples/saucedemo/.waygraph-auto/853bde43.log +0 -0
  376. package/examples/saucedemo/.waygraph-auto/8598b4c0.log +0 -0
  377. package/examples/saucedemo/.waygraph-auto/859a261d.log +0 -0
  378. package/examples/saucedemo/.waygraph-auto/86350ea6.log +0 -22
  379. package/examples/saucedemo/.waygraph-auto/86bb598a.log +0 -0
  380. package/examples/saucedemo/.waygraph-auto/86d09876.log +0 -22
  381. package/examples/saucedemo/.waygraph-auto/878ad01b.log +0 -4
  382. package/examples/saucedemo/.waygraph-auto/87c88ba5.log +0 -0
  383. package/examples/saucedemo/.waygraph-auto/87cb80ff.log +0 -0
  384. package/examples/saucedemo/.waygraph-auto/880b2e78.log +0 -6
  385. package/examples/saucedemo/.waygraph-auto/88527936.log +0 -5
  386. package/examples/saucedemo/.waygraph-auto/88eda676.log +0 -0
  387. package/examples/saucedemo/.waygraph-auto/893023ea.log +0 -5
  388. package/examples/saucedemo/.waygraph-auto/89416718.log +0 -0
  389. package/examples/saucedemo/.waygraph-auto/8996a857.log +0 -6
  390. package/examples/saucedemo/.waygraph-auto/8a08b68d.log +0 -6
  391. package/examples/saucedemo/.waygraph-auto/8a64ba0f.log +0 -6
  392. package/examples/saucedemo/.waygraph-auto/8b1cc2aa.log +0 -6
  393. package/examples/saucedemo/.waygraph-auto/8b73d13e.log +0 -6
  394. package/examples/saucedemo/.waygraph-auto/8be93021.log +0 -0
  395. package/examples/saucedemo/.waygraph-auto/8d960d31.log +0 -1
  396. package/examples/saucedemo/.waygraph-auto/8d9e5cd2.log +0 -21
  397. package/examples/saucedemo/.waygraph-auto/8e12e34f.log +0 -22
  398. package/examples/saucedemo/.waygraph-auto/8ec7d260.log +0 -0
  399. package/examples/saucedemo/.waygraph-auto/8ed43279.log +0 -0
  400. package/examples/saucedemo/.waygraph-auto/93acae32.log +0 -5
  401. package/examples/saucedemo/.waygraph-auto/94221b2b.log +0 -0
  402. package/examples/saucedemo/.waygraph-auto/96321a08.log +0 -0
  403. package/examples/saucedemo/.waygraph-auto/9742b6c2.log +0 -6
  404. package/examples/saucedemo/.waygraph-auto/9761c4c4.log +0 -6
  405. package/examples/saucedemo/.waygraph-auto/976394cd.log +0 -20
  406. package/examples/saucedemo/.waygraph-auto/982138cf.log +0 -0
  407. package/examples/saucedemo/.waygraph-auto/99cc93eb.log +0 -6
  408. package/examples/saucedemo/.waygraph-auto/9a26134c.log +0 -20
  409. package/examples/saucedemo/.waygraph-auto/9cbfbedc.log +0 -0
  410. package/examples/saucedemo/.waygraph-auto/9d827954.log +0 -20
  411. package/examples/saucedemo/.waygraph-auto/9dc147d2.log +0 -22
  412. package/examples/saucedemo/.waygraph-auto/9dd78c5e.log +0 -0
  413. package/examples/saucedemo/.waygraph-auto/a1ab5d29.log +0 -0
  414. package/examples/saucedemo/.waygraph-auto/a215a395.log +0 -22
  415. package/examples/saucedemo/.waygraph-auto/a23b7086.log +0 -4
  416. package/examples/saucedemo/.waygraph-auto/a35bd5ec.log +0 -0
  417. package/examples/saucedemo/.waygraph-auto/a4b36275.log +0 -0
  418. package/examples/saucedemo/.waygraph-auto/a4f8d355.log +0 -20
  419. package/examples/saucedemo/.waygraph-auto/a68995e9.log +0 -22
  420. package/examples/saucedemo/.waygraph-auto/a6e4f936.log +0 -22
  421. package/examples/saucedemo/.waygraph-auto/a7da862b.log +0 -0
  422. package/examples/saucedemo/.waygraph-auto/a82e2a48.log +0 -0
  423. package/examples/saucedemo/.waygraph-auto/a8645294.log +0 -0
  424. package/examples/saucedemo/.waygraph-auto/a94738b7.log +0 -0
  425. package/examples/saucedemo/.waygraph-auto/a952eb91.log +0 -0
  426. package/examples/saucedemo/.waygraph-auto/a9559653.log +0 -5
  427. package/examples/saucedemo/.waygraph-auto/aa1beafb.log +0 -0
  428. package/examples/saucedemo/.waygraph-auto/aa226dd0.log +0 -22
  429. package/examples/saucedemo/.waygraph-auto/aa478de2.log +0 -0
  430. package/examples/saucedemo/.waygraph-auto/aa7323f8.log +0 -20
  431. package/examples/saucedemo/.waygraph-auto/aaae4fb0.log +0 -20
  432. package/examples/saucedemo/.waygraph-auto/ac350fc7.log +0 -20
  433. package/examples/saucedemo/.waygraph-auto/ac5dde3d.log +0 -0
  434. package/examples/saucedemo/.waygraph-auto/acc1b63a.log +0 -0
  435. package/examples/saucedemo/.waygraph-auto/ad0bfad9.log +0 -5
  436. package/examples/saucedemo/.waygraph-auto/ad12d191.log +0 -0
  437. package/examples/saucedemo/.waygraph-auto/ae3a9b06.log +0 -0
  438. package/examples/saucedemo/.waygraph-auto/af2fae12.log +0 -0
  439. package/examples/saucedemo/.waygraph-auto/b04638f4.log +0 -6
  440. package/examples/saucedemo/.waygraph-auto/b0752c49.log +0 -0
  441. package/examples/saucedemo/.waygraph-auto/b14811d7.log +0 -6
  442. package/examples/saucedemo/.waygraph-auto/b2d2dbb2.log +0 -22
  443. package/examples/saucedemo/.waygraph-auto/b3d172f3.log +0 -0
  444. package/examples/saucedemo/.waygraph-auto/b48863e5.log +0 -22
  445. package/examples/saucedemo/.waygraph-auto/b5569336.log +0 -0
  446. package/examples/saucedemo/.waygraph-auto/b56968e1.log +0 -6
  447. package/examples/saucedemo/.waygraph-auto/b57921c5.log +0 -0
  448. package/examples/saucedemo/.waygraph-auto/b64e0620.log +0 -20
  449. package/examples/saucedemo/.waygraph-auto/b75168f7.log +0 -1
  450. package/examples/saucedemo/.waygraph-auto/b86a6218.log +0 -6
  451. package/examples/saucedemo/.waygraph-auto/b8e9e956.log +0 -22
  452. package/examples/saucedemo/.waygraph-auto/b9ab0983.log +0 -0
  453. package/examples/saucedemo/.waygraph-auto/b9b310ff.log +0 -21
  454. package/examples/saucedemo/.waygraph-auto/bb0e0e46.log +0 -0
  455. package/examples/saucedemo/.waygraph-auto/bc111745.log +0 -22
  456. package/examples/saucedemo/.waygraph-auto/bf7a77a2.log +0 -0
  457. package/examples/saucedemo/.waygraph-auto/bf85a598.log +0 -0
  458. package/examples/saucedemo/.waygraph-auto/bf8693e7.log +0 -0
  459. package/examples/saucedemo/.waygraph-auto/c0d6f353.log +0 -21
  460. package/examples/saucedemo/.waygraph-auto/c0febcf2.log +0 -20
  461. package/examples/saucedemo/.waygraph-auto/c4c52998.log +0 -6
  462. package/examples/saucedemo/.waygraph-auto/c52bac6d.log +0 -0
  463. package/examples/saucedemo/.waygraph-auto/c60cc55e.log +0 -0
  464. package/examples/saucedemo/.waygraph-auto/c809ceb4.log +0 -22
  465. package/examples/saucedemo/.waygraph-auto/c851cc53.log +0 -6
  466. package/examples/saucedemo/.waygraph-auto/c8987b67.log +0 -0
  467. package/examples/saucedemo/.waygraph-auto/c9d76e32.log +0 -0
  468. package/examples/saucedemo/.waygraph-auto/ca6de7e7.log +0 -0
  469. package/examples/saucedemo/.waygraph-auto/ca8561bc.log +0 -0
  470. package/examples/saucedemo/.waygraph-auto/cae91469.log +0 -0
  471. package/examples/saucedemo/.waygraph-auto/cb05d223.log +0 -0
  472. package/examples/saucedemo/.waygraph-auto/cb86d45b.log +0 -0
  473. package/examples/saucedemo/.waygraph-auto/cb9a1978.log +0 -6
  474. package/examples/saucedemo/.waygraph-auto/cbbc689c.log +0 -6
  475. package/examples/saucedemo/.waygraph-auto/cc989184.log +0 -20
  476. package/examples/saucedemo/.waygraph-auto/cd88364b.log +0 -0
  477. package/examples/saucedemo/.waygraph-auto/cd919e1d.log +0 -0
  478. package/examples/saucedemo/.waygraph-auto/ce584949.log +0 -5
  479. package/examples/saucedemo/.waygraph-auto/cf34b895.log +0 -2
  480. package/examples/saucedemo/.waygraph-auto/cfff9eef.log +0 -20
  481. package/examples/saucedemo/.waygraph-auto/d0f59b21.log +0 -4
  482. package/examples/saucedemo/.waygraph-auto/d1195079.log +0 -20
  483. package/examples/saucedemo/.waygraph-auto/d2ef067a.log +0 -5
  484. package/examples/saucedemo/.waygraph-auto/d37719a6.log +0 -0
  485. package/examples/saucedemo/.waygraph-auto/d425471f.log +0 -6
  486. package/examples/saucedemo/.waygraph-auto/d4afe93f.log +0 -5
  487. package/examples/saucedemo/.waygraph-auto/d50e58f0.log +0 -0
  488. package/examples/saucedemo/.waygraph-auto/d5293921.log +0 -0
  489. package/examples/saucedemo/.waygraph-auto/d62a22c2.log +0 -21
  490. package/examples/saucedemo/.waygraph-auto/d6d1761f.log +0 -22
  491. package/examples/saucedemo/.waygraph-auto/d6d5f411.log +0 -22
  492. package/examples/saucedemo/.waygraph-auto/d6df2771.log +0 -6
  493. package/examples/saucedemo/.waygraph-auto/d7075012.log +0 -21
  494. package/examples/saucedemo/.waygraph-auto/d846cd78.log +0 -0
  495. package/examples/saucedemo/.waygraph-auto/d934da78.log +0 -0
  496. package/examples/saucedemo/.waygraph-auto/d9ddc297.log +0 -0
  497. package/examples/saucedemo/.waygraph-auto/da0a06bf.log +0 -0
  498. package/examples/saucedemo/.waygraph-auto/da6ebb31.log +0 -0
  499. package/examples/saucedemo/.waygraph-auto/db4ac845.log +0 -0
  500. package/examples/saucedemo/.waygraph-auto/db6d7774.log +0 -0
  501. package/examples/saucedemo/.waygraph-auto/db81ba7d.log +0 -0
  502. package/examples/saucedemo/.waygraph-auto/db839827.log +0 -5
  503. package/examples/saucedemo/.waygraph-auto/dc58eb72.log +0 -0
  504. package/examples/saucedemo/.waygraph-auto/dddd057c.log +0 -20
  505. package/examples/saucedemo/.waygraph-auto/dde5e859.log +0 -22
  506. package/examples/saucedemo/.waygraph-auto/ddf975e6.log +0 -0
  507. package/examples/saucedemo/.waygraph-auto/de8cac58.log +0 -0
  508. package/examples/saucedemo/.waygraph-auto/de8cb83d.log +0 -6
  509. package/examples/saucedemo/.waygraph-auto/ded5511a.log +0 -6
  510. package/examples/saucedemo/.waygraph-auto/dedfcb18.log +0 -0
  511. package/examples/saucedemo/.waygraph-auto/def4d9b1.log +0 -0
  512. package/examples/saucedemo/.waygraph-auto/e03cfd8e.log +0 -0
  513. package/examples/saucedemo/.waygraph-auto/e1549e40.log +0 -0
  514. package/examples/saucedemo/.waygraph-auto/e1b0676d.log +0 -21
  515. package/examples/saucedemo/.waygraph-auto/e230f24e.log +0 -0
  516. package/examples/saucedemo/.waygraph-auto/e5111463.log +0 -0
  517. package/examples/saucedemo/.waygraph-auto/e5127c03.log +0 -22
  518. package/examples/saucedemo/.waygraph-auto/e5fc1d7c.log +0 -5
  519. package/examples/saucedemo/.waygraph-auto/e6fd2202.log +0 -0
  520. package/examples/saucedemo/.waygraph-auto/eb38d92e.log +0 -22
  521. package/examples/saucedemo/.waygraph-auto/edaa806d.log +0 -0
  522. package/examples/saucedemo/.waygraph-auto/edaf33de.log +0 -0
  523. package/examples/saucedemo/.waygraph-auto/edd40cbb.log +0 -20
  524. package/examples/saucedemo/.waygraph-auto/eddfbffc.log +0 -6
  525. package/examples/saucedemo/.waygraph-auto/ee86203e.log +0 -0
  526. package/examples/saucedemo/.waygraph-auto/ee9fa1ad.log +0 -5
  527. package/examples/saucedemo/.waygraph-auto/ef319474.log +0 -22
  528. package/examples/saucedemo/.waygraph-auto/f1f38eeb.log +0 -22
  529. package/examples/saucedemo/.waygraph-auto/f24b2915.log +0 -0
  530. package/examples/saucedemo/.waygraph-auto/f28eee8d.log +0 -0
  531. package/examples/saucedemo/.waygraph-auto/f2943898.log +0 -0
  532. package/examples/saucedemo/.waygraph-auto/f33bde90.log +0 -0
  533. package/examples/saucedemo/.waygraph-auto/f43de83c.log +0 -0
  534. package/examples/saucedemo/.waygraph-auto/f6ba7cb4.log +0 -6
  535. package/examples/saucedemo/.waygraph-auto/f7ac4d62.log +0 -20
  536. package/examples/saucedemo/.waygraph-auto/f86224c6.log +0 -0
  537. package/examples/saucedemo/.waygraph-auto/f929bb79.log +0 -0
  538. package/examples/saucedemo/.waygraph-auto/f92d4c6c.log +0 -22
  539. package/examples/saucedemo/.waygraph-auto/f92faf40.log +0 -5
  540. package/examples/saucedemo/.waygraph-auto/fa784369.log +0 -21
  541. package/examples/saucedemo/.waygraph-auto/fb55f723.log +0 -20
  542. package/examples/saucedemo/.waygraph-auto/fba3b738.log +0 -0
  543. package/examples/saucedemo/.waygraph-auto/fc917c18.log +0 -0
  544. package/examples/saucedemo/.waygraph-auto/fdf66b74.log +0 -0
  545. package/examples/saucedemo/.waygraph-auto/fe83305d.log +0 -0
  546. package/examples/saucedemo/.waygraph-auto/ff616932.log +0 -0
  547. package/examples/saucedemo/.waygraph-auto/ffdf2854.log +0 -6
  548. package/examples/saucedemo/scripts/capture-auto-headful.mjs +0 -120
  549. package/examples/saucedemo/scripts/capture-wrong-login.mjs +0 -141
  550. package/examples/saucedemo/scripts/demo-device-presets.mjs +0 -188
  551. package/examples/saucedemo/scripts/demo-orientation-gestures-video.mjs +0 -262
  552. package/examples/saucedemo/scripts/show-add-to-cart-menu.mjs +0 -123
  553. package/examples/saucedemo/scripts/show-auto-menu.mjs +0 -72
  554. package/templates/scaffold/playwright.config.ts +0 -28
  555. package/templates/scaffold/scripts/README.md +0 -13
  556. package/templates/scaffold/scripts/fixture-server.mjs +0 -50
  557. package/templates/scaffold/scripts/with-fixture.mjs +0 -69
  558. package/templates/scaffold/test-results/.last-run.json +0 -4
  559. /package/templates/scaffold/src/map/(app_base)/home/{home.html → index.html} +0 -0
@@ -1,7 +1,5 @@
1
1
  import { defineConfig } from "@playwright/test";
2
-
3
- const PORT = process.env.WAYGRAPH_FIXTURE_PORT || "4277";
4
- const HOST = process.env.WAYGRAPH_FIXTURE_HOST || "127.0.0.1";
2
+ import { chromiumExecutablePath } from "waygraph";
5
3
 
6
4
  export default defineConfig({
7
5
  testDir: "./tests",
@@ -9,13 +7,15 @@ export default defineConfig({
9
7
  workers: 1,
10
8
  timeout: 30_000,
11
9
  reporter: [["list"], ["html", { open: "never" }]],
10
+ webServer: {
11
+ command: "node scripts/fixture-server.mjs",
12
+ url: "http://127.0.0.1:4277/dashboard",
13
+ reuseExistingServer: !process.env.CI,
14
+ },
12
15
  use: {
13
16
  headless: true,
14
- baseURL: process.env.WAYGRAPH_BASE_URL || `http://${HOST}:${PORT}`,
17
+ baseURL: "http://127.0.0.1:4277",
15
18
  trace: "retain-on-failure",
16
- launchOptions: {
17
- executablePath: process.env.CHROME_PATH || process.env.CHROMIUM_PATH,
18
- args: ["--no-sandbox", "--disable-dev-shm-usage"],
19
- },
19
+ launchOptions: { executablePath: chromiumExecutablePath() },
20
20
  },
21
21
  });
@@ -1,37 +1,18 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Tiny static server for this example's offline fixture pages.
4
- * Mirrors templates/scaffold's own scripts/fixture-server.mjs exactly.
5
- */
1
+ // Stands in for this example's real app: serves src/pages/<name>.html at clean URLs (/dashboard, /docs).
2
+ // Started and stopped by playwright.config.ts's webServer - waygraph run/demo/auto/test all honor it.
6
3
  import { createServer } from "node:http";
7
4
  import { readFileSync, existsSync } from "node:fs";
8
- import { join, dirname, extname, normalize } from "node:path";
9
- import { fileURLToPath } from "node:url";
5
+ import { join } from "node:path";
10
6
 
11
- const ROOT = join(dirname(fileURLToPath(import.meta.url)), "../src/pages");
12
- const PORT = Number(process.env.WAYGRAPH_FIXTURE_PORT || 4277);
13
- const HOST = process.env.WAYGRAPH_FIXTURE_HOST || "127.0.0.1";
7
+ const PAGES = join(import.meta.dirname, "../src/pages");
14
8
 
15
- const TYPES = {
16
- ".html": "text/html; charset=utf-8",
17
- };
18
-
19
- const server = createServer((req, res) => {
20
- const raw = (req.url || "/").split("?")[0] || "/";
21
- const rel = raw === "/" ? "dashboard.html" : raw.replace(/^\//, "");
22
- const full = normalize(join(ROOT, rel));
23
- if (!full.startsWith(ROOT) || !existsSync(full)) {
24
- res.writeHead(404, { "content-type": "text/plain" });
25
- res.end("not found");
9
+ createServer((req, res) => {
10
+ const path = (req.url || "/").split("?")[0];
11
+ const name = path === "/" ? "dashboard" : path.slice(1);
12
+ const file = join(PAGES, `${name}.html`);
13
+ if (!/^[a-z-]+$/.test(name) || !existsSync(file)) {
14
+ res.writeHead(404).end("not found");
26
15
  return;
27
16
  }
28
- const type = TYPES[extname(full)] || "application/octet-stream";
29
- res.writeHead(200, { "content-type": type });
30
- res.end(readFileSync(full));
31
- });
32
-
33
- server.listen(PORT, HOST, () => {
34
- if (process.env.WAYGRAPH_FIXTURE_QUIET !== "1") {
35
- console.error(`waygraph fixture: http://${HOST}:${PORT}/dashboard.html`);
36
- }
37
- });
17
+ res.writeHead(200, { "content-type": "text/html; charset=utf-8" }).end(readFileSync(file));
18
+ }).listen(4277, "127.0.0.1");
@@ -1,6 +1,4 @@
1
- export const DASHBOARD_URL =
2
- process.env.WAYGRAPH_DASHBOARD_URL ??
3
- `http://${process.env.WAYGRAPH_FIXTURE_HOST || "127.0.0.1"}:${process.env.WAYGRAPH_FIXTURE_PORT || "4277"}/dashboard.html`;
1
+ export const DASHBOARD_URL = "/dashboard";
4
2
 
5
3
  export const DashboardSel = {
6
4
  heading: "#dashboard-heading",
@@ -1,6 +1,4 @@
1
- export const DOCS_URL =
2
- process.env.WAYGRAPH_DOCS_URL ??
3
- `http://${process.env.WAYGRAPH_FIXTURE_HOST || "127.0.0.1"}:${process.env.WAYGRAPH_FIXTURE_PORT || "4277"}/docs.html`;
1
+ export const DOCS_URL = "/docs";
4
2
 
5
3
  export const DocsSel = {
6
4
  heading: "#docs-heading",
@@ -5,6 +5,6 @@
5
5
  <h1 id="dashboard-heading">Dashboard</h1>
6
6
  <button id="widget-btn" onclick="document.getElementById('widget-out').textContent = 'clicked'">Click widget</button>
7
7
  <div id="widget-out"></div>
8
- <a id="go-docs" href="/docs.html">Docs</a>
8
+ <a id="go-docs" href="/docs">Docs</a>
9
9
  </body>
10
10
  </html>
@@ -3,6 +3,6 @@
3
3
  <head><title>Routed demo - docs</title></head>
4
4
  <body>
5
5
  <h1 id="docs-heading">Docs</h1>
6
- <a id="go-dashboard" href="/dashboard.html">Back to dashboard</a>
6
+ <a id="go-dashboard" href="/dashboard">Back to dashboard</a>
7
7
  </body>
8
8
  </html>
@@ -1,4 +1,5 @@
1
1
  import { defineConfig } from "@playwright/test";
2
+ import { chromiumExecutablePath } from "waygraph";
2
3
 
3
4
  export default defineConfig({
4
5
  testDir: "./tests",
@@ -11,9 +12,7 @@ export default defineConfig({
11
12
  baseURL: "https://www.saucedemo.com",
12
13
  trace: "retain-on-failure",
13
14
  launchOptions: {
14
- // Canonical Chromium on this machine is the Flatpak install - never let
15
- // Playwright download its own bundled binary. See .agent/manager-agent.md.
16
- executablePath: process.env.CHROME_PATH || process.env.CHROMIUM_PATH,
15
+ executablePath: chromiumExecutablePath(),
17
16
  args: ["--no-sandbox", "--disable-dev-shm-usage"],
18
17
  },
19
18
  },
@@ -6,6 +6,7 @@ import { chromium } from "@playwright/test";
6
6
  import { join, dirname } from "node:path";
7
7
  import { fileURLToPath, pathToFileURL } from "node:url";
8
8
  import { createRequire } from "node:module";
9
+ import { chromiumExecutablePath } from "waygraph";
9
10
 
10
11
  const require = createRequire(import.meta.url);
11
12
  await import(require.resolve("tsx/esm"));
@@ -18,7 +19,7 @@ const { buildExploreContext, buildExploreMenu } = await import(
18
19
  );
19
20
  const { MemPage, Engine, start, end } = await import(pathToFileURL(join(waygraphDist, "index.js")).href);
20
21
 
21
- const exe = process.env.CHROME_PATH || process.env.CHROMIUM_PATH;
22
+ const exe = chromiumExecutablePath();
22
23
 
23
24
  async function runBlock(engine, entry, context, page, mem) {
24
25
  const flow = engine.defineFlow([start, entry.block, end]);
@@ -2,6 +2,7 @@ import { chromium } from "@playwright/test";
2
2
  import { join, dirname } from "node:path";
3
3
  import { fileURLToPath, pathToFileURL } from "node:url";
4
4
  import { createRequire } from "node:module";
5
+ import { chromiumExecutablePath } from "waygraph";
5
6
 
6
7
  const require = createRequire(import.meta.url);
7
8
  await import(require.resolve("tsx/esm"));
@@ -15,7 +16,7 @@ const { buildExploreContext, buildExploreMenu } = await import(
15
16
  );
16
17
  const { locate, MemPage, Engine, start, end } = await import(pathToFileURL(join(waygraphDist, "index.js")).href);
17
18
 
18
- const exe = process.env.CHROME_PATH || process.env.CHROMIUM_PATH;
19
+ const exe = chromiumExecutablePath();
19
20
 
20
21
  async function snap(page, name) {
21
22
  const path = join(outDir, `graph-proof-${name}.png`);
@@ -6,6 +6,7 @@ import { chromium } from "@playwright/test";
6
6
  import { join, dirname } from "node:path";
7
7
  import { fileURLToPath, pathToFileURL } from "node:url";
8
8
  import { createRequire } from "node:module";
9
+ import { chromiumExecutablePath } from "waygraph";
9
10
 
10
11
  const require = createRequire(import.meta.url);
11
12
  await import(require.resolve("tsx/esm"));
@@ -25,7 +26,7 @@ const { SubmitLoginBlock } = await import(
25
26
  );
26
27
  const { LoginCreds } = await import(pathToFileURL(join(root, "src/states/checkout.mem-keys.js")).href);
27
28
 
28
- const exe = process.env.CHROME_PATH || process.env.CHROMIUM_PATH;
29
+ const exe = chromiumExecutablePath();
29
30
  const baseURL = "https://www.saucedemo.com";
30
31
 
31
32
  console.log("RUNTIME: headless browser (wrong password test)...");
@@ -1,7 +1,6 @@
1
1
  import { test, expect } from "@playwright/test";
2
2
  import { MemPage, checkpoint, Trait } from "waygraph";
3
3
  import { checkoutFlow } from "../src/flows/checkout.flow.js";
4
- import { FfOwnerAuthBlock } from "../src/blocks/saucedemo-web/ff-owner-auth.block.js";
5
4
  import { LoginCreds, SelectedItem } from "../src/states/checkout.mem-keys.js";
6
5
 
7
6
  // checkoutFlow.withBlockVerify/modBlockVerify - a spec that only imports the
@@ -31,12 +30,8 @@ test("withBlockVerify: replacing login's verify with an extra real check still p
31
30
  mem.set(LoginCreds({ username: "standard_user", password: "secret_sauce" }));
32
31
  mem.set(SelectedItem({ id: "sauce-labs-backpack", name: "Sauce Labs Backpack" }));
33
32
 
34
- // Addressed by the actual FfOwnerAuthBlock reference - the preferred
35
- // form: no typo risk, refactor-safe, jump-to-definition works. checkoutFlow
36
- // drives login through the ff-owner-auth FFCompose step (collapsed
37
- // nav-login + fill-username + fill-password + submit-login), not a bare
38
- // SubmitLoginBlock reference, so that's the Block whose verify this patches.
39
- const patched = checkoutFlow.withBlockVerify(FfOwnerAuthBlock, [
33
+ // checkoutFlow's login steps are one inline `{ ff: true }` group, auto-named "ff-1".
34
+ const patched = checkoutFlow.withBlockVerify("ff-1", [
40
35
  Trait.url({ pathname: "/inventory.html" }),
41
36
  Trait.visible(".inventory_list"),
42
37
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "waygraph",
3
- "version": "0.15.50",
3
+ "version": "0.15.52",
4
4
  "type": "module",
5
5
  "description": "A typed graph of reusable Blocks for driving a browser through E2E flows.",
6
6
  "license": "MIT",
@@ -30,7 +30,15 @@
30
30
  "!examples/**/.waygraph-traverse/**",
31
31
  "!examples/**/.waygraph-videos",
32
32
  "!examples/**/.waygraph-videos/**",
33
- "!**/*.webm"
33
+ "!**/*.webm",
34
+ "!**/.waygraph-auto",
35
+ "!**/.waygraph-auto/**",
36
+ "!**/test-results",
37
+ "!**/test-results/**",
38
+ "!**/playwright-report",
39
+ "!**/playwright-report/**",
40
+ "!**/.waygraph-chain-*.mjs",
41
+ "!**/*.log"
34
42
  ],
35
43
  "repository": {
36
44
  "type": "git",
@@ -10,11 +10,5 @@ export default defineConfig({
10
10
  headless: true,
11
11
  baseURL: "https://www.saucedemo.com",
12
12
  trace: "retain-on-failure",
13
- launchOptions: {
14
- // Canonical Chromium on this machine is the Flatpak install - never let
15
- // Playwright download its own bundled binary. See .agent/manager-agent.md.
16
- executablePath: process.env.CHROME_PATH || process.env.CHROMIUM_PATH,
17
- args: ["--no-sandbox", "--disable-dev-shm-usage"],
18
- },
19
13
  },
20
14
  });
@@ -1,7 +1,7 @@
1
1
  # __PROJECT_NAME__
2
2
 
3
3
  A waygraph project on the **Waygraph Map** layout: `src/map/` folders mirror your app's URLs.
4
- Runs fully offline - `npm test` is green on a local fixture page.
4
+ Runs fully offline - the demo pages open directly via `file://`, no server or network needed.
5
5
 
6
6
  ## Run it
7
7
 
@@ -24,7 +24,11 @@ one Block per action, flows in `src/flows/`.
24
24
 
25
25
  ## Point it at your real app
26
26
 
27
- Set `waygraph.baseUrl` in `package.json`, drop the `scripts/with-fixture.mjs` wrappers, and
28
- keep each `src/map/` folder matching the URL it represents (`waygraph map` enforces this).
27
+ Change each `_nav.block.ts`'s `url` from the local `file://` path to a real one, and set a real
28
+ `baseUrl` if your Nav Blocks use relative paths (`config/waygraph.config.ts`, a `.env`, or
29
+ `package.json`'s `"waygraph"` field - see the main docs' "Project config" section). That file also
30
+ holds the test settings (`testDir`, `webServer`, `playwright: { workers, timeout, ... }`), so the
31
+ project needs no `playwright.config.ts`. Keep each
32
+ `src/map/` folder matching the URL it represents (`waygraph map` enforces this).
29
33
 
30
34
  Docs: https://deviate-dv8.github.io/waygraph/
@@ -7,14 +7,16 @@ Next.js route groups) and never appear in a URL or Checkpoint name.
7
7
  ```text
8
8
  .
9
9
  ├── package.json
10
+ ├── .agents/skills/ # waygraph skills for coding agents
11
+ ├── config/waygraph.config.ts # baseUrl, tests, extensions, webServer - no playwright.config
10
12
  ├── src/
11
13
  │ ├── map/
12
- │ │ ├── (app_base)/ # your app (served on :4177 here)
13
- │ │ │ ├── home/ # URL /home.html
14
+ │ │ ├── (app_base)/ # your app (opened via file:// here)
15
+ │ │ │ ├── home/ # URL /home
14
16
  │ │ │ │ ├── _nav.block.ts # how to get here
15
17
  │ │ │ │ ├── _page.block.ts # "you have arrived" hub
16
18
  │ │ │ │ ├── _sel.ts # every selector for this page
17
- │ │ │ │ ├── home.html # offline fixture page
19
+ │ │ │ │ ├── index.html # offline fixture page
18
20
  │ │ │ │ └── _methods/ # one action per Block
19
21
  │ │ │ │ ├── add-item.effect.block.ts # + instanceOptions (auto menu)
20
22
  │ │ │ │ ├── remove-item.effect.block.ts
@@ -22,10 +24,10 @@ Next.js route groups) and never appear in a URL or Checkpoint name.
22
24
  │ │ │ │ ├── assert-hello.method.block.ts # + stubs + YAP slide
23
25
  │ │ │ │ └── assert-item-added.method.block.ts
24
26
  │ │ │ └── docs/ # a second page, same shape
25
- │ │ └── (external)/mailpit/ # a different origin (mail catcher)
27
+ │ │ ├── (external)/mailpit/ # a different origin (mail catcher)
28
+ │ │ └── (external)/hoppscotch/ # API client, REST client, needs the hoppscotch extension
26
29
  │ ├── states/ # Checkpoint types + mem keys
27
30
  │ └── flows/ # example / shop / mail-verify
28
- ├── scripts/ # local fixture server
29
31
  └── tests/example.spec.ts
30
32
  ```
31
33
 
@@ -40,7 +42,7 @@ page folder uses, so any agent or teammate knows where to look without asking.
40
42
  | Add an action on a page | one file in that page's `_methods/` |
41
43
  | Verify a state (button disabled, error shown) | `defineAssertBlock` + `Trait.disabled` / `Trait.enabled` |
42
44
  | Wire steps together | `src/flows/*.flow.ts` |
43
- | Give a flow fake data | `registerMemStub(key, fake)` + `withMemStub(flow)` (docs: docs/REFERENCE.md, "memStub") |
45
+ | Give a flow fake data | `registerMemStub(key, fake)` + `memStub: true` in the flow's options (docs: docs/REFERENCE.md, "memStub") |
44
46
  | Explore by hand | `npm run auto` (headed) or `npm run auto:cli` |
45
47
  | Check your work | `npm run check`, `npm run graph`, `waygraph map` |
46
48
 
@@ -0,0 +1,26 @@
1
+ import { defineConfig } from "waygraph";
2
+
3
+ export default defineConfig(({ env }) => ({
4
+ // Where the app under test lives. BASE_URL comes from .env / .env.<mode>: waygraph test --env staging
5
+ baseUrl: env.BASE_URL ?? "__APP_BASE_URL__",
6
+
7
+ // ── waygraph: uncomment what you need ─────────────────────────────────────────────────────────
8
+ // extensions: ["hoppscotch"], // browser extensions to load (a waygraph feature, not Playwright's)
9
+ // video: { // recordings made with `waygraph run|demo --video`
10
+ // dir: "~/Downloads/waygraph-videos", // where they are saved (default: Downloads/waygraph-videos/<project>)
11
+ // viewport: "1920x1080", // recording size: demo defaults to 1920x1080, run to 1280x720
12
+ // },
13
+ // slowMo: 250, // ms to pause before each browser action, so a run is watchable
14
+ // headed: true, // show the browser window (demo and auto already do)
15
+ // demo: { autoNext: true, fast: false }, // advance demo steps without clicking Next; blitz fast-forward steps
16
+ // webServer: { command: "npm start", port: 3000 }, // started around test / run / demo / auto
17
+
18
+ // ── test runner (Playwright) ──────────────────────────────────────────────────────────────────
19
+ // testDir: "tests",
20
+ // playwright: { // any Playwright test option, merged over waygraph's defaults
21
+ // workers: 1,
22
+ // retries: 1,
23
+ // timeout: 60_000,
24
+ // use: { video: "on", trace: "on", screenshot: "only-on-failure", viewport: { width: 1280, height: 720 } },
25
+ // },
26
+ }));
@@ -7,25 +7,21 @@
7
7
  "typecheck": "waygraph typecheck .",
8
8
  "test": "waygraph test",
9
9
  "test:ui": "waygraph test ui",
10
- "fixture": "node scripts/fixture-server.mjs",
11
10
  "list": "waygraph list",
12
11
  "check": "waygraph check",
13
12
  "graph": "waygraph graph",
14
13
  "graph:mermaid": "waygraph graph --mermaid",
15
- "auto": "node scripts/with-fixture.mjs waygraph auto",
16
- "auto:cli": "node scripts/with-fixture.mjs waygraph auto --cli",
17
- "demo": "node scripts/with-fixture.mjs waygraph demo --blocks exampleFlow",
18
- "demo:auto-next": "node scripts/with-fixture.mjs waygraph demo --blocks exampleFlow --auto-next --title \"Scaffold hello\"",
19
- "demo:shop": "node scripts/with-fixture.mjs waygraph demo --blocks shopFlow --data \"{\\\"demo.selectedItem\\\":{\\\"id\\\":\\\"alpha\\\",\\\"name\\\":\\\"Alpha\\\"}}\" --title \"Scaffold shop\"",
20
- "demo:shop:auto-next": "node scripts/with-fixture.mjs waygraph demo --blocks shopFlow --auto-next --data \"{\\\"demo.selectedItem\\\":{\\\"id\\\":\\\"alpha\\\",\\\"name\\\":\\\"Alpha\\\"}}\"",
21
- "run": "node scripts/with-fixture.mjs waygraph run --blocks exampleFlow",
22
- "run:shop": "node scripts/with-fixture.mjs waygraph run --blocks shopFlow --data \"{\\\"demo.selectedItem\\\":{\\\"id\\\":\\\"alpha\\\",\\\"name\\\":\\\"Alpha\\\"}}\""
23
- },
24
- "waygraph": {
25
- "baseUrl": "http://127.0.0.1:4177"
14
+ "auto": "waygraph auto",
15
+ "auto:cli": "waygraph auto --cli",
16
+ "demo": "waygraph demo --blocks exampleFlow",
17
+ "demo:auto-next": "waygraph demo --blocks exampleFlow --auto-next",
18
+ "demo:shop": "waygraph demo --blocks shopFlow",
19
+ "demo:shop:auto-next": "waygraph demo --blocks shopFlow --auto-next",
20
+ "run": "waygraph run --blocks exampleFlow",
21
+ "run:shop": "waygraph run --blocks shopFlow"
26
22
  },
27
23
  "dependencies": {
28
- "waygraph": "^0.12.20"
24
+ "waygraph": "latest"
29
25
  },
30
26
  "devDependencies": {
31
27
  "@playwright/test": "^1.55.0",
@@ -7,12 +7,12 @@ all point at an export here by name (`waygraph run --blocks shopFlow`).
7
7
  `.branch()`) over hand-composing raw Blocks - it checks each step's Block kind at runtime and
8
8
  the Checkpoint chain at compile time, so a wrong step is a build/test failure, not a
9
9
  mid-run surprise.
10
- - `withTitle`/`withHighlightFixtures`/`withSessionReset`/etc. are non-destructive wrappers -
11
- `someFlow.withTitle("...")` doesn't mutate `someFlow`, it returns a new one. Compose them
12
- around the finished `.end()` result, not inside the Map chain itself.
10
+ - Flow settings go in `.end({ title, memStub, sessionReset })`. No nested `withTitle(withMemStub(...))`.
11
+ - Demo highlights are ctx stubs chained on the Block where the flow uses it:
12
+ `AddItemBlock.stubAfter((ctx) => { ctx.ring("cart", { selector, label }); })`.
13
13
  - One flow, one scenario. A flow that needs a genuinely different starting session
14
- (re-entering the login page mid-chain) wraps that segment in `withSessionReset`, rather than
15
- hand-clearing cookies inside a Block.
14
+ (re-entering the login page mid-chain) sets `sessionReset: true`, rather than hand-clearing
15
+ cookies inside a Block.
16
16
 
17
17
  New flow → new file here, named for the scenario (`checkout.flow.ts`), not for the Blocks it
18
18
  happens to use.
@@ -1,4 +1,6 @@
1
- import { Engine, start, end, withTitle, withHighlightFixtures } from "waygraph";
1
+ import { Engine } from "waygraph";
2
+ import config from "../../config/waygraph.config.js";
3
+ import { DemoSel } from "../map/(app_base)/home/_sel.js";
2
4
  import { NavHomeBlock } from "../map/(app_base)/home/_nav.block.js";
3
5
  import { AssertHelloBlock } from "../map/(app_base)/home/_methods/assert-hello.method.block.js";
4
6
  import { NavDocsBlock } from "../map/(app_base)/docs/_nav.block.js";
@@ -6,24 +8,36 @@ import { NavDocsBlock } from "../map/(app_base)/docs/_nav.block.js";
6
8
  import "../map/(app_base)/home/_page.block.js";
7
9
  import "../map/(app_base)/docs/_page.block.js";
8
10
 
9
- const engine = new Engine();
11
+ const engine = new Engine(config);
10
12
 
11
13
  /** Smoke: nav + assert (no mem), then nav to the sibling docs/ page. Green offline. */
12
- export const exampleFlow = withHighlightFixtures(
13
- withTitle(
14
- engine.defineFlow([start, NavHomeBlock, AssertHelloBlock, NavDocsBlock, end]),
15
- "Scaffold: Hello Waygraph",
16
- ),
17
- {
18
- "assert-hello": {
19
- stubAfter: {
20
- title: {
14
+ export const exampleFlow = engine
15
+ .map()
16
+ .start()
17
+ .gotoPage(
18
+ NavHomeBlock.stubAfter((ctx) => {
19
+ ctx.ring("title", { selector: DemoSel.title, label: "Home heading", duration: true });
20
+ }).stubOnError((ctx) => {
21
+ ctx.ring("title", { selector: DemoSel.title, label: "Home heading at failure" });
22
+ }),
23
+ )
24
+ .assert(
25
+ AssertHelloBlock.stubBefore((ctx) => {
26
+ ctx.ring("title", { selector: DemoSel.title, label: "Heading about to check" });
27
+ })
28
+ .stubAfter((ctx) => {
29
+ ctx.ring("title", {
30
+ selector: DemoSel.title,
21
31
  label: "AC · Hello visible",
22
- detail: "Replace this fixture copy with your ticket lines.",
32
+ detail: "Replace this copy with your ticket lines.",
23
33
  tag: "AC",
24
34
  duration: true,
25
- },
26
- },
27
- },
28
- },
29
- );
35
+ });
36
+ ctx.ring("sub", { selector: DemoSel.sub, label: "Subcopy", duration: 1500 });
37
+ })
38
+ .stubOnError((ctx) => {
39
+ ctx.ring("title", { selector: DemoSel.title, label: "Heading at failure", tag: "FAIL" });
40
+ }),
41
+ )
42
+ .gotoPage(NavDocsBlock)
43
+ .end({ title: "Scaffold: Hello Waygraph" });
@@ -0,0 +1,35 @@
1
+ import { Engine } from "waygraph";
2
+ import config from "../../config/waygraph.config.js";
3
+ import { NavHoppscotchSettingsBlock } from "../map/(external)/hoppscotch/settings/_nav.block.js";
4
+ import { PickExtensionInterceptorBlock } from "../map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.js";
5
+ import { NavHoppscotchRestBlock } from "../map/(external)/hoppscotch/_nav.block.js";
6
+ import { SetQueryParamsBlock } from "../map/(external)/hoppscotch/_methods/set-query-params.method.block.js";
7
+ import { SetUrlBlock } from "../map/(external)/hoppscotch/_methods/set-url.method.block.js";
8
+ import { SetBearerTokenBlock } from "../map/(external)/hoppscotch/_methods/set-bearer-token.method.block.js";
9
+ import { SendRequestBlock } from "../map/(external)/hoppscotch/_methods/send-request.method.block.js";
10
+ import { AssertStatusBlock } from "../map/(external)/hoppscotch/_methods/assert-status.method.block.js";
11
+ import { ReadResponseHeadersBlock } from "../map/(external)/hoppscotch/_methods/read-response-headers.method.block.js";
12
+ import { AssertResponseHeaderBlock } from "../map/(external)/hoppscotch/_methods/assert-response-header.method.block.js";
13
+ import { ReadResponseBodyBlock } from "../map/(external)/hoppscotch/_methods/read-response-body.method.block.js";
14
+ import { AssertResponseBodyBlock } from "../map/(external)/hoppscotch/_methods/assert-response-body.method.block.js";
15
+ import "../map/(external)/hoppscotch/_page.block.js";
16
+
17
+ const engine = new Engine(config);
18
+
19
+ /** GET with query params and a bearer token, check the status, that the API received them, and a response header. Needs `extensions: ["hoppscotch"]`. */
20
+ export const hoppscotchAuthFlow = engine
21
+ .map()
22
+ .start()
23
+ .gotoExternal(NavHoppscotchSettingsBlock)
24
+ .method(PickExtensionInterceptorBlock)
25
+ .gotoExternal(NavHoppscotchRestBlock)
26
+ .method(SetUrlBlock)
27
+ .method(SetQueryParamsBlock)
28
+ .method(SetBearerTokenBlock)
29
+ .method(SendRequestBlock)
30
+ .assert(AssertStatusBlock)
31
+ .method(ReadResponseBodyBlock)
32
+ .assert(AssertResponseBodyBlock)
33
+ .method(ReadResponseHeadersBlock)
34
+ .assert(AssertResponseHeaderBlock)
35
+ .end({ title: "Scaffold: Hoppscotch GET with query params and bearer token" });
@@ -0,0 +1,23 @@
1
+ import { Engine } from "waygraph";
2
+ import config from "../../config/waygraph.config.js";
3
+ import { NavHoppscotchSettingsBlock } from "../map/(external)/hoppscotch/settings/_nav.block.js";
4
+ import { PickExtensionInterceptorBlock } from "../map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.js";
5
+ import { NavHoppscotchRestBlock } from "../map/(external)/hoppscotch/_nav.block.js";
6
+ import { SetUrlBlock } from "../map/(external)/hoppscotch/_methods/set-url.method.block.js";
7
+ import { SendRequestBlock } from "../map/(external)/hoppscotch/_methods/send-request.method.block.js";
8
+ import { AssertStatusBlock } from "../map/(external)/hoppscotch/_methods/assert-status.method.block.js";
9
+ import "../map/(external)/hoppscotch/_page.block.js";
10
+
11
+ const engine = new Engine(config);
12
+
13
+ /** GET a URL and check the status. Needs `extensions: ["hoppscotch"]` in waygraph.config.ts. */
14
+ export const hoppscotchGetFlow = engine
15
+ .map()
16
+ .start()
17
+ .gotoExternal(NavHoppscotchSettingsBlock)
18
+ .method(PickExtensionInterceptorBlock)
19
+ .gotoExternal(NavHoppscotchRestBlock)
20
+ .method(SetUrlBlock)
21
+ .method(SendRequestBlock)
22
+ .assert(AssertStatusBlock)
23
+ .end({ title: "Scaffold: Hoppscotch GET" });
@@ -0,0 +1,33 @@
1
+ import { Engine } from "waygraph";
2
+ import config from "../../config/waygraph.config.js";
3
+ import { NavHoppscotchSettingsBlock } from "../map/(external)/hoppscotch/settings/_nav.block.js";
4
+ import { PickExtensionInterceptorBlock } from "../map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.js";
5
+ import { NavHoppscotchRestBlock } from "../map/(external)/hoppscotch/_nav.block.js";
6
+ import { SetMethodBlock } from "../map/(external)/hoppscotch/_methods/set-method.method.block.js";
7
+ import { SetUrlBlock } from "../map/(external)/hoppscotch/_methods/set-url.method.block.js";
8
+ import { SetHeadersBlock } from "../map/(external)/hoppscotch/_methods/set-headers.method.block.js";
9
+ import { SetJsonBodyBlock } from "../map/(external)/hoppscotch/_methods/set-json-body.method.block.js";
10
+ import { SendRequestBlock } from "../map/(external)/hoppscotch/_methods/send-request.method.block.js";
11
+ import { AssertStatusBlock } from "../map/(external)/hoppscotch/_methods/assert-status.method.block.js";
12
+ import { ReadResponseBodyBlock } from "../map/(external)/hoppscotch/_methods/read-response-body.method.block.js";
13
+ import { AssertResponseBodyBlock } from "../map/(external)/hoppscotch/_methods/assert-response-body.method.block.js";
14
+ import "../map/(external)/hoppscotch/_page.block.js";
15
+
16
+ const engine = new Engine(config);
17
+
18
+ /** POST JSON with a header, check the status and the response body. Needs `extensions: ["hoppscotch"]`. */
19
+ export const hoppscotchPostFlow = engine
20
+ .map()
21
+ .start()
22
+ .gotoExternal(NavHoppscotchSettingsBlock)
23
+ .method(PickExtensionInterceptorBlock)
24
+ .gotoExternal(NavHoppscotchRestBlock)
25
+ .method(SetMethodBlock)
26
+ .method(SetUrlBlock)
27
+ .method(SetHeadersBlock)
28
+ .method(SetJsonBodyBlock)
29
+ .method(SendRequestBlock)
30
+ .assert(AssertStatusBlock)
31
+ .method(ReadResponseBodyBlock)
32
+ .assert(AssertResponseBodyBlock)
33
+ .end({ title: "Scaffold: Hoppscotch POST with header and JSON body" });