tabwright 1.0.0 → 1.0.1

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 (562) hide show
  1. package/dist/aria-snapshot.d.ts +0 -1
  2. package/dist/aria-snapshot.js +9 -1
  3. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts +0 -1
  4. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js +0 -1
  5. package/dist/bippy.js +1 -1
  6. package/dist/browser-config.d.ts +0 -1
  7. package/dist/browser-config.js +0 -1
  8. package/dist/browser-install.d.ts +0 -1
  9. package/dist/browser-install.js +0 -1
  10. package/dist/browser-launch.d.ts +0 -1
  11. package/dist/browser-launch.js +0 -1
  12. package/dist/builtin-capabilities.d.ts +0 -1
  13. package/dist/builtin-capabilities.js +0 -1
  14. package/dist/capability-agent-skill.d.ts +0 -1
  15. package/dist/capability-agent-skill.js +0 -1
  16. package/dist/capability-auth-state.d.ts +0 -1
  17. package/dist/capability-auth-state.js +0 -1
  18. package/dist/capability-auth.d.ts +0 -1
  19. package/dist/capability-auth.js +0 -1
  20. package/dist/capability-options.d.ts +0 -1
  21. package/dist/capability-options.js +0 -1
  22. package/dist/capability-package.d.ts +0 -1
  23. package/dist/capability-package.js +0 -1
  24. package/dist/capability-registry.d.ts +0 -1
  25. package/dist/capability-registry.js +0 -1
  26. package/dist/capability-runner.d.ts +0 -1
  27. package/dist/capability-runner.js +0 -1
  28. package/dist/capability-studio.d.ts +0 -1
  29. package/dist/capability-studio.js +0 -1
  30. package/dist/cdp-log.d.ts +0 -1
  31. package/dist/cdp-log.js +0 -1
  32. package/dist/cdp-relay.d.ts +0 -1
  33. package/dist/cdp-relay.js +0 -1
  34. package/dist/cdp-session.d.ts +0 -1
  35. package/dist/cdp-session.js +0 -1
  36. package/dist/cdp-types.d.ts +0 -1
  37. package/dist/cdp-types.js +0 -1
  38. package/dist/chrome-discovery.d.ts +0 -1
  39. package/dist/chrome-discovery.js +0 -1
  40. package/dist/clean-html.d.ts +0 -1
  41. package/dist/clean-html.js +0 -1
  42. package/dist/cli.d.ts +0 -1
  43. package/dist/cli.js +9 -2
  44. package/dist/cloud-client.d.ts +0 -1
  45. package/dist/cloud-client.js +0 -1
  46. package/dist/create-logger.d.ts +0 -1
  47. package/dist/create-logger.js +0 -1
  48. package/dist/debugger-examples-types.d.ts +0 -1
  49. package/dist/debugger-examples-types.js +0 -1
  50. package/dist/debugger-examples.d.ts +0 -1
  51. package/dist/debugger-examples.js +0 -1
  52. package/dist/debugger.d.ts +0 -1
  53. package/dist/debugger.js +0 -1
  54. package/dist/diff-utils.d.ts +0 -1
  55. package/dist/diff-utils.js +0 -1
  56. package/dist/doctor.d.ts +0 -1
  57. package/dist/doctor.js +5 -7
  58. package/dist/editor-examples.d.ts +0 -1
  59. package/dist/editor-examples.js +0 -1
  60. package/dist/editor.d.ts +0 -1
  61. package/dist/editor.js +0 -1
  62. package/dist/env-compat.d.ts +0 -1
  63. package/dist/env-compat.js +0 -1
  64. package/dist/executor.d.ts +0 -1
  65. package/dist/executor.js +1 -2
  66. package/dist/extension/background.js +7 -3
  67. package/dist/extension/manifest.json +1 -1
  68. package/dist/ghost-browser.d.ts +0 -1
  69. package/dist/ghost-browser.js +0 -1
  70. package/dist/ghost-cursor-controller.d.ts +0 -1
  71. package/dist/ghost-cursor-controller.js +0 -1
  72. package/dist/ghost-cursor.d.ts +0 -1
  73. package/dist/ghost-cursor.js +0 -1
  74. package/dist/htmlrewrite.d.ts +0 -1
  75. package/dist/htmlrewrite.js +0 -1
  76. package/dist/index.d.ts +0 -1
  77. package/dist/index.js +0 -1
  78. package/dist/kill-port.d.ts +0 -1
  79. package/dist/kill-port.js +0 -1
  80. package/dist/kitty-graphics.d.ts +0 -1
  81. package/dist/kitty-graphics.js +0 -1
  82. package/dist/mcp.d.ts +0 -1
  83. package/dist/mcp.js +0 -1
  84. package/dist/package-paths.d.ts +0 -1
  85. package/dist/package-paths.js +0 -1
  86. package/dist/page-markdown.d.ts +0 -1
  87. package/dist/page-markdown.js +0 -1
  88. package/dist/performance-examples.d.ts +0 -1
  89. package/dist/performance-examples.js +0 -1
  90. package/dist/playwright-import.d.ts +0 -1
  91. package/dist/playwright-import.js +0 -1
  92. package/dist/product-paths.d.ts +0 -1
  93. package/dist/product-paths.js +0 -1
  94. package/dist/protocol.d.ts +0 -1
  95. package/dist/protocol.js +0 -1
  96. package/dist/react-source.d.ts +0 -1
  97. package/dist/react-source.js +0 -1
  98. package/dist/readability.js +1 -1
  99. package/dist/relay-client.d.ts +0 -1
  100. package/dist/relay-client.js +0 -1
  101. package/dist/relay-state.d.ts +0 -1
  102. package/dist/relay-state.js +0 -1
  103. package/dist/replay-ai-index.d.ts +0 -1
  104. package/dist/replay-ai-index.js +0 -1
  105. package/dist/replay-eval.d.ts +0 -1
  106. package/dist/replay-eval.js +0 -1
  107. package/dist/replay-handoff.d.ts +0 -1
  108. package/dist/replay-handoff.js +0 -1
  109. package/dist/replay-workflow-compiler.d.ts +0 -1
  110. package/dist/replay-workflow-compiler.js +0 -1
  111. package/dist/rrweb-recording-relay.d.ts +0 -1
  112. package/dist/rrweb-recording-relay.js +0 -1
  113. package/dist/rrweb-recording.d.ts +0 -1
  114. package/dist/rrweb-recording.js +0 -1
  115. package/dist/scoped-fs.d.ts +0 -1
  116. package/dist/scoped-fs.js +0 -1
  117. package/dist/selector-generator.js +1 -1
  118. package/dist/start-relay-server.d.ts +0 -1
  119. package/dist/start-relay-server.js +0 -1
  120. package/dist/styles-examples.d.ts +0 -1
  121. package/dist/styles-examples.js +0 -1
  122. package/dist/styles.d.ts +0 -1
  123. package/dist/styles.js +0 -1
  124. package/dist/tabwright-agent-skill.d.ts +0 -1
  125. package/dist/tabwright-agent-skill.js +0 -1
  126. package/dist/test-declarations.d.ts +0 -1
  127. package/dist/test-declarations.js +0 -1
  128. package/dist/utils.d.ts +0 -1
  129. package/dist/utils.js +2 -2
  130. package/dist/wait-for-page-load.d.ts +0 -1
  131. package/dist/wait-for-page-load.js +0 -1
  132. package/dist/workflow-capability.d.ts +0 -1
  133. package/dist/workflow-capability.js +0 -1
  134. package/package.json +9 -4
  135. package/readme.md +35 -0
  136. package/dist/aria-snapshot.d.ts.map +0 -1
  137. package/dist/aria-snapshot.js.map +0 -1
  138. package/dist/aria-snapshot.test.d.ts +0 -2
  139. package/dist/aria-snapshot.test.d.ts.map +0 -1
  140. package/dist/aria-snapshot.test.js +0 -270
  141. package/dist/aria-snapshot.test.js.map +0 -1
  142. package/dist/aria-snapshot.unit.test.d.ts +0 -2
  143. package/dist/aria-snapshot.unit.test.d.ts.map +0 -1
  144. package/dist/aria-snapshot.unit.test.js +0 -542
  145. package/dist/aria-snapshot.unit.test.js.map +0 -1
  146. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts.map +0 -1
  147. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js.map +0 -1
  148. package/dist/browser-config.d.ts.map +0 -1
  149. package/dist/browser-config.js.map +0 -1
  150. package/dist/browser-install.d.ts.map +0 -1
  151. package/dist/browser-install.js.map +0 -1
  152. package/dist/browser-launch.d.ts.map +0 -1
  153. package/dist/browser-launch.js.map +0 -1
  154. package/dist/builtin-capabilities.d.ts.map +0 -1
  155. package/dist/builtin-capabilities.js.map +0 -1
  156. package/dist/capability-agent-skill.d.ts.map +0 -1
  157. package/dist/capability-agent-skill.js.map +0 -1
  158. package/dist/capability-auth-state.d.ts.map +0 -1
  159. package/dist/capability-auth-state.js.map +0 -1
  160. package/dist/capability-auth.d.ts.map +0 -1
  161. package/dist/capability-auth.js.map +0 -1
  162. package/dist/capability-cli-confirmation.test.d.ts +0 -2
  163. package/dist/capability-cli-confirmation.test.d.ts.map +0 -1
  164. package/dist/capability-cli-confirmation.test.js +0 -79
  165. package/dist/capability-cli-confirmation.test.js.map +0 -1
  166. package/dist/capability-options.d.ts.map +0 -1
  167. package/dist/capability-options.js.map +0 -1
  168. package/dist/capability-options.test.d.ts +0 -2
  169. package/dist/capability-options.test.d.ts.map +0 -1
  170. package/dist/capability-options.test.js +0 -81
  171. package/dist/capability-options.test.js.map +0 -1
  172. package/dist/capability-package.d.ts.map +0 -1
  173. package/dist/capability-package.js.map +0 -1
  174. package/dist/capability-package.test.d.ts +0 -2
  175. package/dist/capability-package.test.d.ts.map +0 -1
  176. package/dist/capability-package.test.js +0 -179
  177. package/dist/capability-package.test.js.map +0 -1
  178. package/dist/capability-registry.d.ts.map +0 -1
  179. package/dist/capability-registry.js.map +0 -1
  180. package/dist/capability-registry.test.d.ts +0 -2
  181. package/dist/capability-registry.test.d.ts.map +0 -1
  182. package/dist/capability-registry.test.js +0 -1683
  183. package/dist/capability-registry.test.js.map +0 -1
  184. package/dist/capability-runner.d.ts.map +0 -1
  185. package/dist/capability-runner.js.map +0 -1
  186. package/dist/capability-search-relevance.test.d.ts +0 -2
  187. package/dist/capability-search-relevance.test.d.ts.map +0 -1
  188. package/dist/capability-search-relevance.test.js +0 -67
  189. package/dist/capability-search-relevance.test.js.map +0 -1
  190. package/dist/capability-studio.d.ts.map +0 -1
  191. package/dist/capability-studio.js.map +0 -1
  192. package/dist/capability-studio.test.d.ts +0 -2
  193. package/dist/capability-studio.test.d.ts.map +0 -1
  194. package/dist/capability-studio.test.js +0 -41
  195. package/dist/capability-studio.test.js.map +0 -1
  196. package/dist/cdp-log.d.ts.map +0 -1
  197. package/dist/cdp-log.js.map +0 -1
  198. package/dist/cdp-log.test.d.ts +0 -2
  199. package/dist/cdp-log.test.d.ts.map +0 -1
  200. package/dist/cdp-log.test.js +0 -109
  201. package/dist/cdp-log.test.js.map +0 -1
  202. package/dist/cdp-relay.d.ts.map +0 -1
  203. package/dist/cdp-relay.js.map +0 -1
  204. package/dist/cdp-session.d.ts.map +0 -1
  205. package/dist/cdp-session.js.map +0 -1
  206. package/dist/cdp-types.d.ts.map +0 -1
  207. package/dist/cdp-types.js.map +0 -1
  208. package/dist/channel-owner-inspect.test.d.ts +0 -2
  209. package/dist/channel-owner-inspect.test.d.ts.map +0 -1
  210. package/dist/channel-owner-inspect.test.js +0 -75
  211. package/dist/channel-owner-inspect.test.js.map +0 -1
  212. package/dist/chrome-discovery.d.ts.map +0 -1
  213. package/dist/chrome-discovery.js.map +0 -1
  214. package/dist/chrome-discovery.test.d.ts +0 -2
  215. package/dist/chrome-discovery.test.d.ts.map +0 -1
  216. package/dist/chrome-discovery.test.js +0 -41
  217. package/dist/chrome-discovery.test.js.map +0 -1
  218. package/dist/clean-html.d.ts.map +0 -1
  219. package/dist/clean-html.js.map +0 -1
  220. package/dist/cli-help.test.d.ts +0 -2
  221. package/dist/cli-help.test.d.ts.map +0 -1
  222. package/dist/cli-help.test.js +0 -98
  223. package/dist/cli-help.test.js.map +0 -1
  224. package/dist/cli.d.ts.map +0 -1
  225. package/dist/cli.js.map +0 -1
  226. package/dist/cloud-client.d.ts.map +0 -1
  227. package/dist/cloud-client.js.map +0 -1
  228. package/dist/create-logger.d.ts.map +0 -1
  229. package/dist/create-logger.js.map +0 -1
  230. package/dist/debugger-examples-types.d.ts.map +0 -1
  231. package/dist/debugger-examples-types.js.map +0 -1
  232. package/dist/debugger-examples.d.ts.map +0 -1
  233. package/dist/debugger-examples.js.map +0 -1
  234. package/dist/debugger.d.ts.map +0 -1
  235. package/dist/debugger.js.map +0 -1
  236. package/dist/diff-utils.d.ts.map +0 -1
  237. package/dist/diff-utils.js.map +0 -1
  238. package/dist/diff-utils.test.d.ts +0 -2
  239. package/dist/diff-utils.test.d.ts.map +0 -1
  240. package/dist/diff-utils.test.js +0 -137
  241. package/dist/diff-utils.test.js.map +0 -1
  242. package/dist/doctor.d.ts.map +0 -1
  243. package/dist/doctor.js.map +0 -1
  244. package/dist/doctor.test.d.ts +0 -2
  245. package/dist/doctor.test.d.ts.map +0 -1
  246. package/dist/doctor.test.js +0 -208
  247. package/dist/doctor.test.js.map +0 -1
  248. package/dist/editor-examples.d.ts.map +0 -1
  249. package/dist/editor-examples.js.map +0 -1
  250. package/dist/editor.d.ts.map +0 -1
  251. package/dist/editor.js.map +0 -1
  252. package/dist/env-compat.d.ts.map +0 -1
  253. package/dist/env-compat.js.map +0 -1
  254. package/dist/executor.d.ts.map +0 -1
  255. package/dist/executor.js.map +0 -1
  256. package/dist/executor.unit.test.d.ts +0 -2
  257. package/dist/executor.unit.test.d.ts.map +0 -1
  258. package/dist/executor.unit.test.js +0 -143
  259. package/dist/executor.unit.test.js.map +0 -1
  260. package/dist/extension-connection.test.d.ts +0 -2
  261. package/dist/extension-connection.test.d.ts.map +0 -1
  262. package/dist/extension-connection.test.js +0 -708
  263. package/dist/extension-connection.test.js.map +0 -1
  264. package/dist/extension-icon-warning.test.d.ts +0 -2
  265. package/dist/extension-icon-warning.test.d.ts.map +0 -1
  266. package/dist/extension-icon-warning.test.js +0 -33
  267. package/dist/extension-icon-warning.test.js.map +0 -1
  268. package/dist/ghost-browser.d.ts.map +0 -1
  269. package/dist/ghost-browser.js.map +0 -1
  270. package/dist/ghost-cursor-controller.d.ts.map +0 -1
  271. package/dist/ghost-cursor-controller.js.map +0 -1
  272. package/dist/ghost-cursor.d.ts.map +0 -1
  273. package/dist/ghost-cursor.js.map +0 -1
  274. package/dist/htmlrewrite.d.ts.map +0 -1
  275. package/dist/htmlrewrite.js.map +0 -1
  276. package/dist/htmlrewrite.test.d.ts +0 -2
  277. package/dist/htmlrewrite.test.d.ts.map +0 -1
  278. package/dist/htmlrewrite.test.js +0 -7975
  279. package/dist/htmlrewrite.test.js.map +0 -1
  280. package/dist/index.d.ts.map +0 -1
  281. package/dist/index.js.map +0 -1
  282. package/dist/kill-port.d.ts.map +0 -1
  283. package/dist/kill-port.js.map +0 -1
  284. package/dist/kitty-graphics.d.ts.map +0 -1
  285. package/dist/kitty-graphics.js.map +0 -1
  286. package/dist/kitty-graphics.test.d.ts +0 -2
  287. package/dist/kitty-graphics.test.d.ts.map +0 -1
  288. package/dist/kitty-graphics.test.js +0 -125
  289. package/dist/kitty-graphics.test.js.map +0 -1
  290. package/dist/locator-selector.test.d.ts +0 -2
  291. package/dist/locator-selector.test.d.ts.map +0 -1
  292. package/dist/locator-selector.test.js +0 -98
  293. package/dist/locator-selector.test.js.map +0 -1
  294. package/dist/mcp-client.d.ts +0 -20
  295. package/dist/mcp-client.d.ts.map +0 -1
  296. package/dist/mcp-client.js +0 -56
  297. package/dist/mcp-client.js.map +0 -1
  298. package/dist/mcp.d.ts.map +0 -1
  299. package/dist/mcp.js.map +0 -1
  300. package/dist/on-mouse-action.test.d.ts +0 -2
  301. package/dist/on-mouse-action.test.d.ts.map +0 -1
  302. package/dist/on-mouse-action.test.js +0 -180
  303. package/dist/on-mouse-action.test.js.map +0 -1
  304. package/dist/options-page.test.d.ts +0 -2
  305. package/dist/options-page.test.d.ts.map +0 -1
  306. package/dist/options-page.test.js +0 -773
  307. package/dist/options-page.test.js.map +0 -1
  308. package/dist/package-paths.d.ts.map +0 -1
  309. package/dist/package-paths.js.map +0 -1
  310. package/dist/page-markdown.d.ts.map +0 -1
  311. package/dist/page-markdown.js.map +0 -1
  312. package/dist/performance-examples.d.ts.map +0 -1
  313. package/dist/performance-examples.js.map +0 -1
  314. package/dist/playwright-import.d.ts.map +0 -1
  315. package/dist/playwright-import.js.map +0 -1
  316. package/dist/popup-relocation.test.d.ts +0 -7
  317. package/dist/popup-relocation.test.d.ts.map +0 -1
  318. package/dist/popup-relocation.test.js +0 -139
  319. package/dist/popup-relocation.test.js.map +0 -1
  320. package/dist/product-paths.d.ts.map +0 -1
  321. package/dist/product-paths.js.map +0 -1
  322. package/dist/product-paths.test.d.ts +0 -2
  323. package/dist/product-paths.test.d.ts.map +0 -1
  324. package/dist/product-paths.test.js +0 -39
  325. package/dist/product-paths.test.js.map +0 -1
  326. package/dist/protocol.d.ts.map +0 -1
  327. package/dist/protocol.js.map +0 -1
  328. package/dist/protocol.test.d.ts +0 -2
  329. package/dist/protocol.test.d.ts.map +0 -1
  330. package/dist/protocol.test.js +0 -31
  331. package/dist/protocol.test.js.map +0 -1
  332. package/dist/react-source.d.ts.map +0 -1
  333. package/dist/react-source.js.map +0 -1
  334. package/dist/relay-client.d.ts.map +0 -1
  335. package/dist/relay-client.js.map +0 -1
  336. package/dist/relay-client.test.d.ts +0 -2
  337. package/dist/relay-client.test.d.ts.map +0 -1
  338. package/dist/relay-client.test.js +0 -305
  339. package/dist/relay-client.test.js.map +0 -1
  340. package/dist/relay-core.test.d.ts +0 -2
  341. package/dist/relay-core.test.d.ts.map +0 -1
  342. package/dist/relay-core.test.js +0 -1427
  343. package/dist/relay-core.test.js.map +0 -1
  344. package/dist/relay-navigation.test.d.ts +0 -2
  345. package/dist/relay-navigation.test.d.ts.map +0 -1
  346. package/dist/relay-navigation.test.js +0 -661
  347. package/dist/relay-navigation.test.js.map +0 -1
  348. package/dist/relay-session.test.d.ts +0 -2
  349. package/dist/relay-session.test.d.ts.map +0 -1
  350. package/dist/relay-session.test.js +0 -1121
  351. package/dist/relay-session.test.js.map +0 -1
  352. package/dist/relay-state.d.ts.map +0 -1
  353. package/dist/relay-state.js.map +0 -1
  354. package/dist/relay-state.test.d.ts +0 -2
  355. package/dist/relay-state.test.d.ts.map +0 -1
  356. package/dist/relay-state.test.js +0 -594
  357. package/dist/relay-state.test.js.map +0 -1
  358. package/dist/replay-ai-index.d.ts.map +0 -1
  359. package/dist/replay-ai-index.js.map +0 -1
  360. package/dist/replay-ai-index.test.d.ts +0 -2
  361. package/dist/replay-ai-index.test.d.ts.map +0 -1
  362. package/dist/replay-ai-index.test.js +0 -255
  363. package/dist/replay-ai-index.test.js.map +0 -1
  364. package/dist/replay-cli.test.d.ts +0 -2
  365. package/dist/replay-cli.test.d.ts.map +0 -1
  366. package/dist/replay-cli.test.js +0 -275
  367. package/dist/replay-cli.test.js.map +0 -1
  368. package/dist/replay-eval.d.ts.map +0 -1
  369. package/dist/replay-eval.js.map +0 -1
  370. package/dist/replay-handoff.d.ts.map +0 -1
  371. package/dist/replay-handoff.js.map +0 -1
  372. package/dist/replay-handoff.test.d.ts +0 -2
  373. package/dist/replay-handoff.test.d.ts.map +0 -1
  374. package/dist/replay-handoff.test.js +0 -123
  375. package/dist/replay-handoff.test.js.map +0 -1
  376. package/dist/replay-workflow-compiler.d.ts.map +0 -1
  377. package/dist/replay-workflow-compiler.js.map +0 -1
  378. package/dist/replay-workflow-compiler.test.d.ts +0 -2
  379. package/dist/replay-workflow-compiler.test.d.ts.map +0 -1
  380. package/dist/replay-workflow-compiler.test.js +0 -223
  381. package/dist/replay-workflow-compiler.test.js.map +0 -1
  382. package/dist/rrweb-recording-relay.d.ts.map +0 -1
  383. package/dist/rrweb-recording-relay.js.map +0 -1
  384. package/dist/rrweb-recording-relay.test.d.ts +0 -2
  385. package/dist/rrweb-recording-relay.test.d.ts.map +0 -1
  386. package/dist/rrweb-recording-relay.test.js +0 -85
  387. package/dist/rrweb-recording-relay.test.js.map +0 -1
  388. package/dist/rrweb-recording.d.ts.map +0 -1
  389. package/dist/rrweb-recording.js.map +0 -1
  390. package/dist/scoped-fs.d.ts.map +0 -1
  391. package/dist/scoped-fs.js.map +0 -1
  392. package/dist/scoped-fs.test.d.ts +0 -5
  393. package/dist/scoped-fs.test.d.ts.map +0 -1
  394. package/dist/scoped-fs.test.js +0 -73
  395. package/dist/scoped-fs.test.js.map +0 -1
  396. package/dist/skill-stub.test.d.ts +0 -2
  397. package/dist/skill-stub.test.d.ts.map +0 -1
  398. package/dist/skill-stub.test.js +0 -22
  399. package/dist/skill-stub.test.js.map +0 -1
  400. package/dist/snapshot-tools.test.d.ts +0 -2
  401. package/dist/snapshot-tools.test.d.ts.map +0 -1
  402. package/dist/snapshot-tools.test.js +0 -856
  403. package/dist/snapshot-tools.test.js.map +0 -1
  404. package/dist/start-relay-server.d.ts.map +0 -1
  405. package/dist/start-relay-server.js.map +0 -1
  406. package/dist/styles-examples.d.ts.map +0 -1
  407. package/dist/styles-examples.js.map +0 -1
  408. package/dist/styles.d.ts.map +0 -1
  409. package/dist/styles.js.map +0 -1
  410. package/dist/tabwright-agent-skill.d.ts.map +0 -1
  411. package/dist/tabwright-agent-skill.js.map +0 -1
  412. package/dist/tabwright-agent-skill.test.d.ts +0 -2
  413. package/dist/tabwright-agent-skill.test.d.ts.map +0 -1
  414. package/dist/tabwright-agent-skill.test.js +0 -51
  415. package/dist/tabwright-agent-skill.test.js.map +0 -1
  416. package/dist/test-declarations.d.ts.map +0 -1
  417. package/dist/test-declarations.js.map +0 -1
  418. package/dist/test-utils.d.ts +0 -69
  419. package/dist/test-utils.d.ts.map +0 -1
  420. package/dist/test-utils.js +0 -448
  421. package/dist/test-utils.js.map +0 -1
  422. package/dist/test-utils.test.d.ts +0 -2
  423. package/dist/test-utils.test.d.ts.map +0 -1
  424. package/dist/test-utils.test.js +0 -55
  425. package/dist/test-utils.test.js.map +0 -1
  426. package/dist/utils.d.ts.map +0 -1
  427. package/dist/utils.js.map +0 -1
  428. package/dist/wait-for-page-load.d.ts.map +0 -1
  429. package/dist/wait-for-page-load.js.map +0 -1
  430. package/dist/workflow-capability.d.ts.map +0 -1
  431. package/dist/workflow-capability.js.map +0 -1
  432. package/dist/workflow-script-flow.test.d.ts +0 -2
  433. package/dist/workflow-script-flow.test.d.ts.map +0 -1
  434. package/dist/workflow-script-flow.test.js +0 -285
  435. package/dist/workflow-script-flow.test.js.map +0 -1
  436. package/src/__snapshots__/x.com.processed.html +0 -1003
  437. package/src/__snapshots__/x.com.processed.withStyles.html +0 -2720
  438. package/src/a11y-client.ts +0 -241
  439. package/src/aria-snapshot.test.ts +0 -311
  440. package/src/aria-snapshot.ts +0 -1681
  441. package/src/aria-snapshot.unit.test.ts +0 -615
  442. package/src/aria-snapshots/github-interactive.txt +0 -193
  443. package/src/aria-snapshots/github-raw.txt +0 -309
  444. package/src/aria-snapshots/hackernews-interactive.txt +0 -477
  445. package/src/aria-snapshots/hackernews-raw.txt +0 -428
  446. package/src/aria-snapshots/prosemirror-interactive.txt +0 -66
  447. package/src/aria-snapshots/prosemirror-raw.txt +0 -145
  448. package/src/assets/aria-labels-hacker-news.png +0 -0
  449. package/src/assets/aria-labels-old-reddit.png +0 -0
  450. package/src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts +0 -5
  451. package/src/assets/cursors/screen-studio/pointer-macos-tahoe.svg +0 -18
  452. package/src/assets/x.com.html +0 -32946
  453. package/src/browser-config.ts +0 -179
  454. package/src/browser-install.ts +0 -284
  455. package/src/browser-launch.ts +0 -75
  456. package/src/builtin-capabilities.ts +0 -2765
  457. package/src/capability-agent-skill.ts +0 -305
  458. package/src/capability-auth-state.ts +0 -197
  459. package/src/capability-auth.ts +0 -249
  460. package/src/capability-cli-confirmation.test.ts +0 -90
  461. package/src/capability-options.test.ts +0 -89
  462. package/src/capability-options.ts +0 -57
  463. package/src/capability-package.test.ts +0 -204
  464. package/src/capability-package.ts +0 -555
  465. package/src/capability-registry.test.ts +0 -1905
  466. package/src/capability-registry.ts +0 -1234
  467. package/src/capability-runner.ts +0 -801
  468. package/src/capability-search-relevance.test.ts +0 -73
  469. package/src/capability-studio.test.ts +0 -45
  470. package/src/capability-studio.ts +0 -641
  471. package/src/cdp-log.test.ts +0 -131
  472. package/src/cdp-log.ts +0 -112
  473. package/src/cdp-relay.ts +0 -2944
  474. package/src/cdp-session.ts +0 -77
  475. package/src/cdp-types.ts +0 -158
  476. package/src/channel-owner-inspect.test.ts +0 -94
  477. package/src/chrome-discovery.test.ts +0 -50
  478. package/src/chrome-discovery.ts +0 -220
  479. package/src/clean-html.ts +0 -141
  480. package/src/cli-help.test.ts +0 -123
  481. package/src/cli.ts +0 -3181
  482. package/src/cloud-client.ts +0 -179
  483. package/src/create-logger.ts +0 -38
  484. package/src/debugger-examples-types.ts +0 -16
  485. package/src/debugger-examples.ts +0 -66
  486. package/src/debugger.ts +0 -708
  487. package/src/diff-utils.test.ts +0 -152
  488. package/src/diff-utils.ts +0 -70
  489. package/src/doctor.test.ts +0 -244
  490. package/src/doctor.ts +0 -321
  491. package/src/editor-examples.ts +0 -158
  492. package/src/editor.ts +0 -426
  493. package/src/env-compat.ts +0 -28
  494. package/src/executor.ts +0 -1824
  495. package/src/executor.unit.test.ts +0 -168
  496. package/src/extension-connection.test.ts +0 -855
  497. package/src/extension-icon-warning.test.ts +0 -45
  498. package/src/ghost-browser.ts +0 -149
  499. package/src/ghost-cursor-client.ts +0 -494
  500. package/src/ghost-cursor-controller.ts +0 -129
  501. package/src/ghost-cursor.ts +0 -123
  502. package/src/htmlrewrite.test.ts +0 -8008
  503. package/src/htmlrewrite.ts +0 -390
  504. package/src/index.ts +0 -53
  505. package/src/kill-port.ts +0 -219
  506. package/src/kitty-graphics.test.ts +0 -139
  507. package/src/kitty-graphics.ts +0 -79
  508. package/src/locator-selector.test.ts +0 -119
  509. package/src/mcp-client.ts +0 -78
  510. package/src/mcp.ts +0 -629
  511. package/src/on-mouse-action.test.ts +0 -226
  512. package/src/options-page.test.ts +0 -839
  513. package/src/package-paths.ts +0 -38
  514. package/src/page-markdown.ts +0 -240
  515. package/src/performance-examples.ts +0 -186
  516. package/src/playwright-import.ts +0 -59
  517. package/src/popup-relocation.test.ts +0 -163
  518. package/src/product-paths.test.ts +0 -47
  519. package/src/product-paths.ts +0 -28
  520. package/src/protocol.test.ts +0 -52
  521. package/src/protocol.ts +0 -351
  522. package/src/react-source.ts +0 -379
  523. package/src/relay-client.test.ts +0 -375
  524. package/src/relay-client.ts +0 -572
  525. package/src/relay-core.test.ts +0 -1603
  526. package/src/relay-navigation.test.ts +0 -790
  527. package/src/relay-session.test.ts +0 -1375
  528. package/src/relay-state.test.ts +0 -729
  529. package/src/relay-state.ts +0 -561
  530. package/src/replay-ai-index.test.ts +0 -278
  531. package/src/replay-ai-index.ts +0 -872
  532. package/src/replay-cli.test.ts +0 -325
  533. package/src/replay-eval.ts +0 -1039
  534. package/src/replay-handoff.test.ts +0 -163
  535. package/src/replay-handoff.ts +0 -109
  536. package/src/replay-workflow-compiler.test.ts +0 -250
  537. package/src/replay-workflow-compiler.ts +0 -700
  538. package/src/resource.md +0 -409
  539. package/src/rrweb-recording-relay.test.ts +0 -99
  540. package/src/rrweb-recording-relay.ts +0 -400
  541. package/src/rrweb-recording.ts +0 -322
  542. package/src/scoped-fs.test.ts +0 -80
  543. package/src/scoped-fs.ts +0 -420
  544. package/src/skill-stub.test.ts +0 -24
  545. package/src/snapshot-tools.test.ts +0 -1017
  546. package/src/snapshots/hacker-news-accessibility-full.md +0 -81
  547. package/src/snapshots/hacker-news-accessibility-interactive.md +0 -43
  548. package/src/snapshots/page-markdown-output.txt +0 -16
  549. package/src/snapshots/shadcn-ui-accessibility-full.md +0 -201
  550. package/src/snapshots/shadcn-ui-accessibility-interactive.md +0 -109
  551. package/src/start-relay-server.ts +0 -69
  552. package/src/styles-examples.ts +0 -84
  553. package/src/styles.ts +0 -343
  554. package/src/tabwright-agent-skill.test.ts +0 -61
  555. package/src/tabwright-agent-skill.ts +0 -105
  556. package/src/test-declarations.ts +0 -13
  557. package/src/test-utils.test.ts +0 -70
  558. package/src/test-utils.ts +0 -566
  559. package/src/utils.ts +0 -78
  560. package/src/wait-for-page-load.ts +0 -198
  561. package/src/workflow-capability.ts +0 -417
  562. package/src/workflow-script-flow.test.ts +0 -388
