tabwright 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bin.js +4 -0
- package/dist/a11y-client.js +204 -0
- package/dist/agent-skills/tabwright/SKILL.md +119 -0
- package/dist/aria-snapshot.d.ts +262 -0
- package/dist/aria-snapshot.d.ts.map +1 -0
- package/dist/aria-snapshot.js +1256 -0
- package/dist/aria-snapshot.js.map +1 -0
- package/dist/aria-snapshot.test.d.ts +2 -0
- package/dist/aria-snapshot.test.d.ts.map +1 -0
- package/dist/aria-snapshot.test.js +270 -0
- package/dist/aria-snapshot.test.js.map +1 -0
- package/dist/aria-snapshot.unit.test.d.ts +2 -0
- package/dist/aria-snapshot.unit.test.d.ts.map +1 -0
- package/dist/aria-snapshot.unit.test.js +542 -0
- package/dist/aria-snapshot.unit.test.js.map +1 -0
- package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts +5 -0
- package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts.map +1 -0
- package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js +5 -0
- package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js.map +1 -0
- package/dist/bippy.js +894 -0
- package/dist/browser-config.d.ts +13 -0
- package/dist/browser-config.d.ts.map +1 -0
- package/dist/browser-config.js +126 -0
- package/dist/browser-config.js.map +1 -0
- package/dist/browser-install.d.ts +16 -0
- package/dist/browser-install.d.ts.map +1 -0
- package/dist/browser-install.js +238 -0
- package/dist/browser-install.js.map +1 -0
- package/dist/browser-launch.d.ts +17 -0
- package/dist/browser-launch.d.ts.map +1 -0
- package/dist/browser-launch.js +44 -0
- package/dist/browser-launch.js.map +1 -0
- package/dist/builtin-capabilities.d.ts +28 -0
- package/dist/builtin-capabilities.d.ts.map +1 -0
- package/dist/builtin-capabilities.js +2673 -0
- package/dist/builtin-capabilities.js.map +1 -0
- package/dist/capability-agent-skill.d.ts +60 -0
- package/dist/capability-agent-skill.d.ts.map +1 -0
- package/dist/capability-agent-skill.js +225 -0
- package/dist/capability-agent-skill.js.map +1 -0
- package/dist/capability-auth-state.d.ts +34 -0
- package/dist/capability-auth-state.d.ts.map +1 -0
- package/dist/capability-auth-state.js +157 -0
- package/dist/capability-auth-state.js.map +1 -0
- package/dist/capability-auth.d.ts +36 -0
- package/dist/capability-auth.d.ts.map +1 -0
- package/dist/capability-auth.js +198 -0
- package/dist/capability-auth.js.map +1 -0
- package/dist/capability-cli-confirmation.test.d.ts +2 -0
- package/dist/capability-cli-confirmation.test.d.ts.map +1 -0
- package/dist/capability-cli-confirmation.test.js +79 -0
- package/dist/capability-cli-confirmation.test.js.map +1 -0
- package/dist/capability-options.d.ts +20 -0
- package/dist/capability-options.d.ts.map +1 -0
- package/dist/capability-options.js +31 -0
- package/dist/capability-options.js.map +1 -0
- package/dist/capability-options.test.d.ts +2 -0
- package/dist/capability-options.test.d.ts.map +1 -0
- package/dist/capability-options.test.js +81 -0
- package/dist/capability-options.test.js.map +1 -0
- package/dist/capability-package.d.ts +27 -0
- package/dist/capability-package.d.ts.map +1 -0
- package/dist/capability-package.js +444 -0
- package/dist/capability-package.js.map +1 -0
- package/dist/capability-package.test.d.ts +2 -0
- package/dist/capability-package.test.d.ts.map +1 -0
- package/dist/capability-package.test.js +179 -0
- package/dist/capability-package.test.js.map +1 -0
- package/dist/capability-registry.d.ts +262 -0
- package/dist/capability-registry.d.ts.map +1 -0
- package/dist/capability-registry.js +931 -0
- package/dist/capability-registry.js.map +1 -0
- package/dist/capability-registry.test.d.ts +2 -0
- package/dist/capability-registry.test.d.ts.map +1 -0
- package/dist/capability-registry.test.js +1683 -0
- package/dist/capability-registry.test.js.map +1 -0
- package/dist/capability-runner.d.ts +99 -0
- package/dist/capability-runner.d.ts.map +1 -0
- package/dist/capability-runner.js +608 -0
- package/dist/capability-runner.js.map +1 -0
- package/dist/capability-search-relevance.test.d.ts +2 -0
- package/dist/capability-search-relevance.test.d.ts.map +1 -0
- package/dist/capability-search-relevance.test.js +67 -0
- package/dist/capability-search-relevance.test.js.map +1 -0
- package/dist/capability-studio.d.ts +11 -0
- package/dist/capability-studio.d.ts.map +1 -0
- package/dist/capability-studio.js +593 -0
- package/dist/capability-studio.js.map +1 -0
- package/dist/capability-studio.test.d.ts +2 -0
- package/dist/capability-studio.test.d.ts.map +1 -0
- package/dist/capability-studio.test.js +41 -0
- package/dist/capability-studio.test.js.map +1 -0
- package/dist/cdp-log.d.ts +19 -0
- package/dist/cdp-log.d.ts.map +1 -0
- package/dist/cdp-log.js +83 -0
- package/dist/cdp-log.js.map +1 -0
- package/dist/cdp-log.test.d.ts +2 -0
- package/dist/cdp-log.test.d.ts.map +1 -0
- package/dist/cdp-log.test.js +109 -0
- package/dist/cdp-log.test.js.map +1 -0
- package/dist/cdp-relay.d.ts +19 -0
- package/dist/cdp-relay.d.ts.map +1 -0
- package/dist/cdp-relay.js +2375 -0
- package/dist/cdp-relay.js.map +1 -0
- package/dist/cdp-session.d.ts +37 -0
- package/dist/cdp-session.d.ts.map +1 -0
- package/dist/cdp-session.js +36 -0
- package/dist/cdp-session.js.map +1 -0
- package/dist/cdp-types.d.ts +65 -0
- package/dist/cdp-types.d.ts.map +1 -0
- package/dist/cdp-types.js +91 -0
- package/dist/cdp-types.js.map +1 -0
- package/dist/channel-owner-inspect.test.d.ts +2 -0
- package/dist/channel-owner-inspect.test.d.ts.map +1 -0
- package/dist/channel-owner-inspect.test.js +75 -0
- package/dist/channel-owner-inspect.test.js.map +1 -0
- package/dist/chrome-discovery.d.ts +65 -0
- package/dist/chrome-discovery.d.ts.map +1 -0
- package/dist/chrome-discovery.js +173 -0
- package/dist/chrome-discovery.js.map +1 -0
- package/dist/chrome-discovery.test.d.ts +2 -0
- package/dist/chrome-discovery.test.d.ts.map +1 -0
- package/dist/chrome-discovery.test.js +41 -0
- package/dist/chrome-discovery.test.js.map +1 -0
- package/dist/clean-html.d.ts +11 -0
- package/dist/clean-html.d.ts.map +1 -0
- package/dist/clean-html.js +106 -0
- package/dist/clean-html.js.map +1 -0
- package/dist/cli-help.test.d.ts +2 -0
- package/dist/cli-help.test.d.ts.map +1 -0
- package/dist/cli-help.test.js +98 -0
- package/dist/cli-help.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +2709 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud-client.d.ts +56 -0
- package/dist/cloud-client.d.ts.map +1 -0
- package/dist/cloud-client.js +127 -0
- package/dist/cloud-client.js.map +1 -0
- package/dist/create-logger.d.ts +9 -0
- package/dist/create-logger.d.ts.map +1 -0
- package/dist/create-logger.js +27 -0
- package/dist/create-logger.js.map +1 -0
- package/dist/debugger-api.md +458 -0
- package/dist/debugger-examples-types.d.ts +24 -0
- package/dist/debugger-examples-types.d.ts.map +1 -0
- package/dist/debugger-examples-types.js +2 -0
- package/dist/debugger-examples-types.js.map +1 -0
- package/dist/debugger-examples.d.ts +6 -0
- package/dist/debugger-examples.d.ts.map +1 -0
- package/dist/debugger-examples.js +53 -0
- package/dist/debugger-examples.js.map +1 -0
- package/dist/debugger.d.ts +381 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/debugger.js +630 -0
- package/dist/debugger.js.map +1 -0
- package/dist/diff-utils.d.ts +20 -0
- package/dist/diff-utils.d.ts.map +1 -0
- package/dist/diff-utils.js +50 -0
- package/dist/diff-utils.js.map +1 -0
- package/dist/diff-utils.test.d.ts +2 -0
- package/dist/diff-utils.test.d.ts.map +1 -0
- package/dist/diff-utils.test.js +137 -0
- package/dist/diff-utils.test.js.map +1 -0
- package/dist/doctor.d.ts +44 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +246 -0
- package/dist/doctor.js.map +1 -0
- package/dist/doctor.test.d.ts +2 -0
- package/dist/doctor.test.d.ts.map +1 -0
- package/dist/doctor.test.js +208 -0
- package/dist/doctor.test.js.map +1 -0
- package/dist/editor-api.md +374 -0
- package/dist/editor-examples.d.ts +11 -0
- package/dist/editor-examples.d.ts.map +1 -0
- package/dist/editor-examples.js +124 -0
- package/dist/editor-examples.js.map +1 -0
- package/dist/editor.d.ts +203 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +363 -0
- package/dist/editor.js.map +1 -0
- package/dist/env-compat.d.ts +2 -0
- package/dist/env-compat.d.ts.map +1 -0
- package/dist/env-compat.js +27 -0
- package/dist/env-compat.js.map +1 -0
- package/dist/executor.d.ts +229 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +1465 -0
- package/dist/executor.js.map +1 -0
- package/dist/executor.unit.test.d.ts +2 -0
- package/dist/executor.unit.test.d.ts.map +1 -0
- package/dist/executor.unit.test.js +143 -0
- package/dist/executor.unit.test.js.map +1 -0
- package/dist/extension/_locales/en/messages.json +278 -0
- package/dist/extension/_locales/zh_CN/messages.json +256 -0
- package/dist/extension/assets/options-CYH96Lcx.css +1349 -0
- package/dist/extension/background.js +3994 -0
- package/dist/extension/icons/SolarCursorSquareBold.png +0 -0
- package/dist/extension/icons/icon-black-128.png +0 -0
- package/dist/extension/icons/icon-black-16.png +0 -0
- package/dist/extension/icons/icon-black-32.png +0 -0
- package/dist/extension/icons/icon-black-48.png +0 -0
- package/dist/extension/icons/icon-gray-128.png +0 -0
- package/dist/extension/icons/icon-gray-16.png +0 -0
- package/dist/extension/icons/icon-gray-32.png +0 -0
- package/dist/extension/icons/icon-gray-48.png +0 -0
- package/dist/extension/icons/icon-green-128.png +0 -0
- package/dist/extension/icons/icon-green-16.png +0 -0
- package/dist/extension/icons/icon-green-32.png +0 -0
- package/dist/extension/icons/icon-green-48.png +0 -0
- package/dist/extension/icons/tabwright-icon-black.png +0 -0
- package/dist/extension/icons/tabwright-icon-gray-disabled.png +0 -0
- package/dist/extension/icons/tabwright-icon-gray-disabled.svg +1 -0
- package/dist/extension/manifest.json +54 -0
- package/dist/extension/options.js +16145 -0
- package/dist/extension/rrweb-recorder.js +12952 -0
- package/dist/extension/src/options.html +165 -0
- package/dist/extension/src/prism-bash.min.js +1 -0
- package/dist/extension/src/prism.min.js +1 -0
- package/dist/extension/src/welcome.html +396 -0
- package/dist/extension-connection.test.d.ts +2 -0
- package/dist/extension-connection.test.d.ts.map +1 -0
- package/dist/extension-connection.test.js +708 -0
- package/dist/extension-connection.test.js.map +1 -0
- package/dist/extension-icon-warning.test.d.ts +2 -0
- package/dist/extension-icon-warning.test.d.ts.map +1 -0
- package/dist/extension-icon-warning.test.js +33 -0
- package/dist/extension-icon-warning.test.js.map +1 -0
- package/dist/ghost-browser.d.ts +62 -0
- package/dist/ghost-browser.d.ts.map +1 -0
- package/dist/ghost-browser.js +107 -0
- package/dist/ghost-browser.js.map +1 -0
- package/dist/ghost-cursor-client.js +374 -0
- package/dist/ghost-cursor-controller.d.ts +46 -0
- package/dist/ghost-cursor-controller.d.ts.map +1 -0
- package/dist/ghost-cursor-controller.js +98 -0
- package/dist/ghost-cursor-controller.js.map +1 -0
- package/dist/ghost-cursor.d.ts +27 -0
- package/dist/ghost-cursor.d.ts.map +1 -0
- package/dist/ghost-cursor.js +79 -0
- package/dist/ghost-cursor.js.map +1 -0
- package/dist/htmlrewrite.d.ts +8 -0
- package/dist/htmlrewrite.d.ts.map +1 -0
- package/dist/htmlrewrite.js +339 -0
- package/dist/htmlrewrite.js.map +1 -0
- package/dist/htmlrewrite.test.d.ts +2 -0
- package/dist/htmlrewrite.test.d.ts.map +1 -0
- package/dist/htmlrewrite.test.js +7975 -0
- package/dist/htmlrewrite.test.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/kill-port.d.ts +29 -0
- package/dist/kill-port.d.ts.map +1 -0
- package/dist/kill-port.js +190 -0
- package/dist/kill-port.js.map +1 -0
- package/dist/kitty-graphics.d.ts +22 -0
- package/dist/kitty-graphics.d.ts.map +1 -0
- package/dist/kitty-graphics.js +71 -0
- package/dist/kitty-graphics.js.map +1 -0
- package/dist/kitty-graphics.test.d.ts +2 -0
- package/dist/kitty-graphics.test.d.ts.map +1 -0
- package/dist/kitty-graphics.test.js +125 -0
- package/dist/kitty-graphics.test.js.map +1 -0
- package/dist/locator-selector.test.d.ts +2 -0
- package/dist/locator-selector.test.d.ts.map +1 -0
- package/dist/locator-selector.test.js +98 -0
- package/dist/locator-selector.test.js.map +1 -0
- package/dist/mcp-client.d.ts +20 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +56 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +511 -0
- package/dist/mcp.js.map +1 -0
- package/dist/on-mouse-action.test.d.ts +2 -0
- package/dist/on-mouse-action.test.d.ts.map +1 -0
- package/dist/on-mouse-action.test.js +180 -0
- package/dist/on-mouse-action.test.js.map +1 -0
- package/dist/options-page.test.d.ts +2 -0
- package/dist/options-page.test.d.ts.map +1 -0
- package/dist/options-page.test.js +773 -0
- package/dist/options-page.test.js.map +1 -0
- package/dist/package-paths.d.ts +4 -0
- package/dist/package-paths.d.ts.map +1 -0
- package/dist/package-paths.js +30 -0
- package/dist/package-paths.js.map +1 -0
- package/dist/page-markdown.d.ts +40 -0
- package/dist/page-markdown.d.ts.map +1 -0
- package/dist/page-markdown.js +181 -0
- package/dist/page-markdown.js.map +1 -0
- package/dist/performance-examples.d.ts +5 -0
- package/dist/performance-examples.d.ts.map +1 -0
- package/dist/performance-examples.js +112 -0
- package/dist/performance-examples.js.map +1 -0
- package/dist/performance-profiling.md +417 -0
- package/dist/playwright-import.d.ts +19 -0
- package/dist/playwright-import.d.ts.map +1 -0
- package/dist/playwright-import.js +40 -0
- package/dist/playwright-import.js.map +1 -0
- package/dist/popup-relocation.test.d.ts +7 -0
- package/dist/popup-relocation.test.d.ts.map +1 -0
- package/dist/popup-relocation.test.js +139 -0
- package/dist/popup-relocation.test.js.map +1 -0
- package/dist/product-paths.d.ts +9 -0
- package/dist/product-paths.d.ts.map +1 -0
- package/dist/product-paths.js +24 -0
- package/dist/product-paths.js.map +1 -0
- package/dist/product-paths.test.d.ts +2 -0
- package/dist/product-paths.test.d.ts.map +1 -0
- package/dist/product-paths.test.js +39 -0
- package/dist/product-paths.test.js.map +1 -0
- package/dist/prompt.md +1004 -0
- package/dist/protocol.d.ts +248 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +59 -0
- package/dist/protocol.js.map +1 -0
- package/dist/protocol.test.d.ts +2 -0
- package/dist/protocol.test.d.ts.map +1 -0
- package/dist/protocol.test.js +31 -0
- package/dist/protocol.test.js.map +1 -0
- package/dist/react-source.d.ts +57 -0
- package/dist/react-source.d.ts.map +1 -0
- package/dist/react-source.js +254 -0
- package/dist/react-source.js.map +1 -0
- package/dist/readability.js +1674 -0
- package/dist/relay-client.d.ts +104 -0
- package/dist/relay-client.d.ts.map +1 -0
- package/dist/relay-client.js +426 -0
- package/dist/relay-client.js.map +1 -0
- package/dist/relay-client.test.d.ts +2 -0
- package/dist/relay-client.test.d.ts.map +1 -0
- package/dist/relay-client.test.js +305 -0
- package/dist/relay-client.test.js.map +1 -0
- package/dist/relay-core.test.d.ts +2 -0
- package/dist/relay-core.test.d.ts.map +1 -0
- package/dist/relay-core.test.js +1427 -0
- package/dist/relay-core.test.js.map +1 -0
- package/dist/relay-navigation.test.d.ts +2 -0
- package/dist/relay-navigation.test.d.ts.map +1 -0
- package/dist/relay-navigation.test.js +661 -0
- package/dist/relay-navigation.test.js.map +1 -0
- package/dist/relay-session.test.d.ts +2 -0
- package/dist/relay-session.test.d.ts.map +1 -0
- package/dist/relay-session.test.js +1121 -0
- package/dist/relay-session.test.js.map +1 -0
- package/dist/relay-state.d.ts +178 -0
- package/dist/relay-state.d.ts.map +1 -0
- package/dist/relay-state.js +346 -0
- package/dist/relay-state.js.map +1 -0
- package/dist/relay-state.test.d.ts +2 -0
- package/dist/relay-state.test.d.ts.map +1 -0
- package/dist/relay-state.test.js +594 -0
- package/dist/relay-state.test.js.map +1 -0
- package/dist/replay-ai-index.d.ts +99 -0
- package/dist/replay-ai-index.d.ts.map +1 -0
- package/dist/replay-ai-index.js +677 -0
- package/dist/replay-ai-index.js.map +1 -0
- package/dist/replay-ai-index.test.d.ts +2 -0
- package/dist/replay-ai-index.test.d.ts.map +1 -0
- package/dist/replay-ai-index.test.js +255 -0
- package/dist/replay-ai-index.test.js.map +1 -0
- package/dist/replay-cli.test.d.ts +2 -0
- package/dist/replay-cli.test.d.ts.map +1 -0
- package/dist/replay-cli.test.js +275 -0
- package/dist/replay-cli.test.js.map +1 -0
- package/dist/replay-eval.d.ts +44 -0
- package/dist/replay-eval.d.ts.map +1 -0
- package/dist/replay-eval.js +902 -0
- package/dist/replay-eval.js.map +1 -0
- package/dist/replay-handoff.d.ts +29 -0
- package/dist/replay-handoff.d.ts.map +1 -0
- package/dist/replay-handoff.js +83 -0
- package/dist/replay-handoff.js.map +1 -0
- package/dist/replay-handoff.test.d.ts +2 -0
- package/dist/replay-handoff.test.d.ts.map +1 -0
- package/dist/replay-handoff.test.js +123 -0
- package/dist/replay-handoff.test.js.map +1 -0
- package/dist/replay-workflow-compiler.d.ts +44 -0
- package/dist/replay-workflow-compiler.d.ts.map +1 -0
- package/dist/replay-workflow-compiler.js +601 -0
- package/dist/replay-workflow-compiler.js.map +1 -0
- package/dist/replay-workflow-compiler.test.d.ts +2 -0
- package/dist/replay-workflow-compiler.test.d.ts.map +1 -0
- package/dist/replay-workflow-compiler.test.js +223 -0
- package/dist/replay-workflow-compiler.test.js.map +1 -0
- package/dist/rrweb-recording-relay.d.ts +56 -0
- package/dist/rrweb-recording-relay.d.ts.map +1 -0
- package/dist/rrweb-recording-relay.js +299 -0
- package/dist/rrweb-recording-relay.js.map +1 -0
- package/dist/rrweb-recording-relay.test.d.ts +2 -0
- package/dist/rrweb-recording-relay.test.d.ts.map +1 -0
- package/dist/rrweb-recording-relay.test.js +85 -0
- package/dist/rrweb-recording-relay.test.js.map +1 -0
- package/dist/rrweb-recording.d.ts +104 -0
- package/dist/rrweb-recording.d.ts.map +1 -0
- package/dist/rrweb-recording.js +180 -0
- package/dist/rrweb-recording.js.map +1 -0
- package/dist/scoped-fs.d.ts +95 -0
- package/dist/scoped-fs.d.ts.map +1 -0
- package/dist/scoped-fs.js +358 -0
- package/dist/scoped-fs.js.map +1 -0
- package/dist/scoped-fs.test.d.ts +5 -0
- package/dist/scoped-fs.test.d.ts.map +1 -0
- package/dist/scoped-fs.test.js +73 -0
- package/dist/scoped-fs.test.js.map +1 -0
- package/dist/selector-generator.js +7378 -0
- package/dist/skill-stub.test.d.ts +2 -0
- package/dist/skill-stub.test.d.ts.map +1 -0
- package/dist/skill-stub.test.js +22 -0
- package/dist/skill-stub.test.js.map +1 -0
- package/dist/snapshot-tools.test.d.ts +2 -0
- package/dist/snapshot-tools.test.d.ts.map +1 -0
- package/dist/snapshot-tools.test.js +856 -0
- package/dist/snapshot-tools.test.js.map +1 -0
- package/dist/start-relay-server.d.ts +6 -0
- package/dist/start-relay-server.d.ts.map +1 -0
- package/dist/start-relay-server.js +57 -0
- package/dist/start-relay-server.js.map +1 -0
- package/dist/styles-api.md +124 -0
- package/dist/styles-examples.d.ts +8 -0
- package/dist/styles-examples.d.ts.map +1 -0
- package/dist/styles-examples.js +64 -0
- package/dist/styles-examples.js.map +1 -0
- package/dist/styles.d.ts +27 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +231 -0
- package/dist/styles.js.map +1 -0
- package/dist/tabwright-agent-skill.d.ts +30 -0
- package/dist/tabwright-agent-skill.d.ts.map +1 -0
- package/dist/tabwright-agent-skill.js +74 -0
- package/dist/tabwright-agent-skill.js.map +1 -0
- package/dist/tabwright-agent-skill.test.d.ts +2 -0
- package/dist/tabwright-agent-skill.test.d.ts.map +1 -0
- package/dist/tabwright-agent-skill.test.js +51 -0
- package/dist/tabwright-agent-skill.test.js.map +1 -0
- package/dist/test-declarations.d.ts +13 -0
- package/dist/test-declarations.d.ts.map +1 -0
- package/dist/test-declarations.js +2 -0
- package/dist/test-declarations.js.map +1 -0
- package/dist/test-utils.d.ts +69 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +448 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/test-utils.test.d.ts +2 -0
- package/dist/test-utils.test.d.ts.map +1 -0
- package/dist/test-utils.test.js +55 -0
- package/dist/test-utils.test.js.map +1 -0
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +60 -0
- package/dist/utils.js.map +1 -0
- package/dist/wait-for-page-load.d.ts +16 -0
- package/dist/wait-for-page-load.d.ts.map +1 -0
- package/dist/wait-for-page-load.js +146 -0
- package/dist/wait-for-page-load.js.map +1 -0
- package/dist/workflow-capability.d.ts +72 -0
- package/dist/workflow-capability.d.ts.map +1 -0
- package/dist/workflow-capability.js +316 -0
- package/dist/workflow-capability.js.map +1 -0
- package/dist/workflow-script-flow.test.d.ts +2 -0
- package/dist/workflow-script-flow.test.d.ts.map +1 -0
- package/dist/workflow-script-flow.test.js +285 -0
- package/dist/workflow-script-flow.test.js.map +1 -0
- package/package.json +80 -0
- package/src/__snapshots__/x.com.processed.html +1003 -0
- package/src/__snapshots__/x.com.processed.withStyles.html +2720 -0
- package/src/a11y-client.ts +241 -0
- package/src/agent-skills/conan-config/SKILL.md +141 -0
- package/src/agent-skills/conan-config/agents/openai.yaml +4 -0
- package/src/aria-snapshot.test.ts +311 -0
- package/src/aria-snapshot.ts +1681 -0
- package/src/aria-snapshot.unit.test.ts +615 -0
- package/src/aria-snapshots/github-interactive.txt +193 -0
- package/src/aria-snapshots/github-raw.txt +309 -0
- package/src/aria-snapshots/hackernews-interactive.txt +477 -0
- package/src/aria-snapshots/hackernews-raw.txt +428 -0
- package/src/aria-snapshots/prosemirror-interactive.txt +66 -0
- package/src/aria-snapshots/prosemirror-raw.txt +145 -0
- package/src/assets/aria-labels-hacker-news.png +0 -0
- package/src/assets/aria-labels-old-reddit.png +0 -0
- package/src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts +5 -0
- package/src/assets/cursors/screen-studio/pointer-macos-tahoe.svg +18 -0
- package/src/assets/x.com.html +32946 -0
- package/src/browser-config.ts +179 -0
- package/src/browser-install.ts +284 -0
- package/src/browser-launch.ts +75 -0
- package/src/builtin-capabilities.ts +2765 -0
- package/src/capability-agent-skill.ts +305 -0
- package/src/capability-auth-state.ts +197 -0
- package/src/capability-auth.ts +249 -0
- package/src/capability-cli-confirmation.test.ts +90 -0
- package/src/capability-options.test.ts +89 -0
- package/src/capability-options.ts +57 -0
- package/src/capability-package.test.ts +204 -0
- package/src/capability-package.ts +555 -0
- package/src/capability-registry.test.ts +1905 -0
- package/src/capability-registry.ts +1234 -0
- package/src/capability-runner.ts +801 -0
- package/src/capability-search-relevance.test.ts +73 -0
- package/src/capability-studio.test.ts +45 -0
- package/src/capability-studio.ts +641 -0
- package/src/cdp-log.test.ts +131 -0
- package/src/cdp-log.ts +112 -0
- package/src/cdp-relay.ts +2944 -0
- package/src/cdp-session.ts +77 -0
- package/src/cdp-types.ts +158 -0
- package/src/channel-owner-inspect.test.ts +94 -0
- package/src/chrome-discovery.test.ts +50 -0
- package/src/chrome-discovery.ts +220 -0
- package/src/clean-html.ts +141 -0
- package/src/cli-help.test.ts +123 -0
- package/src/cli.ts +3181 -0
- package/src/cloud-client.ts +179 -0
- package/src/create-logger.ts +38 -0
- package/src/debugger-examples-types.ts +16 -0
- package/src/debugger-examples.ts +66 -0
- package/src/debugger.ts +708 -0
- package/src/diff-utils.test.ts +152 -0
- package/src/diff-utils.ts +70 -0
- package/src/doctor.test.ts +244 -0
- package/src/doctor.ts +321 -0
- package/src/editor-examples.ts +158 -0
- package/src/editor.ts +426 -0
- package/src/env-compat.ts +28 -0
- package/src/executor.ts +1824 -0
- package/src/executor.unit.test.ts +168 -0
- package/src/extension-connection.test.ts +855 -0
- package/src/extension-icon-warning.test.ts +45 -0
- package/src/ghost-browser.ts +149 -0
- package/src/ghost-cursor-client.ts +494 -0
- package/src/ghost-cursor-controller.ts +129 -0
- package/src/ghost-cursor.ts +123 -0
- package/src/htmlrewrite.test.ts +8008 -0
- package/src/htmlrewrite.ts +390 -0
- package/src/index.ts +53 -0
- package/src/kill-port.ts +219 -0
- package/src/kitty-graphics.test.ts +139 -0
- package/src/kitty-graphics.ts +79 -0
- package/src/locator-selector.test.ts +119 -0
- package/src/mcp-client.ts +78 -0
- package/src/mcp.ts +629 -0
- package/src/on-mouse-action.test.ts +226 -0
- package/src/options-page.test.ts +839 -0
- package/src/package-paths.ts +38 -0
- package/src/page-markdown.ts +240 -0
- package/src/performance-examples.ts +186 -0
- package/src/playwright-import.ts +59 -0
- package/src/popup-relocation.test.ts +163 -0
- package/src/product-paths.test.ts +47 -0
- package/src/product-paths.ts +28 -0
- package/src/protocol.test.ts +52 -0
- package/src/protocol.ts +351 -0
- package/src/react-source.ts +379 -0
- package/src/relay-client.test.ts +375 -0
- package/src/relay-client.ts +572 -0
- package/src/relay-core.test.ts +1603 -0
- package/src/relay-navigation.test.ts +790 -0
- package/src/relay-session.test.ts +1375 -0
- package/src/relay-state.test.ts +729 -0
- package/src/relay-state.ts +561 -0
- package/src/replay-ai-index.test.ts +278 -0
- package/src/replay-ai-index.ts +872 -0
- package/src/replay-cli.test.ts +325 -0
- package/src/replay-eval.ts +1039 -0
- package/src/replay-handoff.test.ts +163 -0
- package/src/replay-handoff.ts +109 -0
- package/src/replay-workflow-compiler.test.ts +250 -0
- package/src/replay-workflow-compiler.ts +700 -0
- package/src/resource.md +409 -0
- package/src/rrweb-recording-relay.test.ts +99 -0
- package/src/rrweb-recording-relay.ts +400 -0
- package/src/rrweb-recording.ts +322 -0
- package/src/scoped-fs.test.ts +80 -0
- package/src/scoped-fs.ts +420 -0
- package/src/skill-stub.test.ts +24 -0
- package/src/skill.md +1413 -0
- package/src/snapshot-tools.test.ts +1017 -0
- package/src/snapshots/hacker-news-accessibility-full.md +81 -0
- package/src/snapshots/hacker-news-accessibility-interactive.md +43 -0
- package/src/snapshots/page-markdown-output.txt +16 -0
- package/src/snapshots/shadcn-ui-accessibility-full.md +201 -0
- package/src/snapshots/shadcn-ui-accessibility-interactive.md +109 -0
- package/src/start-relay-server.ts +69 -0
- package/src/styles-examples.ts +84 -0
- package/src/styles.ts +343 -0
- package/src/tabwright-agent-skill.test.ts +61 -0
- package/src/tabwright-agent-skill.ts +105 -0
- package/src/test-declarations.ts +13 -0
- package/src/test-utils.test.ts +70 -0
- package/src/test-utils.ts +566 -0
- package/src/utils.ts +78 -0
- package/src/wait-for-page-load.ts +198 -0
- package/src/workflow-capability.ts +417 -0
- package/src/workflow-script-flow.test.ts +388 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
[return value] - layouttable:
|
|
2
|
+
- layouttablerow:
|
|
3
|
+
- layouttablecell "Hacker Newsnew | past | comments | ask | show | jobs | submit login":
|
|
4
|
+
- layouttable:
|
|
5
|
+
- layouttablerow:
|
|
6
|
+
- layouttablecell:
|
|
7
|
+
- role=link
|
|
8
|
+
- layouttablecell "Hacker Newsnew | past | comments | ask | show | jobs | submit":
|
|
9
|
+
- role=link[name="Hacker News"]
|
|
10
|
+
- role=link[name="new"]
|
|
11
|
+
- role=link[name="past"] >> nth=0
|
|
12
|
+
- role=link[name="comments"]
|
|
13
|
+
- role=link[name="ask"]
|
|
14
|
+
- role=link[name="show"]
|
|
15
|
+
- role=link[name="jobs"]
|
|
16
|
+
- role=link[name="submit"]
|
|
17
|
+
- layouttablecell:
|
|
18
|
+
- role=link[name="login"]
|
|
19
|
+
- layouttablerow:
|
|
20
|
+
- layouttablecell "Y Combinator (ycombinator.com) 57 points by pg on Oct 9, 2006 | hide | past | favorite | 3 comments sama on Oct 9, 2006 | [–] \"the rising star of venture capital\" -unknown VC eating lunch on SHR pg on Oct 9, 2006":
|
|
21
|
+
- layouttable:
|
|
22
|
+
- layouttablerow:
|
|
23
|
+
- layouttablecell:
|
|
24
|
+
- link [id="up_1"]
|
|
25
|
+
- layouttablecell "Y Combinator (ycombinator.com)":
|
|
26
|
+
- role=link[name="Y Combinator"]
|
|
27
|
+
- role=link[name="ycombinator.com"]
|
|
28
|
+
- layouttablerow:
|
|
29
|
+
- layouttablecell "57 points by pg on Oct 9, 2006 | hide | past | favorite | 3 comments":
|
|
30
|
+
- role=link[name="pg"] >> nth=0
|
|
31
|
+
- role=link[name="on Oct 9, 2006"] >> nth=0
|
|
32
|
+
- role=link[name="hide"]
|
|
33
|
+
- role=link[name="past"] >> nth=1
|
|
34
|
+
- role=link[name="favorite"]
|
|
35
|
+
- role=link[name="3 comments"]
|
|
36
|
+
- layouttable:
|
|
37
|
+
- layouttablerow:
|
|
38
|
+
- layouttablecell:
|
|
39
|
+
- layouttable:
|
|
40
|
+
- layouttablerow:
|
|
41
|
+
- layouttablecell:
|
|
42
|
+
- link [id="up_15"]
|
|
43
|
+
- layouttablecell "sama on Oct 9, 2006 | [–] \"the rising star of venture capital\" -unknown VC eating lunch on SHR":
|
|
44
|
+
- role=link[name="sama"]
|
|
45
|
+
- role=link[name="on Oct 9, 2006"] >> nth=1
|
|
46
|
+
- link "[–]" [id="15"]
|
|
47
|
+
- layouttablerow:
|
|
48
|
+
- layouttablecell:
|
|
49
|
+
- layouttable:
|
|
50
|
+
- layouttablerow:
|
|
51
|
+
- layouttablecell:
|
|
52
|
+
- link [id="up_17"]
|
|
53
|
+
- layouttablecell "pg on Oct 9, 2006 | | [–] Is there anywhere to eat on Sandhill Road?":
|
|
54
|
+
- role=link[name="pg"] >> nth=1
|
|
55
|
+
- role=link[name="on Oct 9, 2006"] >> nth=2
|
|
56
|
+
- link "[–]" [id="17"]
|
|
57
|
+
- layouttablerow:
|
|
58
|
+
- layouttablecell:
|
|
59
|
+
- layouttable:
|
|
60
|
+
- layouttablerow:
|
|
61
|
+
- layouttablecell:
|
|
62
|
+
- link [id="up_1079"]
|
|
63
|
+
- layouttablecell "dmon on Feb 25, 2007 | | | [–] sure":
|
|
64
|
+
- role=link[name="dmon"]
|
|
65
|
+
- role=link[name="on Feb 25, 2007"]
|
|
66
|
+
- link "[–]" [id="1079"]
|
|
67
|
+
- layouttablerow:
|
|
68
|
+
- layouttablecell "Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact":
|
|
69
|
+
- role=link[name="Guidelines"]
|
|
70
|
+
- role=link[name="FAQ"]
|
|
71
|
+
- role=link[name="Lists"]
|
|
72
|
+
- role=link[name="API"]
|
|
73
|
+
- role=link[name="Security"]
|
|
74
|
+
- role=link[name="Legal"]
|
|
75
|
+
- role=link[name="Apply to YC"]
|
|
76
|
+
- role=link[name="Contact"]
|
|
77
|
+
- form:
|
|
78
|
+
- text: "Search:"
|
|
79
|
+
- role=textbox
|
|
80
|
+
|
|
81
|
+
use refToLocator({ ref: 'e3' }) to get locators for ref strings.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
[return value] - role=link
|
|
2
|
+
- role=link[name="Hacker News"]
|
|
3
|
+
- role=link[name="new"]
|
|
4
|
+
- role=link[name="past"] >> nth=0
|
|
5
|
+
- role=link[name="comments"]
|
|
6
|
+
- role=link[name="ask"]
|
|
7
|
+
- role=link[name="show"]
|
|
8
|
+
- role=link[name="jobs"]
|
|
9
|
+
- role=link[name="submit"]
|
|
10
|
+
- role=link[name="login"]
|
|
11
|
+
- link [id="up_1"]
|
|
12
|
+
- role=link[name="Y Combinator"]
|
|
13
|
+
- role=link[name="ycombinator.com"]
|
|
14
|
+
- role=link[name="pg"] >> nth=0
|
|
15
|
+
- role=link[name="on Oct 9, 2006"] >> nth=0
|
|
16
|
+
- role=link[name="hide"]
|
|
17
|
+
- role=link[name="past"] >> nth=1
|
|
18
|
+
- role=link[name="favorite"]
|
|
19
|
+
- role=link[name="3 comments"]
|
|
20
|
+
- link [id="up_15"]
|
|
21
|
+
- role=link[name="sama"]
|
|
22
|
+
- role=link[name="on Oct 9, 2006"] >> nth=1
|
|
23
|
+
- link "[–]" [id="15"]
|
|
24
|
+
- link [id="up_17"]
|
|
25
|
+
- role=link[name="pg"] >> nth=1
|
|
26
|
+
- role=link[name="on Oct 9, 2006"] >> nth=2
|
|
27
|
+
- link "[–]" [id="17"]
|
|
28
|
+
- link [id="up_1079"]
|
|
29
|
+
- role=link[name="dmon"]
|
|
30
|
+
- role=link[name="on Feb 25, 2007"]
|
|
31
|
+
- link "[–]" [id="1079"]
|
|
32
|
+
- role=link[name="Guidelines"]
|
|
33
|
+
- role=link[name="FAQ"]
|
|
34
|
+
- role=link[name="Lists"]
|
|
35
|
+
- role=link[name="API"]
|
|
36
|
+
- role=link[name="Security"]
|
|
37
|
+
- role=link[name="Legal"]
|
|
38
|
+
- role=link[name="Apply to YC"]
|
|
39
|
+
- role=link[name="Contact"]
|
|
40
|
+
- form:
|
|
41
|
+
- role=textbox
|
|
42
|
+
|
|
43
|
+
use refToLocator({ ref: 'e3' }) to get locators for ref strings.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Console output:
|
|
2
|
+
[log] # Test Article Title
|
|
3
|
+
|
|
4
|
+
Home About
|
|
5
|
+
Test Article Title
|
|
6
|
+
|
|
7
|
+
This is the first paragraph of the article content.
|
|
8
|
+
|
|
9
|
+
This is the second paragraph with more details about the topic.
|
|
10
|
+
|
|
11
|
+
The article continues with important information here.
|
|
12
|
+
|
|
13
|
+
Related Posts
|
|
14
|
+
Post 1
|
|
15
|
+
Post 2
|
|
16
|
+
Copyright 2024
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
[return value] - banner:
|
|
2
|
+
- navigation:
|
|
3
|
+
- role=link[name="Home"] >> nth=0
|
|
4
|
+
- role=link[name="Docs"]
|
|
5
|
+
- role=link[name="Components"]
|
|
6
|
+
- role=link[name="Blocks"]
|
|
7
|
+
- role=link[name="Charts"]
|
|
8
|
+
- role=link[name="Directory"]
|
|
9
|
+
- role=link[name="Typeset"]
|
|
10
|
+
- role=link[name="Create"]
|
|
11
|
+
- role=button[name="Search documentation..."]
|
|
12
|
+
- role=link[name="119k"]
|
|
13
|
+
- role=button[name="Toggle theme"]
|
|
14
|
+
- role=link[name="New"]
|
|
15
|
+
- main:
|
|
16
|
+
- role=link[name="Introducing shadcn/typeset"]
|
|
17
|
+
- heading "The Foundation for your Design System"
|
|
18
|
+
- paragraph:
|
|
19
|
+
- text: "A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code."
|
|
20
|
+
- role=link[name="Build Your Own"]
|
|
21
|
+
- role=button[name="Button"]
|
|
22
|
+
- role=button[name="Secondary"]
|
|
23
|
+
- role=button[name="Outline"]
|
|
24
|
+
- textbox "Name" [id="base-ui-_R_l4l9bsnqbr6lb_"]
|
|
25
|
+
- role=textbox[name="Message"]
|
|
26
|
+
- text: "Badge"
|
|
27
|
+
- text: "Secondary"
|
|
28
|
+
- radiogroup "Fruit preference":
|
|
29
|
+
- radio "Apple" [id="base-ui-_R_39kl9bsnqbr6lb_"]
|
|
30
|
+
- radio "Banana" [id="base-ui-_R_59kl9bsnqbr6lb_"]
|
|
31
|
+
- checkbox "Enable email alerts" [id="base-ui-_R_1dkl9bsnqbr6lb_"]
|
|
32
|
+
- switch "Enable compact notifications" [id="base-ui-_R_hkl9bsnqbr6lb_"]
|
|
33
|
+
- button "Alert Dialog" [id="base-ui-_R_6m4l9bsnqbr6lb_"]
|
|
34
|
+
- role=button[name="Button Group"]
|
|
35
|
+
- button "Open quick actions" [id="base-ui-_R_7a4l9bsnqbr6lb_"]
|
|
36
|
+
- text: "Overview"
|
|
37
|
+
- list:
|
|
38
|
+
- listitem:
|
|
39
|
+
- role=button[name="Analytics"]
|
|
40
|
+
- listitem:
|
|
41
|
+
- role=button[name="Transactions"]
|
|
42
|
+
- listitem:
|
|
43
|
+
- role=button[name="Investments"]
|
|
44
|
+
- listitem:
|
|
45
|
+
- role=button[name="Accounts"]
|
|
46
|
+
- listitem:
|
|
47
|
+
- role=button[name="Spending"]
|
|
48
|
+
- text: "Planning"
|
|
49
|
+
- list:
|
|
50
|
+
- listitem:
|
|
51
|
+
- role=button[name="Documents"]
|
|
52
|
+
- listitem:
|
|
53
|
+
- role=button[name="Budget"]
|
|
54
|
+
- listitem:
|
|
55
|
+
- role=button[name="Reports"]
|
|
56
|
+
- listitem:
|
|
57
|
+
- role=button[name="Goals"]
|
|
58
|
+
- listitem:
|
|
59
|
+
- role=button[name="Calendar"]
|
|
60
|
+
- text: "Support"
|
|
61
|
+
- list:
|
|
62
|
+
- listitem:
|
|
63
|
+
- role=button[name="Help Center"]
|
|
64
|
+
- listitem:
|
|
65
|
+
- role=button[name="Docs"]
|
|
66
|
+
- listitem:
|
|
67
|
+
- role=button[name="Contact Us"]
|
|
68
|
+
- listitem:
|
|
69
|
+
- role=button[name="Status"]
|
|
70
|
+
- listitem:
|
|
71
|
+
- role=button[name="Community"]
|
|
72
|
+
- text: "Account"
|
|
73
|
+
- list:
|
|
74
|
+
- listitem:
|
|
75
|
+
- role=button[name="Profile"]
|
|
76
|
+
- listitem:
|
|
77
|
+
- role=button[name="Billing"]
|
|
78
|
+
- listitem:
|
|
79
|
+
- role=button[name="Notifications"]
|
|
80
|
+
- listitem:
|
|
81
|
+
- role=button[name="Security"]
|
|
82
|
+
- listitem:
|
|
83
|
+
- role=button[name="Appearance"]
|
|
84
|
+
- text: "Savings Targets"
|
|
85
|
+
- text: "Active milestones for 2024 across your portfolio. Monitor how close you are to each savings goal."
|
|
86
|
+
- list:
|
|
87
|
+
- listitem:
|
|
88
|
+
- paragraph:
|
|
89
|
+
- text: "RETIREMENT"
|
|
90
|
+
- text: "$420,000"
|
|
91
|
+
- progressbar "Retirement savings progress":
|
|
92
|
+
- text: "x"
|
|
93
|
+
- text: "65% achieved"
|
|
94
|
+
- text: "$273,000"
|
|
95
|
+
- listitem:
|
|
96
|
+
- paragraph:
|
|
97
|
+
- text: "REAL ESTATE"
|
|
98
|
+
- text: "$85,000"
|
|
99
|
+
- progressbar "Real estate savings progress":
|
|
100
|
+
- text: "x"
|
|
101
|
+
- text: "32% achieved"
|
|
102
|
+
- text: "$27,200"
|
|
103
|
+
- text: "You have not met your targets for this year."
|
|
104
|
+
- text: "Contribution History"
|
|
105
|
+
- text: "Last 6 months of activity"
|
|
106
|
+
- image "Last 6 months of contribution activity":
|
|
107
|
+
- text: "Dec"
|
|
108
|
+
- text: "Jan"
|
|
109
|
+
- text: "Feb"
|
|
110
|
+
- text: "Mar"
|
|
111
|
+
- text: "Apr"
|
|
112
|
+
- paragraph:
|
|
113
|
+
- text: "UPCOMING"
|
|
114
|
+
- text: "May 2024"
|
|
115
|
+
- text: "Scheduled"
|
|
116
|
+
- paragraph:
|
|
117
|
+
- text: "SAVINGS PLAN"
|
|
118
|
+
- text: "Accelerated"
|
|
119
|
+
- text: "Recurring"
|
|
120
|
+
- role=button[name="View Full Report"]
|
|
121
|
+
- text: "Claimable Balance"
|
|
122
|
+
- text: "$"
|
|
123
|
+
- text: "1,211.29"
|
|
124
|
+
- text: "Pending Setup"
|
|
125
|
+
- text: "Net Royalties"
|
|
126
|
+
- text: "$"
|
|
127
|
+
- text: "1,248.75"
|
|
128
|
+
- text: "Processing Fee"
|
|
129
|
+
- text: "-$"
|
|
130
|
+
- text: "37.46"
|
|
131
|
+
- text: "Total Ready to Claim"
|
|
132
|
+
- text: "$"
|
|
133
|
+
- text: "1,211.29"
|
|
134
|
+
- text: "USD"
|
|
135
|
+
- text: "Once your bank is connected, balances over $10.00 are automatically eligible for monthly distribution on the 15th of each month."
|
|
136
|
+
- text: "Q2 Dividend Income"
|
|
137
|
+
- text: "Quarterly dividend payouts across your portfolio holdings."
|
|
138
|
+
- role=button[name="Dismiss dividend income"]
|
|
139
|
+
- list:
|
|
140
|
+
- listitem:
|
|
141
|
+
- text: "Vanguard"
|
|
142
|
+
- paragraph:
|
|
143
|
+
- text: "450 Shares"
|
|
144
|
+
- image "Vanguard quarterly dividends"
|
|
145
|
+
- listitem:
|
|
146
|
+
- text: "S&P 500 VOO"
|
|
147
|
+
- paragraph:
|
|
148
|
+
- text: "112 Shares"
|
|
149
|
+
- image "S&P 500 VOO quarterly dividends"
|
|
150
|
+
- listitem:
|
|
151
|
+
- text: "Apple AAPL"
|
|
152
|
+
- paragraph:
|
|
153
|
+
- text: "85 Shares"
|
|
154
|
+
- image "Apple AAPL quarterly dividends"
|
|
155
|
+
- listitem:
|
|
156
|
+
- text: "Realty Income"
|
|
157
|
+
- paragraph:
|
|
158
|
+
- text: "320 Shares"
|
|
159
|
+
- image "Realty Income quarterly dividends"
|
|
160
|
+
- image "Connect device QR code"
|
|
161
|
+
- text: "Scan to connect your mobile device"
|
|
162
|
+
- text: "Open the Ledger mobile app and scan this code to link your device."
|
|
163
|
+
- text: "New Chat"
|
|
164
|
+
- text: "How can I help you today?"
|
|
165
|
+
- role=button[name="Reset conversation"]
|
|
166
|
+
- text: "Morning, shadcn!"
|
|
167
|
+
- text: "What are we working on today? Press send to start a new conversation"
|
|
168
|
+
- form:
|
|
169
|
+
- text: "I'm building a chat for our app and the scroll behavior is driving me nuts. Every time the AI streams a reply, the whole thread jumps around."
|
|
170
|
+
- button "Add files" [id="radix-_R_1mq59bsnqbr6lb_"]
|
|
171
|
+
- role=button[name="Send"]
|
|
172
|
+
- navigation "breadcrumb":
|
|
173
|
+
- list:
|
|
174
|
+
- listitem:
|
|
175
|
+
- role=link[name="Home"] >> nth=1
|
|
176
|
+
- listitem:
|
|
177
|
+
- button "Account options" [id="base-ui-_R_1mu59bsnqbr6lb_"]
|
|
178
|
+
- listitem:
|
|
179
|
+
- role=link[name="Payments"]
|
|
180
|
+
- list:
|
|
181
|
+
- listitem:
|
|
182
|
+
- role=link[name="Change transfer limit Adjust how much you can send from your balance."]
|
|
183
|
+
- listitem:
|
|
184
|
+
- role=link[name="Scheduled transfers Set up a transfer to send at a later date."]
|
|
185
|
+
- listitem:
|
|
186
|
+
- role=link[name="Recurring card payments Manage your repeated card transactions."]
|
|
187
|
+
- contentinfo:
|
|
188
|
+
- text: "Built by"
|
|
189
|
+
- role=link[name="shadcn"]
|
|
190
|
+
- text: "at"
|
|
191
|
+
- role=link[name="Vercel"]
|
|
192
|
+
- text: ". The source code is available on"
|
|
193
|
+
- role=link[name="GitHub"]
|
|
194
|
+
- text: "."
|
|
195
|
+
- region "Notifications alt+T"
|
|
196
|
+
- toolbar "Tabwright tools":
|
|
197
|
+
- role=button[name="Pin element — click any element to copy inspection code for a tabwright -e call"]
|
|
198
|
+
- role=button[name="Start Tabwright demonstration recording"]
|
|
199
|
+
- role=button[name="Close Tabwright toolbar"]
|
|
200
|
+
|
|
201
|
+
use refToLocator({ ref: 'e3' }) to get locators for ref strings.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
[return value] - banner:
|
|
2
|
+
- navigation:
|
|
3
|
+
- role=link[name="Home"] >> nth=0
|
|
4
|
+
- role=link[name="Docs"]
|
|
5
|
+
- role=link[name="Components"]
|
|
6
|
+
- role=link[name="Blocks"]
|
|
7
|
+
- role=link[name="Charts"]
|
|
8
|
+
- role=link[name="Directory"]
|
|
9
|
+
- role=link[name="Typeset"]
|
|
10
|
+
- role=link[name="Create"]
|
|
11
|
+
- role=button[name="Search documentation..."]
|
|
12
|
+
- role=link[name="119k"]
|
|
13
|
+
- role=button[name="Toggle theme"]
|
|
14
|
+
- role=link[name="New"]
|
|
15
|
+
- main:
|
|
16
|
+
- role=link[name="Introducing shadcn/typeset"]
|
|
17
|
+
- role=link[name="Build Your Own"]
|
|
18
|
+
- role=button[name="Button"]
|
|
19
|
+
- role=button[name="Secondary"]
|
|
20
|
+
- role=button[name="Outline"]
|
|
21
|
+
- textbox "Name" [id="base-ui-_R_l4l9bsnqbr6lb_"]
|
|
22
|
+
- role=textbox[name="Message"]
|
|
23
|
+
- radio "Apple" [id="base-ui-_R_39kl9bsnqbr6lb_"]
|
|
24
|
+
- radio "Banana" [id="base-ui-_R_59kl9bsnqbr6lb_"]
|
|
25
|
+
- checkbox "Enable email alerts" [id="base-ui-_R_1dkl9bsnqbr6lb_"]
|
|
26
|
+
- switch "Enable compact notifications" [id="base-ui-_R_hkl9bsnqbr6lb_"]
|
|
27
|
+
- button "Alert Dialog" [id="base-ui-_R_6m4l9bsnqbr6lb_"]
|
|
28
|
+
- role=button[name="Button Group"]
|
|
29
|
+
- button "Open quick actions" [id="base-ui-_R_7a4l9bsnqbr6lb_"]
|
|
30
|
+
- list:
|
|
31
|
+
- listitem:
|
|
32
|
+
- role=button[name="Analytics"]
|
|
33
|
+
- listitem:
|
|
34
|
+
- role=button[name="Transactions"]
|
|
35
|
+
- listitem:
|
|
36
|
+
- role=button[name="Investments"]
|
|
37
|
+
- listitem:
|
|
38
|
+
- role=button[name="Accounts"]
|
|
39
|
+
- listitem:
|
|
40
|
+
- role=button[name="Spending"]
|
|
41
|
+
- list:
|
|
42
|
+
- listitem:
|
|
43
|
+
- role=button[name="Documents"]
|
|
44
|
+
- listitem:
|
|
45
|
+
- role=button[name="Budget"]
|
|
46
|
+
- listitem:
|
|
47
|
+
- role=button[name="Reports"]
|
|
48
|
+
- listitem:
|
|
49
|
+
- role=button[name="Goals"]
|
|
50
|
+
- listitem:
|
|
51
|
+
- role=button[name="Calendar"]
|
|
52
|
+
- list:
|
|
53
|
+
- listitem:
|
|
54
|
+
- role=button[name="Help Center"]
|
|
55
|
+
- listitem:
|
|
56
|
+
- role=button[name="Docs"]
|
|
57
|
+
- listitem:
|
|
58
|
+
- role=button[name="Contact Us"]
|
|
59
|
+
- listitem:
|
|
60
|
+
- role=button[name="Status"]
|
|
61
|
+
- listitem:
|
|
62
|
+
- role=button[name="Community"]
|
|
63
|
+
- list:
|
|
64
|
+
- listitem:
|
|
65
|
+
- role=button[name="Profile"]
|
|
66
|
+
- listitem:
|
|
67
|
+
- role=button[name="Billing"]
|
|
68
|
+
- listitem:
|
|
69
|
+
- role=button[name="Notifications"]
|
|
70
|
+
- listitem:
|
|
71
|
+
- role=button[name="Security"]
|
|
72
|
+
- listitem:
|
|
73
|
+
- role=button[name="Appearance"]
|
|
74
|
+
- list:
|
|
75
|
+
- listitem
|
|
76
|
+
- listitem
|
|
77
|
+
- role=button[name="View Full Report"]
|
|
78
|
+
- role=button[name="Dismiss dividend income"]
|
|
79
|
+
- list:
|
|
80
|
+
- listitem
|
|
81
|
+
- listitem
|
|
82
|
+
- listitem
|
|
83
|
+
- listitem
|
|
84
|
+
- role=button[name="Reset conversation"]
|
|
85
|
+
- form:
|
|
86
|
+
- button "Add files" [id="radix-_R_1mq59bsnqbr6lb_"]
|
|
87
|
+
- role=button[name="Send"]
|
|
88
|
+
- navigation "breadcrumb":
|
|
89
|
+
- list:
|
|
90
|
+
- listitem:
|
|
91
|
+
- role=link[name="Home"] >> nth=1
|
|
92
|
+
- listitem:
|
|
93
|
+
- button "Account options" [id="base-ui-_R_1mu59bsnqbr6lb_"]
|
|
94
|
+
- listitem:
|
|
95
|
+
- role=link[name="Payments"]
|
|
96
|
+
- list:
|
|
97
|
+
- listitem:
|
|
98
|
+
- role=link[name="Change transfer limit Adjust how much you can send from your balance."]
|
|
99
|
+
- listitem:
|
|
100
|
+
- role=link[name="Scheduled transfers Set up a transfer to send at a later date."]
|
|
101
|
+
- listitem:
|
|
102
|
+
- role=link[name="Recurring card payments Manage your repeated card transactions."]
|
|
103
|
+
- contentinfo:
|
|
104
|
+
- role=link[name="shadcn"]
|
|
105
|
+
- role=link[name="Vercel"]
|
|
106
|
+
- role=link[name="GitHub"]
|
|
107
|
+
- region "Notifications alt+T"
|
|
108
|
+
|
|
109
|
+
use refToLocator({ ref: 'e3' }) to get locators for ref strings.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { startTabwrightCDPRelayServer } from './cdp-relay.js'
|
|
2
|
+
import { createFileLogger } from './create-logger.js'
|
|
3
|
+
import { waitForRelayVersion } from './relay-client.js'
|
|
4
|
+
import { LOG_CDP_FILE_PATH } from './utils.js'
|
|
5
|
+
|
|
6
|
+
process.title = 'tabwright-ws-server'
|
|
7
|
+
|
|
8
|
+
const logger = createFileLogger()
|
|
9
|
+
|
|
10
|
+
process.on('uncaughtException', async (err) => {
|
|
11
|
+
await logger.error('Uncaught Exception:', err)
|
|
12
|
+
process.exit(1)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
process.on('unhandledRejection', async (reason) => {
|
|
16
|
+
await logger.error('Unhandled Rejection:', reason)
|
|
17
|
+
process.exit(1)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
process.on('exit', async (code) => {
|
|
21
|
+
await logger.log(`Process exiting with code: ${code}`)
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
export async function startServer({
|
|
25
|
+
port = 19988,
|
|
26
|
+
host = '127.0.0.1',
|
|
27
|
+
token,
|
|
28
|
+
}: { port?: number; host?: string; token?: string } = {}) {
|
|
29
|
+
let server
|
|
30
|
+
try {
|
|
31
|
+
server = await startTabwrightCDPRelayServer({ port, host, token, logger })
|
|
32
|
+
} catch (err: unknown) {
|
|
33
|
+
// When two relay processes race to start (issue #75), the loser gets
|
|
34
|
+
// EADDRINUSE. Check if the winner is a valid relay and exit cleanly
|
|
35
|
+
// instead of crashing with a scary error in the logs.
|
|
36
|
+
const errWithCode = err as NodeJS.ErrnoException
|
|
37
|
+
if (errWithCode?.code === 'EADDRINUSE') {
|
|
38
|
+
// The winner may have bound the port but not be ready to answer /version
|
|
39
|
+
// yet, so poll for up to 2 seconds before giving up.
|
|
40
|
+
const version = await waitForRelayVersion({ port })
|
|
41
|
+
if (version) {
|
|
42
|
+
await logger.log(`Another relay (v${version}) already bound to port ${port}, exiting gracefully`)
|
|
43
|
+
process.exit(0)
|
|
44
|
+
}
|
|
45
|
+
await logger.error(`Port ${port} is in use by a non-relay process`)
|
|
46
|
+
process.exit(1)
|
|
47
|
+
}
|
|
48
|
+
throw err
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
console.log('CDP Relay Server running. Press Ctrl+C to stop.')
|
|
52
|
+
console.log('Logs are being written to:', logger.logFilePath)
|
|
53
|
+
console.log('CDP logs are being written to:', LOG_CDP_FILE_PATH)
|
|
54
|
+
|
|
55
|
+
process.on('SIGINT', () => {
|
|
56
|
+
console.log('\nShutting down...')
|
|
57
|
+
server.close()
|
|
58
|
+
process.exit(0)
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
process.on('SIGTERM', () => {
|
|
62
|
+
console.log('\nShutting down...')
|
|
63
|
+
server.close()
|
|
64
|
+
process.exit(0)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
return server
|
|
68
|
+
}
|
|
69
|
+
startServer().catch(logger.error)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { page, getStylesForLocator, formatStylesAsText, console } from './debugger-examples-types.js'
|
|
2
|
+
|
|
3
|
+
// Example: Get styles for an element and display them
|
|
4
|
+
async function getElementStyles() {
|
|
5
|
+
const loc = page.locator('.my-button')
|
|
6
|
+
const styles = await getStylesForLocator({ locator: loc })
|
|
7
|
+
console.log(formatStylesAsText(styles))
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Example: Inspect computed styles for a specific element
|
|
11
|
+
async function inspectButtonStyles() {
|
|
12
|
+
const button = page.getByRole('button', { name: 'Submit' })
|
|
13
|
+
const styles = await getStylesForLocator({ locator: button })
|
|
14
|
+
|
|
15
|
+
console.log('Element:', styles.element)
|
|
16
|
+
|
|
17
|
+
if (styles.inlineStyle) {
|
|
18
|
+
console.log('Inline styles:', styles.inlineStyle)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
for (const rule of styles.rules) {
|
|
22
|
+
console.log(`${rule.selector}: ${JSON.stringify(rule.declarations)}`)
|
|
23
|
+
if (rule.source) {
|
|
24
|
+
console.log(` Source: ${rule.source.url}:${rule.source.line}`)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Example: Include browser default (user-agent) styles
|
|
30
|
+
async function getStylesWithUserAgent() {
|
|
31
|
+
const loc = page.locator('input[type="text"]')
|
|
32
|
+
const styles = await getStylesForLocator({
|
|
33
|
+
locator: loc,
|
|
34
|
+
includeUserAgentStyles: true,
|
|
35
|
+
})
|
|
36
|
+
console.log(formatStylesAsText(styles))
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Example: Find where a CSS property is defined
|
|
40
|
+
async function findPropertySource() {
|
|
41
|
+
const loc = page.locator('.card')
|
|
42
|
+
const styles = await getStylesForLocator({ locator: loc })
|
|
43
|
+
|
|
44
|
+
const backgroundRule = styles.rules.find((r) => 'background-color' in r.declarations)
|
|
45
|
+
if (backgroundRule) {
|
|
46
|
+
console.log('background-color defined by:', backgroundRule.selector)
|
|
47
|
+
if (backgroundRule.source) {
|
|
48
|
+
console.log(` at ${backgroundRule.source.url}:${backgroundRule.source.line}`)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Example: Check inherited styles
|
|
54
|
+
async function checkInheritedStyles() {
|
|
55
|
+
const loc = page.locator('.nested-text')
|
|
56
|
+
const styles = await getStylesForLocator({ locator: loc })
|
|
57
|
+
|
|
58
|
+
const inheritedRules = styles.rules.filter((r) => r.inheritedFrom)
|
|
59
|
+
for (const rule of inheritedRules) {
|
|
60
|
+
console.log(`Inherited from ${rule.inheritedFrom}: ${rule.selector}`)
|
|
61
|
+
console.log(' Properties:', rule.declarations)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Example: Compare styles between two elements
|
|
66
|
+
async function compareStyles() {
|
|
67
|
+
const primary = await getStylesForLocator({ locator: page.locator('.btn-primary') })
|
|
68
|
+
const secondary = await getStylesForLocator({ locator: page.locator('.btn-secondary') })
|
|
69
|
+
|
|
70
|
+
console.log('Primary button:')
|
|
71
|
+
console.log(formatStylesAsText(primary))
|
|
72
|
+
|
|
73
|
+
console.log('Secondary button:')
|
|
74
|
+
console.log(formatStylesAsText(secondary))
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
getElementStyles,
|
|
79
|
+
inspectButtonStyles,
|
|
80
|
+
getStylesWithUserAgent,
|
|
81
|
+
findPropertySource,
|
|
82
|
+
checkInheritedStyles,
|
|
83
|
+
compareStyles,
|
|
84
|
+
}
|