package/src/resource.md DELETED
@@ -1,409 +0,0 @@
1
- You can also find `getByRole` to get elements on the page.
2
-
3
- ```javascript
4
- // Then use the information from the snapshot to click elements
5
- // For example, if snapshot shows: { "role": "button", "name": "Sign In" }
6
- await page.getByRole('button', { name: 'Sign In' }).click()
7
-
8
- // For a link with { "role": "link", "name": "About" }
9
- await page.getByRole('link', { name: 'About' }).click()
10
-
11
- // For a textbox with { "role": "textbox", "name": "Email" }
12
- await page.getByRole('textbox', { name: 'Email' }).fill('user@example.com')
13
-
14
- // For a heading with { "role": "heading", "name": "Welcome to Example.com" }
15
- const headingText = await page.getByRole('heading', { name: 'Welcome to Example.com' }).textContent()
16
- console.log('Heading text:', headingText)
17
- ```
18
-
19
- ### Complete Example: Find and Click Elements
20
-
21
- ```javascript
22
- await page.getByRole('button', { name: 'Submit Form' }).click()
23
- console.log('Clicked submit button')
24
-
25
- await waitForPageLoad({ page })
26
- console.log('Form submitted successfully')
27
- ```
28
-
29
- ## Core Concepts
30
-
31
- ### Page and Context
32
-
33
- In Playwright, automation happens through a `page` object (representing a browser tab) and `context` (representing a browser session with cookies, storage, etc.).
34
-
35
- ```javascript
36
- // Assuming you have page and context already available
37
- const page = await context.newPage()
38
- ```
39
-
40
- ### Element Selection
41
-
42
- Playwright uses locators to find elements. The examples below show various selection methods:
43
-
44
- ```javascript
45
- // By role (recommended)
46
- await page.getByRole('button', { name: 'Submit' })
47
-
48
- // By text
49
- await page.getByText('Welcome')
50
-
51
- // By placeholder
52
- await page.getByPlaceholder('Enter email')
53
-
54
- // By label
55
- await page.getByLabel('Username')
56
-
57
- // By test id
58
- await page.getByTestId('submit-button')
59
-
60
- // By CSS selector
61
- await page.locator('.my-class')
62
-
63
- // By XPath
64
- await page.locator('//div[@class="content"]')
65
- ```
66
-
67
- ## Navigation
68
-
69
- ### Navigate to URL
70
-
71
- ```javascript
72
- await page.goto('https://example.com')
73
- // Wait for page load (smart detection that ignores analytics/ads)
74
- await page.goto('https://example.com', { waitUntil: 'domcontentloaded' })
75
- await waitForPageLoad({ page })
76
- ```
77
-
78
- ### Navigate Back/Forward
79
-
80
- ```javascript
81
- // Go back to previous page
82
- await page.goBack()
83
-
84
- // Go forward to next page
85
- await page.goForward()
86
- ```
87
-
88
- ## Screenshots
89
-
90
- ### Take Screenshot
91
-
92
- ```javascript
93
- // Screenshot of viewport
94
- await page.screenshot({ path: 'screenshot.png' })
95
-
96
- // Full page screenshot
97
- await page.screenshot({ path: 'fullpage.png', fullPage: true })
98
-
99
- // Screenshot of specific element
100
- const element = await page.getByRole('button', { name: 'Submit' })
101
- await element.screenshot({ path: 'button.png' })
102
-
103
- // Screenshot with custom dimensions
104
- await page.setViewportSize({ width: 1280, height: 720 })
105
- await page.screenshot({ path: 'custom-size.png' })
106
- ```
107
-
108
- ## Mouse Interactions
109
-
110
- ### Click Elements
111
-
112
- ```javascript
113
- // Click by role
114
- await page.getByRole('button', { name: 'Submit' }).click()
115
-
116
- // Click at coordinates
117
- await page.mouse.click(100, 200)
118
-
119
- // Double click
120
- await page.getByText('Double click me').dblclick()
121
-
122
- // Right click
123
- await page.getByText('Right click me').click({ button: 'right' })
124
-
125
- // Click with modifiers
126
- await page.getByText('Ctrl click me').click({ modifiers: ['Control'] })
127
- ```
128
-
129
- ### Hover
130
-
131
- ```javascript
132
- // Hover over element
133
- await page.getByText('Hover me').hover()
134
-
135
- // Hover at coordinates
136
- await page.mouse.move(100, 200)
137
- ```
138
-
139
- ## Keyboard Input
140
-
141
- ### Type Text
142
-
143
- ```javascript
144
- // Type into input field
145
- await page.getByLabel('Email').fill('user@example.com')
146
-
147
- // Type character by character (simulates real typing)
148
- await page.getByLabel('Email').type('user@example.com', { delay: 100 })
149
-
150
- // Clear and type
151
- await page.getByLabel('Email').clear()
152
- await page.getByLabel('Email').fill('new@example.com')
153
- ```
154
-
155
- ### Press Keys
156
-
157
- ```javascript
158
- // Press single key
159
- await page.keyboard.press('Enter')
160
-
161
- // Press key combination
162
- await page.keyboard.press('Control+A')
163
-
164
- // Press sequence of keys
165
- await page.keyboard.press('Tab')
166
- await page.keyboard.press('Tab')
167
- await page.keyboard.press('Space')
168
-
169
- // Common key shortcuts
170
- await page.keyboard.press('Control+C') // Copy
171
- await page.keyboard.press('Control+V') // Paste
172
- await page.keyboard.press('Control+Z') // Undo
173
- ```
174
-
175
- ## Form Interactions
176
-
177
- ### Select Dropdown Options
178
-
179
- ```javascript
180
- // Select by value
181
- await page.selectOption('select#country', 'us')
182
-
183
- // Select by label
184
- await page.selectOption('select#country', { label: 'United States' })
185
-
186
- // Select multiple options
187
- await page.selectOption('select#colors', ['red', 'blue', 'green'])
188
-
189
- // Get selected option
190
- const selectedValue = await page.$eval('select#country', (el) => el.value)
191
- ```
192
-
193
- ### Checkboxes and Radio Buttons
194
-
195
- ```javascript
196
- // Check checkbox
197
- await page.getByLabel('I agree').check()
198
-
199
- // Uncheck checkbox
200
- await page.getByLabel('Subscribe').uncheck()
201
-
202
- // Check if checked
203
- const isChecked = await page.getByLabel('I agree').isChecked()
204
-
205
- // Select radio button
206
- await page.getByLabel('Option A').check()
207
- ```
208
-
209
- ## JavaScript Evaluation
210
-
211
- ### Execute JavaScript in Page Context
212
-
213
- ```javascript
214
- // Evaluate simple expression
215
- const result = await page.evaluate(() => 2 + 2)
216
-
217
- // Access page variables
218
- const pageTitle = await page.evaluate(() => document.title)
219
-
220
- // Modify page
221
- await page.evaluate(() => {
222
- document.body.style.backgroundColor = 'red'
223
- })
224
-
225
- // Pass arguments to page context
226
- const sum = await page.evaluate(([a, b]) => a + b, [5, 3])
227
-
228
- // Work with elements
229
- const elementText = await page.evaluate((el) => el.textContent, await page.getByRole('heading'))
230
- ```
231
-
232
- ### Execute JavaScript on Element
233
-
234
- ```javascript
235
- // Get element property
236
- const href = await page.getByRole('link').evaluate((el) => el.href)
237
-
238
- // Modify element
239
- await page.getByRole('button').evaluate((el) => {
240
- el.style.backgroundColor = 'green'
241
- el.disabled = true
242
- })
243
-
244
- // Scroll element into view
245
- await page.getByText('Section').evaluate((el) => el.scrollIntoView())
246
- ```
247
-
248
- ## File Handling
249
-
250
- ### File Upload
251
-
252
- ```javascript
253
- // Upload single file
254
- await page.getByLabel('Upload file').setInputFiles('/path/to/file.pdf')
255
-
256
- // Upload multiple files
257
- await page.getByLabel('Upload files').setInputFiles(['/path/to/file1.pdf', '/path/to/file2.pdf'])
258
-
259
- // Clear file input
260
- await page.getByLabel('Upload file').setInputFiles([])
261
-
262
- // For file inputs, use setInputFiles directly on the input element
263
- // Find the file input element (often hidden)
264
- await page.locator('input[type="file"]').setInputFiles('/path/to/file.pdf')
265
- ```
266
-
267
- ## Network Monitoring
268
-
269
- ### Check Network Activity
270
-
271
- ```javascript
272
- // Wait for a specific request to complete and get its response
273
- const response = await page.waitForResponse(
274
- (response) => response.url().includes('/api/user') && response.status() === 200,
275
- )
276
-
277
- // Get response data
278
- const responseBody = await response.json()
279
- console.log('API response:', responseBody)
280
-
281
- // Wait for specific request
282
- const request = await page.waitForRequest('**/api/data')
283
- console.log('Request URL:', request.url())
284
- console.log('Request method:', request.method())
285
-
286
- // Get all resources loaded by the page
287
- const resources = await page.evaluate(() =>
288
- performance.getEntriesByType('resource').map((r) => ({
289
- name: r.name,
290
- duration: r.duration,
291
- size: r.transferSize,
292
- })),
293
- )
294
- console.log('Page resources:', resources)
295
- ```
296
-
297
- ## Console Messages
298
-
299
- ### Capture Console Output
300
-
301
- ```javascript
302
- // Console messages are automatically captured by the MCP implementation
303
- // Use the console_logs tool to retrieve them
304
-
305
- // To trigger console messages from the page:
306
- await page.evaluate(() => {
307
- console.log('This message will be captured')
308
- console.error('This error will be captured')
309
- console.warn('This warning will be captured')
310
- })
311
-
312
- // Then use the console_logs MCP tool to retrieve all captured messages
313
- // The tool provides filtering by type and pagination
314
- ```
315
-
316
- ## Waiting
317
-
318
- ### Wait for Conditions
319
-
320
- ```javascript
321
- // Wait for element to appear
322
- await page.waitForSelector('.success-message')
323
-
324
- // Wait for element to disappear
325
- await page.waitForSelector('.loading', { state: 'hidden' })
326
-
327
- await page.waitForURL(/github\.com.*\/pull/)
328
- await page.waitForURL(/\/new-org/)
329
-
330
- // Wait for text to appear
331
- await page.waitForFunction((text) => document.body.textContent.includes(text), 'Success!')
332
-
333
- // Wait for navigation
334
- await page.waitForURL('**/success')
335
-
336
- // Wait for page load (smart detection that ignores analytics/ads)
337
- await waitForPageLoad({ page })
338
-
339
- // Wait for specific condition
340
- await page.waitForFunction((text) => document.querySelector('.status')?.textContent === text, 'Ready')
341
- ```
342
-
343
- ### Wait for Text to Appear or Disappear
344
-
345
- ```javascript
346
- // Wait for specific text to appear on the page
347
- await page.getByText('Loading complete').first().waitFor({ state: 'visible' })
348
- console.log('Loading complete text is now visible')
349
-
350
- // Wait for text to disappear from the page
351
- await page.getByText('Loading...').first().waitFor({ state: 'hidden' })
352
- console.log('Loading text has disappeared')
353
-
354
- // Wait for multiple conditions sequentially
355
- // First wait for loading to disappear, then wait for success message
356
- await page.getByText('Processing...').first().waitFor({ state: 'hidden' })
357
- await page.getByText('Success!').first().waitFor({ state: 'visible' })
358
- console.log('Processing finished and success message appeared')
359
-
360
- // Example: Wait for error message to disappear before proceeding
361
- await page.getByText('Error: Please try again').first().waitFor({ state: 'hidden' })
362
- await page.getByRole('button', { name: 'Submit' }).click()
363
-
364
- // Example: Wait for confirmation text after form submission
365
- await page.getByRole('button', { name: 'Save' }).click()
366
- await page.getByText('Your changes have been saved').first().waitFor({ state: 'visible' })
367
- console.log('Save confirmed')
368
-
369
- // Example: Wait for dynamic content to load
370
- await page.getByRole('button', { name: 'Load More' }).click()
371
- await page.getByText('Loading more items...').first().waitFor({ state: 'visible' })
372
- await page.getByText('Loading more items...').first().waitFor({ state: 'hidden' })
373
- console.log('Additional items loaded')
374
- ```
375
-
376
- ### Work with Frames
377
-
378
- ```javascript
379
- // Get frame by name
380
- const frame = page.frame('frameName')
381
-
382
- // Get frame by URL
383
- const frame = page.frame({ url: /frame\.html/ })
384
-
385
- // Interact with frame content
386
- await frame.getByText('In Frame').click()
387
-
388
- // Get all frames
389
- const frames = page.frames()
390
- ```
391
-
392
- ## Best Practices
393
-
394
- ### Reliable Selectors
395
-
396
- ```javascript
397
- // Prefer user-facing attributes
398
- await page.getByRole('button', { name: 'Submit' })
399
- await page.getByLabel('Email')
400
- await page.getByPlaceholder('Search...')
401
- await page.getByText('Welcome')
402
-
403
- // Use test IDs for complex cases
404
- await page.getByTestId('complex-component')
405
-
406
- // Avoid brittle selectors
407
- // Bad: await page.locator('.btn-3842');
408
- // Good: await page.getByRole('button', { name: 'Submit' });
409
- ```
@@ -1,99 +0,0 @@
1
- import fs from 'node:fs'
2
- import path from 'node:path'
3
- import { afterEach, describe, expect, test } from 'vitest'
4
- import { RrwebRecordingRelay, getSavedRrwebRecordingWithEvents, listSavedRrwebRecordings } from './rrweb-recording-relay.js'
5
- import type { RrwebEvent } from './protocol.js'
6
-
7
- let previousHome: string | undefined
8
- let testHome: string | null = null
9
-
10
- function createTempDir(prefix: string): string {
11
- const tempRoot = path.join(process.cwd(), 'tmp')
12
- fs.mkdirSync(tempRoot, { recursive: true })
13
- return fs.mkdtempSync(path.join(tempRoot, prefix))
14
- }
15
-
16
- function useTempHome(): string {
17
- previousHome = process.env.HOME
18
- testHome = createTempDir('rrweb-recording-relay-home-')
19
- process.env.HOME = testHome
20
- return testHome
21
- }
22
-
23
- afterEach(() => {
24
- if (previousHome === undefined) {
25
- delete process.env.HOME
26
- } else {
27
- process.env.HOME = previousHome
28
- }
29
- previousHome = undefined
30
-
31
- if (testHome) {
32
- fs.rmSync(testHome, { recursive: true, force: true })
33
- testHome = null
34
- }
35
- })
36
-
37
- describe('RrwebRecordingRelay', () => {
38
- test('saves finalized rrweb events metadata and payload', async () => {
39
- useTempHome()
40
-
41
- const startedAt = Date.now() - 1000
42
- const events: RrwebEvent[] = [
43
- {
44
- type: 4,
45
- timestamp: startedAt + 200,
46
- data: {
47
- href: 'https://example.com/materials/new',
48
- width: 1280,
49
- height: 720,
50
- },
51
- },
52
- ]
53
-
54
- const relayRef: { current?: RrwebRecordingRelay } = {}
55
- const relay = new RrwebRecordingRelay(
56
- async ({ method }) => {
57
- if (method === 'startRrwebRecording') {
58
- return { success: true, tabId: 42, startedAt, url: 'https://example.com/materials/new' }
59
- }
60
- if (method === 'stopRrwebRecording') {
61
- queueMicrotask(() => {
62
- const currentRelay = relayRef.current
63
- if (!currentRelay) {
64
- throw new Error('Rrweb recording relay ref is not initialized')
65
- }
66
- currentRelay.handleRrwebRecordingData({
67
- method: 'rrwebRecordingData',
68
- params: {
69
- tabId: 42,
70
- events,
71
- final: true,
72
- },
73
- })
74
- })
75
- return { success: true, tabId: 42, duration: 1000 }
76
- }
77
- throw new Error(`Unexpected method: ${method}`)
78
- },
79
- () => {
80
- return true
81
- },
82
- )
83
- relayRef.current = relay
84
-
85
- const startResult = await relay.startRecording({ sessionId: 'pw-tab-rrweb' })
86
- expect(startResult.success).toBe(true)
87
-
88
- const stopResult = await relay.stopRecording({ sessionId: 'pw-tab-rrweb' })
89
- expect(stopResult.success).toBe(true)
90
-
91
- const saved = listSavedRrwebRecordings({ limit: 1 })
92
- expect(saved).toHaveLength(1)
93
- expect(saved[0].eventCount).toBe(1)
94
- expect(saved[0].url).toBe('https://example.com/materials/new')
95
-
96
- const replay = getSavedRrwebRecordingWithEvents(saved[0].id)
97
- expect(replay?.events).toEqual(events)
98
- })
99
- })