testplane 9.0.0-rc.3 → 9.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/README.md +1 -1
- package/build/package.json +41 -25
- package/build/src/base-testplane.d.ts +6 -2
- package/build/src/base-testplane.js +19 -5
- package/build/src/base-testplane.js.map +1 -1
- package/build/src/browser/browser.d.ts +8 -0
- package/build/src/browser/browser.js +16 -5
- package/build/src/browser/browser.js.map +1 -1
- package/build/src/browser/calibrator.d.ts +5 -4
- package/build/src/browser/calibrator.js +96 -47
- package/build/src/browser/calibrator.js.map +1 -1
- package/build/src/browser/camera/index.d.ts +16 -19
- package/build/src/browser/camera/index.js +72 -25
- package/build/src/browser/camera/index.js.map +1 -1
- package/build/src/browser/camera/utils.d.ts +15 -2
- package/build/src/browser/camera/utils.js +58 -5
- package/build/src/browser/camera/utils.js.map +1 -1
- package/build/src/browser/cdp/connection.d.ts +15 -0
- package/build/src/browser/cdp/connection.js +145 -0
- package/build/src/browser/cdp/connection.js.map +1 -0
- package/build/src/browser/cdp/constants.d.ts +6 -0
- package/build/src/browser/cdp/constants.js +10 -0
- package/build/src/browser/cdp/constants.js.map +1 -0
- package/build/src/browser/cdp/debug.d.ts +2 -0
- package/build/src/browser/cdp/debug.js +9 -0
- package/build/src/browser/cdp/debug.js.map +1 -0
- package/build/src/browser/cdp/domains/css.d.ts +54 -0
- package/build/src/browser/cdp/domains/css.js +39 -0
- package/build/src/browser/cdp/domains/css.js.map +1 -0
- package/build/src/browser/cdp/domains/debugger.d.ts +65 -0
- package/build/src/browser/cdp/domains/debugger.js +31 -0
- package/build/src/browser/cdp/domains/debugger.js.map +1 -0
- package/build/src/browser/cdp/domains/dom.d.ts +24 -0
- package/build/src/browser/cdp/domains/dom.js +23 -0
- package/build/src/browser/cdp/domains/dom.js.map +1 -0
- package/build/src/browser/cdp/domains/fetch.d.ts +163 -0
- package/build/src/browser/cdp/domains/fetch.js +51 -0
- package/build/src/browser/cdp/domains/fetch.js.map +1 -0
- package/build/src/browser/cdp/domains/network.d.ts +290 -0
- package/build/src/browser/cdp/domains/network.js +75 -0
- package/build/src/browser/cdp/domains/network.js.map +1 -0
- package/build/src/browser/cdp/domains/page.d.ts +378 -0
- package/build/src/browser/cdp/domains/page.js +114 -0
- package/build/src/browser/cdp/domains/page.js.map +1 -0
- package/build/src/browser/cdp/domains/profiler.d.ts +60 -0
- package/build/src/browser/cdp/domains/profiler.js +39 -0
- package/build/src/browser/cdp/domains/profiler.js.map +1 -0
- package/build/src/browser/cdp/domains/runtime.d.ts +57 -0
- package/build/src/browser/cdp/domains/runtime.js +34 -0
- package/build/src/browser/cdp/domains/runtime.js.map +1 -0
- package/build/src/browser/cdp/domains/target.d.ts +77 -0
- package/build/src/browser/cdp/domains/target.js +53 -0
- package/build/src/browser/cdp/domains/target.js.map +1 -0
- package/build/src/browser/cdp/emitter.d.ts +10 -0
- package/build/src/browser/cdp/emitter.js +61 -0
- package/build/src/browser/cdp/emitter.js.map +1 -0
- package/build/src/browser/cdp/error.d.ts +17 -0
- package/build/src/browser/cdp/error.js +38 -0
- package/build/src/browser/cdp/error.js.map +1 -0
- package/build/src/browser/cdp/index.d.ts +29 -0
- package/build/src/browser/cdp/index.js +80 -0
- package/build/src/browser/cdp/index.js.map +1 -0
- package/build/src/browser/cdp/selectivity/constants.d.ts +3 -0
- package/build/src/browser/cdp/selectivity/constants.js +7 -0
- package/build/src/browser/cdp/selectivity/constants.js.map +1 -0
- package/build/src/browser/cdp/selectivity/css-selectivity.d.ts +24 -0
- package/build/src/browser/cdp/selectivity/css-selectivity.js +261 -0
- package/build/src/browser/cdp/selectivity/css-selectivity.js.map +1 -0
- package/build/src/browser/cdp/selectivity/debug.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/debug.js +9 -0
- package/build/src/browser/cdp/selectivity/debug.js.map +1 -0
- package/build/src/browser/cdp/selectivity/fs-cache.d.ts +12 -0
- package/build/src/browser/cdp/selectivity/fs-cache.js +122 -0
- package/build/src/browser/cdp/selectivity/fs-cache.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-provider.d.ts +7 -0
- package/build/src/browser/cdp/selectivity/hash-provider.js +86 -0
- package/build/src/browser/cdp/selectivity/hash-provider.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-reader.d.ts +16 -0
- package/build/src/browser/cdp/selectivity/hash-reader.js +83 -0
- package/build/src/browser/cdp/selectivity/hash-reader.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-writer.d.ts +18 -0
- package/build/src/browser/cdp/selectivity/hash-writer.js +80 -0
- package/build/src/browser/cdp/selectivity/hash-writer.js.map +1 -0
- package/build/src/browser/cdp/selectivity/index.d.ts +15 -0
- package/build/src/browser/cdp/selectivity/index.js +220 -0
- package/build/src/browser/cdp/selectivity/index.js.map +1 -0
- package/build/src/browser/cdp/selectivity/js-selectivity.d.ts +23 -0
- package/build/src/browser/cdp/selectivity/js-selectivity.js +242 -0
- package/build/src/browser/cdp/selectivity/js-selectivity.js.map +1 -0
- package/build/src/browser/cdp/selectivity/json-utils.d.ts +15 -0
- package/build/src/browser/cdp/selectivity/json-utils.js +135 -0
- package/build/src/browser/cdp/selectivity/json-utils.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js +28 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js +39 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js +129 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js.map +1 -0
- package/build/src/browser/cdp/selectivity/modes.d.ts +4 -0
- package/build/src/browser/cdp/selectivity/modes.js +11 -0
- package/build/src/browser/cdp/selectivity/modes.js.map +1 -0
- package/build/src/browser/cdp/selectivity/runner.d.ts +24 -0
- package/build/src/browser/cdp/selectivity/runner.js +234 -0
- package/build/src/browser/cdp/selectivity/runner.js.map +1 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.d.ts +10 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js +41 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js.map +1 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.d.ts +11 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js +69 -0
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js.map +1 -0
- package/build/src/browser/cdp/selectivity/testplane-selectivity.d.ts +7 -0
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js +127 -0
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -0
- package/build/src/browser/cdp/selectivity/types.d.ts +26 -0
- package/build/src/browser/cdp/selectivity/types.js +10 -0
- package/build/src/browser/cdp/selectivity/types.js.map +1 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.d.ts +7 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js +25 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js.map +1 -0
- package/build/src/browser/cdp/selectivity/utils.d.ts +57 -0
- package/build/src/browser/cdp/selectivity/utils.js +382 -0
- package/build/src/browser/cdp/selectivity/utils.js.map +1 -0
- package/build/src/browser/cdp/types.d.ts +417 -0
- package/build/src/browser/cdp/types.js.map +1 -0
- package/build/src/browser/cdp/utils.d.ts +1 -0
- package/build/src/browser/cdp/utils.js +18 -0
- package/build/src/browser/cdp/utils.js.map +1 -0
- package/build/src/browser/cdp/ws-endpoint.d.ts +2 -0
- package/build/src/browser/cdp/ws-endpoint.js +70 -0
- package/build/src/browser/cdp/ws-endpoint.js.map +1 -0
- package/build/src/browser/client-bridge/error.d.ts +1 -1
- package/build/src/browser/client-bridge/error.js +2 -2
- package/build/src/browser/client-bridge/error.js.map +1 -1
- package/build/src/browser/client-bridge/index.d.ts +17 -7
- package/build/src/browser/client-bridge/index.js +65 -14
- package/build/src/browser/client-bridge/index.js.map +1 -1
- package/build/src/browser/client-scripts/browser-utils/build/bundle.compat.js +18 -0
- package/build/src/browser/client-scripts/browser-utils/build/bundle.native.js +10 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/browser-utils/implementation.js +38 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/browser-utils/inject.js +31 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.compat.js +57 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.native.js +53 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/logger.js +42 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/polyfills/getComputedStyle.js +132 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/polyfills/matchMedia.js +82 -0
- package/build/src/browser/client-scripts/{xpath.js → browser-utils/tsc-out/client-scripts/shared/xpath.js} +9 -13
- package/build/src/browser/client-scripts/browser-utils/tsc-out/isomorphic/assign.js +21 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/isomorphic/geometry.js +220 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/isomorphic/index.js +19 -0
- package/build/src/browser/client-scripts/browser-utils/tsc-out/isomorphic/types.js +18 -0
- package/build/src/browser/client-scripts/build.js +50 -13
- package/build/src/browser/client-scripts/calibrate.js +13 -1
- package/build/src/browser/client-scripts/rrweb-record.min.js +32 -32
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.compat.js +38 -0
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.native.js +38 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/errors/outside-of-viewport.js +32 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/implementation.js +406 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/inject.js +31 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/operations.js +633 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/types.js +2 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/clip-rect.js +103 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/descriptions.js +19 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/dom.js +99 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/element-rect.js +183 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/pseudo-element-rect.js +205 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/scroll.js +155 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/trusted-types.js +14 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/user-agent.js +10 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/z-index.js +144 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.compat.js +57 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.native.js +53 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/logger.js +42 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/polyfills/getComputedStyle.js +132 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/polyfills/matchMedia.js +82 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/xpath.js +27 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/assign.js +21 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/geometry.js +220 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js +19 -0
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/types.js +18 -0
- package/build/src/browser/commands/assert-view/errors/image-diff-error.d.ts +1 -0
- package/build/src/browser/commands/assert-view/index.js +79 -31
- package/build/src/browser/commands/assert-view/index.js.map +1 -1
- package/build/src/browser/commands/getPuppeteer.js +1 -1
- package/build/src/browser/commands/getPuppeteer.js.map +1 -1
- package/build/src/browser/commands/getState.d.ts +5 -0
- package/build/src/browser/commands/getState.js +41 -0
- package/build/src/browser/commands/getState.js.map +1 -0
- package/build/src/browser/commands/index.js +5 -0
- package/build/src/browser/commands/index.js.map +1 -1
- package/build/src/browser/commands/moveCursorTo.d.ts +1 -1
- package/build/src/browser/commands/openAndWait.js +47 -5
- package/build/src/browser/commands/openAndWait.js.map +1 -1
- package/build/src/browser/commands/restoreState/index.d.ts +9 -0
- package/build/src/browser/commands/restoreState/index.js +112 -0
- package/build/src/browser/commands/restoreState/index.js.map +1 -0
- package/build/src/browser/commands/restoreState/restoreStorage.d.ts +1 -0
- package/build/src/browser/commands/restoreState/restoreStorage.js +12 -0
- package/build/src/browser/commands/restoreState/restoreStorage.js.map +1 -0
- package/build/src/browser/commands/saveState/dumpStorage.d.ts +5 -0
- package/build/src/browser/commands/saveState/dumpStorage.js +29 -0
- package/build/src/browser/commands/saveState/dumpStorage.js.map +1 -0
- package/build/src/browser/commands/saveState/index.d.ts +13 -0
- package/build/src/browser/commands/saveState/index.js +156 -0
- package/build/src/browser/commands/saveState/index.js.map +1 -0
- package/build/src/browser/commands/switchToRepl.js +64 -11
- package/build/src/browser/commands/switchToRepl.js.map +1 -1
- package/build/src/browser/commands/unstable_getCdp.d.ts +3 -0
- package/build/src/browser/commands/unstable_getCdp.js +9 -0
- package/build/src/browser/commands/unstable_getCdp.js.map +1 -0
- package/build/src/browser/commands/waitForStaticToLoad.d.ts +13 -0
- package/build/src/browser/commands/waitForStaticToLoad.js +169 -0
- package/build/src/browser/commands/waitForStaticToLoad.js.map +1 -0
- package/build/src/browser/existing-browser.d.ts +27 -35
- package/build/src/browser/existing-browser.js +141 -98
- package/build/src/browser/existing-browser.js.map +1 -1
- package/build/src/browser/history/async-local-storage.d.ts +5 -0
- package/build/src/browser/history/async-local-storage.js +14 -0
- package/build/src/browser/history/async-local-storage.js.map +1 -0
- package/build/src/browser/history/callstack.d.ts +0 -4
- package/build/src/browser/history/callstack.js +0 -8
- package/build/src/browser/history/callstack.js.map +1 -1
- package/build/src/browser/history/index.d.ts +19 -6
- package/build/src/browser/history/index.js +85 -47
- package/build/src/browser/history/index.js.map +1 -1
- package/build/src/browser/history/rrweb.d.ts +3 -1
- package/build/src/browser/history/rrweb.js +163 -57
- package/build/src/browser/history/rrweb.js.map +1 -1
- package/build/src/browser/isomorphic/assign.d.ts +2 -0
- package/build/src/browser/isomorphic/assign.js +18 -0
- package/build/src/browser/isomorphic/assign.js.map +1 -0
- package/build/src/browser/isomorphic/geometry.d.ts +85 -0
- package/build/src/browser/isomorphic/geometry.js +198 -0
- package/build/src/browser/isomorphic/geometry.js.map +1 -0
- package/build/src/browser/isomorphic/index.d.ts +3 -0
- package/build/src/browser/isomorphic/index.js +20 -0
- package/build/src/browser/isomorphic/index.js.map +1 -0
- package/build/src/browser/isomorphic/tsconfig.tsbuildinfo +1 -0
- package/build/src/browser/isomorphic/types.d.ts +15 -0
- package/build/src/browser/isomorphic/types.js +19 -0
- package/build/src/browser/isomorphic/types.js.map +1 -0
- package/build/src/browser/new-browser.d.ts +2 -1
- package/build/src/browser/new-browser.js +12 -12
- package/build/src/browser/new-browser.js.map +1 -1
- package/build/src/browser/screen-shooter/composite-image/debug-utils.d.ts +37 -0
- package/build/src/browser/screen-shooter/composite-image/debug-utils.js +127 -0
- package/build/src/browser/screen-shooter/composite-image/debug-utils.js.map +1 -0
- package/build/src/browser/screen-shooter/composite-image/index.d.ts +65 -14
- package/build/src/browser/screen-shooter/composite-image/index.js +488 -122
- package/build/src/browser/screen-shooter/composite-image/index.js.map +1 -1
- package/build/src/browser/screen-shooter/constants.d.ts +1 -0
- package/build/src/browser/screen-shooter/constants.js +5 -0
- package/build/src/browser/screen-shooter/constants.js.map +1 -0
- package/build/src/browser/screen-shooter/debug.d.ts +3 -0
- package/build/src/browser/screen-shooter/debug.js +25 -0
- package/build/src/browser/screen-shooter/debug.js.map +1 -0
- package/build/src/browser/screen-shooter/elements-screen-shooter.d.ts +43 -0
- package/build/src/browser/screen-shooter/elements-screen-shooter.js +466 -0
- package/build/src/browser/screen-shooter/elements-screen-shooter.js.map +1 -0
- package/build/src/browser/screen-shooter/errors/horizontal-overflow-error.d.ts +1 -0
- package/build/src/browser/screen-shooter/errors/horizontal-overflow-error.js +16 -12
- package/build/src/browser/screen-shooter/errors/horizontal-overflow-error.js.map +1 -1
- package/build/src/browser/screen-shooter/errors/vertical-overflow-error.d.ts +1 -0
- package/build/src/browser/screen-shooter/errors/vertical-overflow-error.js +12 -8
- package/build/src/browser/screen-shooter/errors/vertical-overflow-error.js.map +1 -1
- package/build/src/browser/screen-shooter/full-page-screen-shooter.d.ts +44 -0
- package/build/src/browser/screen-shooter/full-page-screen-shooter.js +160 -0
- package/build/src/browser/screen-shooter/full-page-screen-shooter.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/animations.d.ts +7 -0
- package/build/src/browser/screen-shooter/operations/animations.js +25 -0
- package/build/src/browser/screen-shooter/operations/animations.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/iframe.d.ts +1 -0
- package/build/src/browser/screen-shooter/operations/iframe.js +27 -0
- package/build/src/browser/screen-shooter/operations/iframe.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/index.d.ts +5 -0
- package/build/src/browser/screen-shooter/operations/index.js +16 -0
- package/build/src/browser/screen-shooter/operations/index.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/pointer-events.d.ts +11 -0
- package/build/src/browser/screen-shooter/operations/pointer-events.js +45 -0
- package/build/src/browser/screen-shooter/operations/pointer-events.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/scrolls.d.ts +5 -0
- package/build/src/browser/screen-shooter/operations/scrolls.js +8 -0
- package/build/src/browser/screen-shooter/operations/scrolls.js.map +1 -0
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.d.ts +2 -0
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js +133 -0
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js.map +1 -0
- package/build/src/browser/screen-shooter/validation/index.d.ts +2 -2
- package/build/src/browser/screen-shooter/validation/index.js +31 -5
- package/build/src/browser/screen-shooter/validation/index.js.map +1 -1
- package/build/src/browser/screen-shooter/viewport-screen-shooter.d.ts +44 -0
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js +89 -0
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js.map +1 -0
- package/build/src/browser/stacktrace/utils.js +13 -3
- package/build/src/browser/stacktrace/utils.js.map +1 -1
- package/build/src/browser/standalone/attachToBrowser.d.ts +2 -0
- package/build/src/browser/standalone/attachToBrowser.js +63 -0
- package/build/src/browser/standalone/attachToBrowser.js.map +1 -0
- package/build/src/browser/standalone/index.d.ts +2 -0
- package/build/src/browser/standalone/index.js +8 -0
- package/build/src/browser/standalone/index.js.map +1 -0
- package/build/src/browser/standalone/launchBrowser.d.ts +4 -0
- package/build/src/browser/{standalone.js → standalone/launchBrowser.js} +24 -10
- package/build/src/browser/standalone/launchBrowser.js.map +1 -0
- package/build/src/browser/standalone/types.d.ts +5 -0
- package/build/src/browser/standalone/types.js +3 -0
- package/build/src/browser/standalone/types.js.map +1 -0
- package/build/src/browser/types.d.ts +30 -4
- package/build/src/browser/types.js.map +1 -1
- package/build/src/browser/wsdriver/compression.d.ts +5 -0
- package/build/src/browser/wsdriver/compression.js +79 -0
- package/build/src/browser/wsdriver/compression.js.map +1 -0
- package/build/src/browser/wsdriver/constants.d.ts +11 -0
- package/build/src/browser/wsdriver/constants.js +15 -0
- package/build/src/browser/wsdriver/constants.js.map +1 -0
- package/build/src/browser/wsdriver/debug.d.ts +2 -0
- package/build/src/browser/wsdriver/debug.js +9 -0
- package/build/src/browser/wsdriver/debug.js.map +1 -0
- package/build/src/browser/wsdriver/error.d.ts +18 -0
- package/build/src/browser/wsdriver/error.js +36 -0
- package/build/src/browser/wsdriver/error.js.map +1 -0
- package/build/src/browser/wsdriver/index.d.ts +23 -0
- package/build/src/browser/wsdriver/index.js +261 -0
- package/build/src/browser/wsdriver/index.js.map +1 -0
- package/build/src/browser/wsdriver/request.d.ts +10 -0
- package/build/src/browser/wsdriver/request.js +58 -0
- package/build/src/browser/wsdriver/request.js.map +1 -0
- package/build/src/browser/wsdriver/response.d.ts +3 -0
- package/build/src/browser/wsdriver/response.js +111 -0
- package/build/src/browser/wsdriver/response.js.map +1 -0
- package/build/src/browser/wsdriver/types.d.ts +71 -0
- package/build/src/browser/wsdriver/types.js +27 -0
- package/build/src/browser/wsdriver/types.js.map +1 -0
- package/build/src/browser-installer/chrome/index.d.ts +1 -0
- package/build/src/browser-installer/chrome/index.js +13 -3
- package/build/src/browser-installer/chrome/index.js.map +1 -1
- package/build/src/browser-installer/edge/index.d.ts +1 -0
- package/build/src/browser-installer/edge/index.js +8 -3
- package/build/src/browser-installer/edge/index.js.map +1 -1
- package/build/src/browser-installer/firefox/index.d.ts +1 -0
- package/build/src/browser-installer/firefox/index.js +8 -3
- package/build/src/browser-installer/firefox/index.js.map +1 -1
- package/build/src/browser-installer/safari/index.d.ts +1 -0
- package/build/src/browser-installer/safari/index.js +8 -3
- package/build/src/browser-installer/safari/index.js.map +1 -1
- package/build/src/browser-pool/basic-pool.js +3 -1
- package/build/src/browser-pool/basic-pool.js.map +1 -1
- package/build/src/browser-pool/cancelled-error.js +7 -1
- package/build/src/browser-pool/cancelled-error.js.map +1 -1
- package/build/src/browser-pool/limited-pool.d.ts +1 -1
- package/build/src/browser-pool/limited-pool.js +3 -3
- package/build/src/browser-pool/limited-pool.js.map +1 -1
- package/build/src/browser-pool/per-browser-limited-pool.d.ts +1 -1
- package/build/src/browser-pool/per-browser-limited-pool.js +3 -2
- package/build/src/browser-pool/per-browser-limited-pool.js.map +1 -1
- package/build/src/browser-pool/types.d.ts +1 -1
- package/build/src/browser-pool/webdriver-pool.d.ts +1 -0
- package/build/src/browser-pool/webdriver-pool.js +2 -0
- package/build/src/browser-pool/webdriver-pool.js.map +1 -1
- package/build/src/bundle/cjs/index.js +207 -108
- package/build/src/cli/commands/list-tests/index.js +2 -1
- package/build/src/cli/commands/list-tests/index.js.map +1 -1
- package/build/src/cli/commands/selectivity-merge-dumps/index.d.ts +2 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js +50 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js.map +1 -0
- package/build/src/cli/constants.d.ts +1 -0
- package/build/src/cli/constants.js +1 -0
- package/build/src/cli/constants.js.map +1 -1
- package/build/src/cli/index.js +29 -8
- package/build/src/cli/index.js.map +1 -1
- package/build/src/config/browser-options.js +51 -6
- package/build/src/config/browser-options.js.map +1 -1
- package/build/src/config/defaults.d.ts +27 -2
- package/build/src/config/defaults.js +30 -5
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/index.d.ts +10 -6
- package/build/src/config/index.js +67 -42
- package/build/src/config/index.js.map +1 -1
- package/build/src/config/options.js +3 -2
- package/build/src/config/options.js.map +1 -1
- package/build/src/config/types.d.ts +133 -11
- package/build/src/config/types.js +15 -5
- package/build/src/config/types.js.map +1 -1
- package/build/src/config/utils.d.ts +4 -1
- package/build/src/config/utils.js +20 -2
- package/build/src/config/utils.js.map +1 -1
- package/build/src/constants/config.d.ts +1 -1
- package/build/src/constants/config.js +2 -2
- package/build/src/constants/config.js.map +1 -1
- package/build/src/constants/png.d.ts +14 -0
- package/build/src/constants/png.js +17 -0
- package/build/src/constants/png.js.map +1 -0
- package/build/src/constants/process-messages.d.ts +1 -0
- package/build/src/constants/process-messages.js +2 -1
- package/build/src/constants/process-messages.js.map +1 -1
- package/build/src/constants/repl.d.ts +2 -0
- package/build/src/constants/repl.js +6 -0
- package/build/src/constants/repl.js.map +1 -0
- package/build/src/dev-server/index.d.ts +1 -1
- package/build/src/dev-server/index.js +1 -1
- package/build/src/dev-server/index.js.map +1 -1
- package/build/src/error-snippets/constants.d.ts +2 -1
- package/build/src/error-snippets/constants.js +3 -2
- package/build/src/error-snippets/constants.js.map +1 -1
- package/build/src/error-snippets/source-maps.d.ts +3 -3
- package/build/src/error-snippets/source-maps.js +10 -8
- package/build/src/error-snippets/source-maps.js.map +1 -1
- package/build/src/error-snippets/utils.js +2 -2
- package/build/src/error-snippets/utils.js.map +1 -1
- package/build/src/errors/unhandled-rejection-error.d.ts +9 -0
- package/build/src/errors/unhandled-rejection-error.js +24 -0
- package/build/src/errors/unhandled-rejection-error.js.map +1 -0
- package/build/src/events/index.d.ts +12 -0
- package/build/src/events/index.js +3 -0
- package/build/src/events/index.js.map +1 -1
- package/build/src/globalFilesToRemove.d.ts +4 -0
- package/build/src/globalFilesToRemove.js +24 -0
- package/build/src/globalFilesToRemove.js.map +1 -0
- package/build/src/globals.d.ts +7 -0
- package/build/src/globals.js +10 -0
- package/build/src/globals.js.map +1 -0
- package/build/src/image.d.ts +26 -9
- package/build/src/image.js +201 -97
- package/build/src/image.js.map +1 -1
- package/build/src/index.d.ts +6 -14
- package/build/src/index.js +5 -1
- package/build/src/index.js.map +1 -1
- package/build/src/reporters/flat.js +7 -5
- package/build/src/reporters/flat.js.map +1 -1
- package/build/src/reporters/informers/console.d.ts +3 -3
- package/build/src/reporters/informers/console.js +6 -6
- package/build/src/reporters/informers/console.js.map +1 -1
- package/build/src/reporters/informers/file.d.ts +3 -3
- package/build/src/reporters/informers/file.js +13 -6
- package/build/src/reporters/informers/file.js.map +1 -1
- package/build/src/reporters/plain.js +4 -2
- package/build/src/reporters/plain.js.map +1 -1
- package/build/src/reporters/utils/helpers.js +10 -1
- package/build/src/reporters/utils/helpers.js.map +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/driver.js +28 -8
- package/build/src/runner/browser-env/vite/browser-modules/driver.js.map +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/types.d.ts +1 -1
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js +4 -6
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js.map +1 -1
- package/build/src/runner/browser-env/vite/server.d.ts +1 -0
- package/build/src/runner/browser-env/vite/server.js +26 -0
- package/build/src/runner/browser-env/vite/server.js.map +1 -1
- package/build/src/runner/browser-env/vite/utils.d.ts +0 -5
- package/build/src/runner/browser-env/vite/utils.js +15 -9
- package/build/src/runner/browser-env/vite/utils.js.map +1 -1
- package/build/src/runner/browser-runner.d.ts +1 -1
- package/build/src/runner/browser-runner.js +2 -2
- package/build/src/runner/browser-runner.js.map +1 -1
- package/build/src/runner/index.d.ts +6 -3
- package/build/src/runner/index.js +20 -8
- package/build/src/runner/index.js.map +1 -1
- package/build/src/runner/suite-monitor.d.ts +1 -1
- package/build/src/runner/test-runner/insistant-test-runner.d.ts +1 -0
- package/build/src/runner/test-runner/regular-test-runner.d.ts +3 -1
- package/build/src/runner/test-runner/regular-test-runner.js +30 -3
- package/build/src/runner/test-runner/regular-test-runner.js.map +1 -1
- package/build/src/runner/tests-tracker.d.ts +25 -0
- package/build/src/runner/tests-tracker.js +121 -0
- package/build/src/runner/tests-tracker.js.map +1 -0
- package/build/src/runner/types.d.ts +1 -1
- package/build/src/signal-handler.d.ts +2 -2
- package/build/src/signal-handler.js +24 -11
- package/build/src/signal-handler.js.map +1 -1
- package/build/src/test-reader/index.js +12 -8
- package/build/src/test-reader/index.js.map +1 -1
- package/build/src/test-reader/mocha-reader/index.d.ts +2 -1
- package/build/src/test-reader/mocha-reader/index.js +47 -2
- package/build/src/test-reader/mocha-reader/index.js.map +1 -1
- package/build/src/test-reader/mocha-reader/mocha-event-bus.d.ts +1 -1
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js +4 -4
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js.map +1 -1
- package/build/src/test-reader/test-object/suite.d.ts +9 -3
- package/build/src/test-reader/test-object/suite.js +19 -1
- package/build/src/test-reader/test-object/suite.js.map +1 -1
- package/build/src/test-reader/test-object/test.d.ts +7 -2
- package/build/src/test-reader/test-object/test.js +20 -1
- package/build/src/test-reader/test-object/test.js.map +1 -1
- package/build/src/test-reader/test-object/types.d.ts +11 -2
- package/build/src/test-reader/test-parser.d.ts +3 -1
- package/build/src/test-reader/test-parser.js +22 -6
- package/build/src/test-reader/test-parser.js.map +1 -1
- package/build/src/testplane.d.ts +22 -10
- package/build/src/testplane.js +115 -18
- package/build/src/testplane.js.map +1 -1
- package/build/src/types/globals.d.ts +16 -0
- package/build/src/types/globals.js +3 -0
- package/build/src/types/globals.js.map +1 -0
- package/build/src/types/index.d.ts +44 -7
- package/build/src/unstable.d.ts +2 -2
- package/build/src/unstable.js +2 -1
- package/build/src/unstable.js.map +1 -1
- package/build/src/utils/cli.d.ts +2 -0
- package/build/src/utils/cli.js +29 -2
- package/build/src/utils/cli.js.map +1 -1
- package/build/src/utils/config.d.ts +1 -0
- package/build/src/utils/config.js +6 -1
- package/build/src/utils/config.js.map +1 -1
- package/build/src/utils/crypto.d.ts +1 -0
- package/build/src/utils/crypto.js +2 -1
- package/build/src/utils/crypto.js.map +1 -1
- package/build/src/utils/eight-bit-rgba-to-png.d.ts +3 -0
- package/build/src/utils/eight-bit-rgba-to-png.js +61 -0
- package/build/src/utils/eight-bit-rgba-to-png.js.map +1 -0
- package/build/src/utils/ipc.d.ts +1 -1
- package/build/src/utils/ipc.js +15 -1
- package/build/src/utils/ipc.js.map +1 -1
- package/build/src/utils/logger.d.ts +9 -0
- package/build/src/utils/logger.js +27 -3
- package/build/src/utils/logger.js.map +1 -1
- package/build/src/utils/preload-utils.d.ts +1 -0
- package/build/src/utils/preload-utils.js +4 -4
- package/build/src/utils/preload-utils.js.map +1 -1
- package/build/src/utils/processor.js +15 -6
- package/build/src/utils/processor.js.map +1 -1
- package/build/src/utils/repl-instrumentation/index.d.ts +1 -0
- package/build/src/utils/repl-instrumentation/index.js +46 -0
- package/build/src/utils/repl-instrumentation/index.js.map +1 -0
- package/build/src/utils/repl-instrumentation/typescript.d.ts +7 -0
- package/build/src/utils/repl-instrumentation/typescript.js +307 -0
- package/build/src/utils/repl-instrumentation/typescript.js.map +1 -0
- package/build/src/utils/repl-module-hooks.d.ts +1 -0
- package/build/src/utils/repl-module-hooks.js +111 -0
- package/build/src/utils/repl-module-hooks.js.map +1 -0
- package/build/src/utils/typescript.d.ts +3 -0
- package/build/src/utils/typescript.js +142 -36
- package/build/src/utils/typescript.js.map +1 -1
- package/build/src/utils/worker-error-serialization.d.ts +13 -0
- package/build/src/utils/worker-error-serialization.js +125 -0
- package/build/src/utils/worker-error-serialization.js.map +1 -0
- package/build/src/utils/workers-registry.d.ts +2 -2
- package/build/src/utils/workers-registry.js +53 -3
- package/build/src/utils/workers-registry.js.map +1 -1
- package/build/src/vendors/expect-webdriverio/matchers-overrides.d.ts +49 -0
- package/build/src/vendors/expect-webdriverio/matchers-overrides.js +3 -0
- package/build/src/vendors/expect-webdriverio/matchers-overrides.js.map +1 -0
- package/build/src/worker/browser-env/runner/test-runner/index.js +16 -0
- package/build/src/worker/browser-env/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/runner/browser-pool.js +5 -2
- package/build/src/worker/runner/browser-pool.js.map +1 -1
- package/build/src/worker/runner/index.d.ts +1 -0
- package/build/src/worker/runner/index.js +27 -6
- package/build/src/worker/runner/index.js.map +1 -1
- package/build/src/worker/runner/sequence-test-parser.js +5 -7
- package/build/src/worker/runner/sequence-test-parser.js.map +1 -1
- package/build/src/worker/runner/test-runner/capture-fail-screenshot.d.ts +10 -0
- package/build/src/worker/runner/test-runner/capture-fail-screenshot.js +68 -0
- package/build/src/worker/runner/test-runner/capture-fail-screenshot.js.map +1 -0
- package/build/src/worker/runner/test-runner/execution-thread.d.ts +2 -4
- package/build/src/worker/runner/test-runner/execution-thread.js +11 -18
- package/build/src/worker/runner/test-runner/execution-thread.js.map +1 -1
- package/build/src/worker/runner/test-runner/index.d.ts +3 -2
- package/build/src/worker/runner/test-runner/index.js +72 -12
- package/build/src/worker/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/runner/test-runner/types.d.ts +1 -2
- package/build/src/worker/testplane-facade.js +5 -3
- package/build/src/worker/testplane-facade.js.map +1 -1
- package/build/src/worker/testplane.d.ts +2 -0
- package/build/src/worker/testplane.js +4 -1
- package/build/src/worker/testplane.js.map +1 -1
- package/build/src/ws-connection/constants.d.ts +13 -0
- package/build/src/ws-connection/constants.js +17 -0
- package/build/src/ws-connection/constants.js.map +1 -0
- package/build/src/ws-connection/error.d.ts +52 -0
- package/build/src/ws-connection/error.js +84 -0
- package/build/src/ws-connection/error.js.map +1 -0
- package/build/src/ws-connection/index.d.ts +83 -0
- package/build/src/ws-connection/index.js +397 -0
- package/build/src/ws-connection/index.js.map +1 -0
- package/build/src/ws-connection/utils.d.ts +6 -0
- package/build/src/ws-connection/utils.js +9 -0
- package/build/src/ws-connection/utils.js.map +1 -0
- package/package.json +41 -25
- package/build/src/browser/client-bridge/client-bridge.d.ts +0 -12
- package/build/src/browser/client-bridge/client-bridge.js +0 -45
- package/build/src/browser/client-bridge/client-bridge.js.map +0 -1
- package/build/src/browser/client-scripts/bundle.compat.js +0 -23
- package/build/src/browser/client-scripts/bundle.native.js +0 -15
- package/build/src/browser/client-scripts/ignore-areas.js +0 -7
- package/build/src/browser/client-scripts/index.js +0 -850
- package/build/src/browser/client-scripts/lib.compat.js +0 -28
- package/build/src/browser/client-scripts/lib.native.js +0 -28
- package/build/src/browser/client-scripts/rect.js +0 -251
- package/build/src/browser/client-scripts/util.js +0 -319
- package/build/src/browser/screen-shooter/index.d.ts +0 -22
- package/build/src/browser/screen-shooter/index.js +0 -117
- package/build/src/browser/screen-shooter/index.js.map +0 -1
- package/build/src/browser/screen-shooter/types.d.ts +0 -14
- package/build/src/browser/screen-shooter/types.js.map +0 -1
- package/build/src/browser/screen-shooter/utils.d.ts +0 -18
- package/build/src/browser/screen-shooter/utils.js +0 -198
- package/build/src/browser/screen-shooter/utils.js.map +0 -1
- package/build/src/browser/standalone.d.ts +0 -6
- package/build/src/browser/standalone.js.map +0 -1
- package/build/src/runner/browser-env/index.d.ts +0 -12
- package/build/src/runner/browser-env/index.js +0 -39
- package/build/src/runner/browser-env/index.js.map +0 -1
- package/build/src/worker/runner/test-runner/one-time-screenshooter.d.ts +0 -35
- package/build/src/worker/runner/test-runner/one-time-screenshooter.js +0 -86
- package/build/src/worker/runner/test-runner/one-time-screenshooter.js.map +0 -1
- /package/build/src/browser/{screen-shooter → cdp}/types.js +0 -0
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import { Image } from "../../image";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
top: number;
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
}
|
|
2
|
+
import type { CropMargins } from "./utils";
|
|
3
|
+
import { type Point, type Rect, type Size } from "../isomorphic/geometry";
|
|
8
4
|
export type ScreenshotMode = "fullpage" | "viewport" | "auto";
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
export type { CropMargins } from "./utils";
|
|
6
|
+
export interface CaptureViewportImageOpts {
|
|
7
|
+
viewportOffset: Point<"page", "device">;
|
|
8
|
+
viewportSize: Size<"device">;
|
|
9
|
+
/** Delay before taking the screenshot, in milliseconds. */
|
|
10
|
+
screenshotDelay?: number;
|
|
11
|
+
/** Additional raw screenshot margins to crop, in physical pixels. */
|
|
12
|
+
cropMargins?: CropMargins;
|
|
17
13
|
}
|
|
18
14
|
export declare class Camera {
|
|
19
15
|
private _screenshotMode;
|
|
20
16
|
private _takeScreenshot;
|
|
21
|
-
private
|
|
17
|
+
private _calibratedArea;
|
|
18
|
+
private _calibrationScreenshotSize;
|
|
19
|
+
private _debugTmpDir;
|
|
22
20
|
static create(screenshotMode: ScreenshotMode, takeScreenshot: () => Promise<string>): Camera;
|
|
23
21
|
constructor(screenshotMode: ScreenshotMode, takeScreenshot: () => Promise<string>);
|
|
24
|
-
calibrate(
|
|
25
|
-
captureViewportImage(
|
|
26
|
-
private
|
|
22
|
+
calibrate(calibratedArea: Rect<"image", "device">, screenshotSize: Size<"device">): void;
|
|
23
|
+
captureViewportImage(opts?: CaptureViewportImageOpts): Promise<Image>;
|
|
24
|
+
private _cropAreaToIntersection;
|
|
27
25
|
private _cropAreaToViewport;
|
|
28
26
|
}
|
|
29
|
-
export {};
|
|
@@ -27,55 +27,102 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.Camera = void 0;
|
|
30
|
-
const
|
|
30
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
31
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
32
|
+
const debug_1 = __importDefault(require("debug"));
|
|
31
33
|
const image_1 = require("../../image");
|
|
32
34
|
const utils = __importStar(require("./utils"));
|
|
35
|
+
const logger = __importStar(require("../../utils/logger"));
|
|
36
|
+
const geometry_1 = require("../isomorphic/geometry");
|
|
37
|
+
const help_1 = require("../../constants/help");
|
|
38
|
+
const debug = (0, debug_1.default)("testplane:screenshots:camera");
|
|
33
39
|
class Camera {
|
|
34
40
|
static create(screenshotMode, takeScreenshot) {
|
|
35
41
|
return new this(screenshotMode, takeScreenshot);
|
|
36
42
|
}
|
|
37
43
|
constructor(screenshotMode, takeScreenshot) {
|
|
44
|
+
this._debugTmpDir = null;
|
|
38
45
|
this._screenshotMode = screenshotMode;
|
|
39
46
|
this._takeScreenshot = takeScreenshot;
|
|
40
|
-
this.
|
|
47
|
+
this._calibratedArea = null;
|
|
48
|
+
this._calibrationScreenshotSize = null;
|
|
49
|
+
if (process.env.TESTPLANE_DEBUG_SCREENSHOTS) {
|
|
50
|
+
this._debugTmpDir = node_path_1.default.join(node_os_1.default.tmpdir(), `testplane-camera-viewports-${Math.random().toString(36).slice(2)}`);
|
|
51
|
+
console.log("Debug camera images will be saved to: ", this._debugTmpDir);
|
|
52
|
+
}
|
|
41
53
|
}
|
|
42
|
-
calibrate(
|
|
43
|
-
|
|
54
|
+
calibrate(calibratedArea, screenshotSize) {
|
|
55
|
+
debug("Setting calibrated area: %O for screenshot size: %O", calibratedArea, screenshotSize ?? null);
|
|
56
|
+
this._calibratedArea = calibratedArea;
|
|
57
|
+
this._calibrationScreenshotSize = screenshotSize;
|
|
44
58
|
}
|
|
45
|
-
async captureViewportImage(
|
|
59
|
+
async captureViewportImage(opts) {
|
|
60
|
+
if (opts?.screenshotDelay) {
|
|
61
|
+
await new Promise(resolve => setTimeout(resolve, opts.screenshotDelay));
|
|
62
|
+
}
|
|
46
63
|
const base64 = await this._takeScreenshot();
|
|
47
64
|
const image = image_1.Image.fromBase64(base64);
|
|
48
|
-
const { width, height } =
|
|
49
|
-
const imageArea = {
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
const { width, height } = image.getSize();
|
|
66
|
+
const imageArea = {
|
|
67
|
+
left: 0,
|
|
68
|
+
top: 0,
|
|
69
|
+
width,
|
|
70
|
+
height,
|
|
71
|
+
};
|
|
72
|
+
const shouldApplyCalibration = this._calibrationScreenshotSize !== null &&
|
|
73
|
+
this._calibrationScreenshotSize.width === width &&
|
|
74
|
+
this._calibrationScreenshotSize.height === height;
|
|
75
|
+
const calibrationArea = shouldApplyCalibration ? this._calibratedArea : null;
|
|
76
|
+
const calibratedImageArea = this._cropAreaToIntersection(imageArea, calibrationArea);
|
|
77
|
+
const cropMarginsArea = utils.cropMarginsToRect(imageArea, opts?.cropMargins);
|
|
78
|
+
const croppedImageArea = (0, geometry_1.getIntersection)(calibratedImageArea, cropMarginsArea);
|
|
79
|
+
if (croppedImageArea === null) {
|
|
80
|
+
throw new Error(`Invalid cropMargins option: resulting screenshot crop area is empty. ` +
|
|
81
|
+
`imageSize: ${(0, geometry_1.prettySize)(imageArea)}, cropMargins: ${JSON.stringify(opts?.cropMargins)}`);
|
|
82
|
+
}
|
|
83
|
+
const viewportCroppedArea = this._cropAreaToViewport(croppedImageArea, { width, height }, croppedImageArea, opts);
|
|
84
|
+
await utils.saveViewportImageForDebugIfNeeded(image, croppedImageArea, this._debugTmpDir);
|
|
52
85
|
if (viewportCroppedArea.width !== width || viewportCroppedArea.height !== height) {
|
|
53
86
|
await image.crop(viewportCroppedArea);
|
|
54
87
|
}
|
|
55
88
|
return image;
|
|
56
89
|
}
|
|
57
|
-
|
|
58
|
-
if (!
|
|
90
|
+
_cropAreaToIntersection(imageArea, cropArea) {
|
|
91
|
+
if (!cropArea) {
|
|
59
92
|
return imageArea;
|
|
60
93
|
}
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
94
|
+
const intersection = (0, geometry_1.getIntersection)(imageArea, cropArea);
|
|
95
|
+
if (intersection === null) {
|
|
96
|
+
logger.warn(`No intersection found between image area and crop area, falling back to original image area.\n` +
|
|
97
|
+
`imageArea: ${(0, geometry_1.prettyRect)(imageArea)}, cropArea: ${(0, geometry_1.prettyRect)(cropArea)}\n` +
|
|
98
|
+
`This likely means Testplane incorrectly determined area free of system UI elements. You can let us know at ${help_1.NEW_ISSUE_LINK}, providing this log and browser used.`);
|
|
66
99
|
return imageArea;
|
|
67
100
|
}
|
|
68
|
-
|
|
69
|
-
|
|
101
|
+
return intersection;
|
|
102
|
+
}
|
|
103
|
+
/* On some browsers, e.g. older firefox versions, the screenshot returned by the browser can be the whole page
|
|
104
|
+
(even beyond the viewport, potentially spanning thousands of pixels down).
|
|
105
|
+
This function is used to detect such cases and crop the image to the viewport, always. */
|
|
106
|
+
_cropAreaToViewport(imageAreaToCrop, originalImageSize, calibrationArea, opts) {
|
|
107
|
+
if (!opts?.viewportSize || !opts?.viewportOffset) {
|
|
108
|
+
return imageAreaToCrop;
|
|
109
|
+
}
|
|
110
|
+
const isFullPage = utils.isFullPage(imageAreaToCrop, originalImageSize, calibrationArea ?? imageAreaToCrop, this._screenshotMode);
|
|
111
|
+
const cropArea = { ...opts.viewportSize, ...opts.viewportOffset };
|
|
70
112
|
if (!isFullPage) {
|
|
71
|
-
|
|
113
|
+
return imageAreaToCrop;
|
|
72
114
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
115
|
+
debug("cropping area to viewport.\n imageArea: %O\n viewportSize: %O\n viewportOffset: %O\n cropArea: %O\n isFullPage: %s\n screenshotMode: %s\n documentSize: %O", imageAreaToCrop, opts.viewportSize, opts.viewportOffset, cropArea, isFullPage, this._screenshotMode);
|
|
116
|
+
const result = (0, geometry_1.getIntersection)(imageAreaToCrop, cropArea);
|
|
117
|
+
if (result === null) {
|
|
118
|
+
logger.warn(`No intersection found between image area and viewport area, falling back to original image area.\n` +
|
|
119
|
+
`imageArea: ${(0, geometry_1.prettyRect)(imageAreaToCrop)},\n` +
|
|
120
|
+
`viewportSize: ${(0, geometry_1.prettySize)(opts.viewportSize)},\n` +
|
|
121
|
+
`viewportOffset: ${(0, geometry_1.prettyPoint)(opts.viewportOffset)}\n` +
|
|
122
|
+
`This likely means Testplane incorrectly determined whether returned image is full page and viewport state. You can let us know at ${help_1.NEW_ISSUE_LINK}, providing this log and browser used.`);
|
|
123
|
+
return imageAreaToCrop;
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
79
126
|
}
|
|
80
127
|
}
|
|
81
128
|
exports.Camera = Camera;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/camera/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/camera/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { ScreenshotMode } from ".";
|
|
2
|
+
import { Image } from "../../image";
|
|
3
|
+
import { Rect, Size } from "../isomorphic/geometry";
|
|
4
|
+
export interface CropMargins {
|
|
5
|
+
top?: number;
|
|
6
|
+
right?: number;
|
|
7
|
+
bottom?: number;
|
|
8
|
+
left?: number;
|
|
9
|
+
}
|
|
10
|
+
type NormalizedCropMargins = Required<CropMargins>;
|
|
11
|
+
export declare const isFullPage: (imageSize: Rect<"image", "device">, viewportSize: Size<"device">, calibratedArea: Rect<"image", "device">, screenshotMode: ScreenshotMode) => boolean;
|
|
12
|
+
export declare const normalizeCropMargins: (cropMargins?: CropMargins) => NormalizedCropMargins;
|
|
13
|
+
export declare const cropMarginsToRect: (imageArea: Rect<"image", "device">, cropMargins?: CropMargins) => Rect<"image", "device">;
|
|
14
|
+
export declare function saveViewportImageForDebugIfNeeded(viewportImage: Image, viewportCroppedArea: Rect<"image", "device">, debugDir: string | null): Promise<void>;
|
|
15
|
+
export {};
|
|
@@ -1,18 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFullPage = void 0;
|
|
4
|
-
const
|
|
6
|
+
exports.saveViewportImageForDebugIfNeeded = exports.cropMarginsToRect = exports.normalizeCropMargins = exports.isFullPage = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const geometry_1 = require("../isomorphic/geometry");
|
|
10
|
+
const debug_utils_1 = require("../screen-shooter/composite-image/debug-utils");
|
|
11
|
+
const isFullPage = (imageSize, viewportSize, calibratedArea, screenshotMode) => {
|
|
12
|
+
// "system ui" is something like status bar on safari mobile, or address bar at the bottom
|
|
13
|
+
const systemUiHeight = calibratedArea.top + (imageSize.height - (0, geometry_1.getBottom)(calibratedArea));
|
|
5
14
|
switch (screenshotMode) {
|
|
6
15
|
case "fullpage":
|
|
7
16
|
return true;
|
|
8
17
|
case "viewport":
|
|
9
18
|
return false;
|
|
10
19
|
case "auto":
|
|
11
|
-
return
|
|
20
|
+
return imageSize.height > viewportSize.height + systemUiHeight;
|
|
12
21
|
}
|
|
13
22
|
};
|
|
14
23
|
exports.isFullPage = isFullPage;
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
const normalizeCropMargins = (cropMargins) => {
|
|
25
|
+
const result = {
|
|
26
|
+
top: cropMargins?.top ?? 0,
|
|
27
|
+
right: cropMargins?.right ?? 0,
|
|
28
|
+
bottom: cropMargins?.bottom ?? 0,
|
|
29
|
+
left: cropMargins?.left ?? 0,
|
|
30
|
+
};
|
|
31
|
+
for (const side of ["top", "right", "bottom", "left"]) {
|
|
32
|
+
const value = result[side];
|
|
33
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0 || Math.floor(value) !== value) {
|
|
34
|
+
throw new Error(`Invalid cropMargins.${side} option: expected a non-negative integer, got ${String(value)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
exports.normalizeCropMargins = normalizeCropMargins;
|
|
40
|
+
const cropMarginsToRect = (imageArea, cropMargins) => {
|
|
41
|
+
const margins = (0, exports.normalizeCropMargins)(cropMargins);
|
|
42
|
+
return {
|
|
43
|
+
top: margins.top,
|
|
44
|
+
left: margins.left,
|
|
45
|
+
width: imageArea.width - margins.left - margins.right,
|
|
46
|
+
height: imageArea.height - margins.top - margins.bottom,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
exports.cropMarginsToRect = cropMarginsToRect;
|
|
50
|
+
async function saveViewportImageForDebugIfNeeded(viewportImage, viewportCroppedArea, debugDir) {
|
|
51
|
+
if (!process.env.TESTPLANE_DEBUG_SCREENSHOTS || !debugDir) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
fs_1.default.mkdirSync(debugDir, { recursive: true });
|
|
56
|
+
const timestamp = String(Date.now()).padStart(13, "0");
|
|
57
|
+
const randomId = Math.random().toString(36).substring(2, 8);
|
|
58
|
+
const outputPath = path_1.default.join(debugDir, `viewport-${timestamp}-${randomId}.png`);
|
|
59
|
+
await (0, debug_utils_1.saveViewportImageWithDebugRects)(viewportImage, [
|
|
60
|
+
{
|
|
61
|
+
rect: viewportCroppedArea,
|
|
62
|
+
color: { r: 0, g: 255, b: 0, a: 255 },
|
|
63
|
+
},
|
|
64
|
+
], outputPath);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn("Failed to save camera viewport debug image: %O", error);
|
|
68
|
+
}
|
|
17
69
|
}
|
|
70
|
+
exports.saveViewportImageForDebugIfNeeded = saveViewportImageForDebugIfNeeded;
|
|
18
71
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/browser/camera/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/browser/camera/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CDPEvent, CDPRequest } from "./types";
|
|
2
|
+
import type { Browser } from "../types";
|
|
3
|
+
type OnEventMessageFn = (cdpEventMessage: CDPEvent) => unknown;
|
|
4
|
+
export declare class CDPConnection {
|
|
5
|
+
onEventMessage: OnEventMessageFn | null;
|
|
6
|
+
private readonly _wsConnection;
|
|
7
|
+
private constructor();
|
|
8
|
+
/** @description Creates CDPConnection without establishing it */
|
|
9
|
+
static create(browser: Browser): Promise<CDPConnection>;
|
|
10
|
+
close(): void;
|
|
11
|
+
private _onMessage;
|
|
12
|
+
/** @description Performs high-level CDP request with retries and timeouts */
|
|
13
|
+
request<T = void>(method: CDPRequest["method"], { params, sessionId }?: Omit<CDPRequest, "id" | "method">): Promise<T>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDPConnection = void 0;
|
|
4
|
+
const node_util_1 = require("node:util");
|
|
5
|
+
const debug_1 = require("./debug");
|
|
6
|
+
const ws_endpoint_1 = require("./ws-endpoint");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const error_1 = require("./error");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const ws_connection_1 = require("../../ws-connection");
|
|
11
|
+
const constants_2 = require("../../ws-connection/constants");
|
|
12
|
+
const error_2 = require("../../ws-connection/error");
|
|
13
|
+
const utils_2 = require("../../ws-connection/utils");
|
|
14
|
+
class CDPConnection {
|
|
15
|
+
constructor(cdpWsEndpoint, headers) {
|
|
16
|
+
this.onEventMessage = null;
|
|
17
|
+
this._wsConnection = new ws_connection_1.WsConnection(cdpWsEndpoint, {
|
|
18
|
+
headers,
|
|
19
|
+
debugFn: debug_1.debugCdp,
|
|
20
|
+
retries: {
|
|
21
|
+
count: constants_1.CDP_CONNECTION_RETRIES,
|
|
22
|
+
baseDelay: constants_1.CDP_CONNECTION_RETRY_BASE_DELAY,
|
|
23
|
+
},
|
|
24
|
+
timeouts: {
|
|
25
|
+
request: constants_1.CDP_REQUEST_TIMEOUT,
|
|
26
|
+
createSession: constants_1.CDP_CONNECTION_TIMEOUT,
|
|
27
|
+
},
|
|
28
|
+
errors: {
|
|
29
|
+
ConnectionEstablishment: error_1.CDPConnectionEstablishmentError,
|
|
30
|
+
ConnectionBreak: error_1.CDPConnectionBreakError,
|
|
31
|
+
ConnectionTerminated: error_1.CDPConnectionTerminatedError,
|
|
32
|
+
ConnectionTimeout: error_1.CDPConnectionTimeoutError,
|
|
33
|
+
RequestTimeout: error_1.CDPRequestError,
|
|
34
|
+
},
|
|
35
|
+
onMessage: this._onMessage.bind(this),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** @description Creates CDPConnection without establishing it */
|
|
39
|
+
static async create(browser) {
|
|
40
|
+
const sessionId = browser.publicAPI.sessionId;
|
|
41
|
+
const cdpWsEndpoint = await (0, ws_endpoint_1.getWsEndpoint)(browser);
|
|
42
|
+
const headers = browser.publicAPI.options?.headers ?? {};
|
|
43
|
+
if (!cdpWsEndpoint) {
|
|
44
|
+
throw new error_1.CDPError({ message: `Couldn't determine CDP endpoint for session ${sessionId}` });
|
|
45
|
+
}
|
|
46
|
+
return new this(cdpWsEndpoint, headers);
|
|
47
|
+
}
|
|
48
|
+
close() {
|
|
49
|
+
this._wsConnection.close();
|
|
50
|
+
}
|
|
51
|
+
_onMessage(data) {
|
|
52
|
+
const message = data.toString("utf8");
|
|
53
|
+
try {
|
|
54
|
+
const jsonParsedMessage = JSON.parse(message);
|
|
55
|
+
if (debug_1.debugCdp.enabled) {
|
|
56
|
+
(0, debug_1.debugCdp)(`< ${(0, node_util_1.inspect)(jsonParsedMessage, {
|
|
57
|
+
depth: 3,
|
|
58
|
+
maxStringLength: 150,
|
|
59
|
+
breakLength: Infinity,
|
|
60
|
+
compact: true,
|
|
61
|
+
})}`);
|
|
62
|
+
}
|
|
63
|
+
if (!("id" in jsonParsedMessage)) {
|
|
64
|
+
if (this.onEventMessage) {
|
|
65
|
+
this.onEventMessage(jsonParsedMessage);
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const requestId = jsonParsedMessage.id;
|
|
70
|
+
if ("result" in jsonParsedMessage) {
|
|
71
|
+
this._wsConnection.provideResponseFor(requestId, jsonParsedMessage.result);
|
|
72
|
+
}
|
|
73
|
+
else if ("error" in jsonParsedMessage) {
|
|
74
|
+
this._wsConnection.provideResponseFor(requestId, new error_1.CDPRequestError({
|
|
75
|
+
message: jsonParsedMessage.error.message,
|
|
76
|
+
code: jsonParsedMessage.error.code,
|
|
77
|
+
requestId,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this._wsConnection.provideResponseFor(requestId, new error_1.CDPRequestError({
|
|
82
|
+
message: "Received malformed response without result",
|
|
83
|
+
code: constants_2.WS_ERROR_CODE.MALFORMED_RESPONSE,
|
|
84
|
+
requestId,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (debug_1.debugCdp.enabled) {
|
|
90
|
+
(0, debug_1.debugCdp)(`\u2718 Couldn't process CDP message\n\tError: ${err}\n\tMessage: "${message}"`);
|
|
91
|
+
}
|
|
92
|
+
const requestId = (0, utils_1.extractRequestIdFromBrokenResponse)(message);
|
|
93
|
+
if (requestId) {
|
|
94
|
+
this._wsConnection.provideResponseFor(requestId, new error_1.CDPRequestError({
|
|
95
|
+
message: "Received malformed response: response is invalid JSON",
|
|
96
|
+
code: constants_2.WS_ERROR_CODE.MALFORMED_RESPONSE,
|
|
97
|
+
requestId,
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** @description Performs high-level CDP request with retries and timeouts */
|
|
103
|
+
async request(method, { params, sessionId } = {}) {
|
|
104
|
+
let result;
|
|
105
|
+
for (let retriesLeft = constants_1.CDP_REQUEST_RETRIES; retriesLeft >= 0; retriesLeft--) {
|
|
106
|
+
const id = this._wsConnection.getRequestId();
|
|
107
|
+
const requestMessage = JSON.stringify({ id, sessionId, method, params });
|
|
108
|
+
if (debug_1.debugCdp.enabled) {
|
|
109
|
+
(0, debug_1.debugCdp)(`> ${(0, node_util_1.inspect)(requestMessage, {
|
|
110
|
+
depth: 3,
|
|
111
|
+
maxStringLength: 150,
|
|
112
|
+
breakLength: Infinity,
|
|
113
|
+
compact: true,
|
|
114
|
+
})}`);
|
|
115
|
+
}
|
|
116
|
+
result = (await this._wsConnection.makeRequest(id, requestMessage));
|
|
117
|
+
if (!(result instanceof error_2.WsError) || !result.isRetryable() || retriesLeft <= 0) {
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
if (debug_1.debugCdp.enabled) {
|
|
121
|
+
(0, debug_1.debugCdp)(`⟳ ${(0, node_util_1.inspect)({
|
|
122
|
+
id,
|
|
123
|
+
sessionId,
|
|
124
|
+
method,
|
|
125
|
+
params,
|
|
126
|
+
errorMessage: result.message,
|
|
127
|
+
retriesLeft: retriesLeft,
|
|
128
|
+
})}`);
|
|
129
|
+
}
|
|
130
|
+
// Intentionally avoiding wait after timeout
|
|
131
|
+
if (!(result instanceof error_1.CDPRequestTimeoutError)) {
|
|
132
|
+
await (0, utils_2.exponentiallyWait)({
|
|
133
|
+
baseDelay: constants_1.CDP_REQUEST_RETRY_BASE_DELAY,
|
|
134
|
+
attempt: constants_1.CDP_REQUEST_RETRIES - retriesLeft,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (result instanceof error_2.WsError) {
|
|
139
|
+
throw result;
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.CDPConnection = CDPConnection;
|
|
145
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/browser/cdp/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const CDP_CONNECTION_TIMEOUT = 15000;
|
|
2
|
+
export declare const CDP_CONNECTION_RETRIES = 3;
|
|
3
|
+
export declare const CDP_CONNECTION_RETRY_BASE_DELAY = 500;
|
|
4
|
+
export declare const CDP_REQUEST_TIMEOUT = 15000;
|
|
5
|
+
export declare const CDP_REQUEST_RETRIES = 3;
|
|
6
|
+
export declare const CDP_REQUEST_RETRY_BASE_DELAY = 500;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDP_REQUEST_RETRY_BASE_DELAY = exports.CDP_REQUEST_RETRIES = exports.CDP_REQUEST_TIMEOUT = exports.CDP_CONNECTION_RETRY_BASE_DELAY = exports.CDP_CONNECTION_RETRIES = exports.CDP_CONNECTION_TIMEOUT = void 0;
|
|
4
|
+
exports.CDP_CONNECTION_TIMEOUT = 15000; // 15 sec
|
|
5
|
+
exports.CDP_CONNECTION_RETRIES = 3;
|
|
6
|
+
exports.CDP_CONNECTION_RETRY_BASE_DELAY = 500;
|
|
7
|
+
exports.CDP_REQUEST_TIMEOUT = 15000; // 15 sec
|
|
8
|
+
exports.CDP_REQUEST_RETRIES = 3;
|
|
9
|
+
exports.CDP_REQUEST_RETRY_BASE_DELAY = 500;
|
|
10
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/browser/cdp/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,KAAK,CAAC,CAAC,SAAS;AACzC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,+BAA+B,GAAG,GAAG,CAAC;AACtC,QAAA,mBAAmB,GAAG,KAAK,CAAC,CAAC,SAAS;AACtC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,4BAA4B,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.debugCdp = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
exports.debugCdp = (0, debug_1.default)("testplane:cdp");
|
|
9
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/browser/cdp/debug.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAgC;AAEnB,QAAA,QAAQ,GAAG,IAAA,eAAW,EAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CDPConnection } from "../connection";
|
|
2
|
+
import { CDPEventEmitter } from "../emitter";
|
|
3
|
+
import type { CDPCSSStyleSheetHeader, CDPSessionId, CDPStyleSheetId } from "../types";
|
|
4
|
+
export interface CSSRuleUsage {
|
|
5
|
+
styleSheetId: CDPStyleSheetId;
|
|
6
|
+
startOffset: number;
|
|
7
|
+
endOffset: number;
|
|
8
|
+
used: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface StopRuleUsageTrackingResponse {
|
|
11
|
+
ruleUsage: CSSRuleUsage[];
|
|
12
|
+
}
|
|
13
|
+
interface TakeCoverageDeltaResponse {
|
|
14
|
+
coverage: CSSRuleUsage[];
|
|
15
|
+
/** Monotonically increasing time, in seconds. */
|
|
16
|
+
timestamp: number;
|
|
17
|
+
}
|
|
18
|
+
export interface CssEvents {
|
|
19
|
+
fontsUpdated: {
|
|
20
|
+
font: Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
mediaQueryResultChanged: Record<string, never>;
|
|
23
|
+
styleSheetAdded: {
|
|
24
|
+
header: CDPCSSStyleSheetHeader;
|
|
25
|
+
};
|
|
26
|
+
styleSheetChanged: {
|
|
27
|
+
styleSheetId: CDPStyleSheetId;
|
|
28
|
+
};
|
|
29
|
+
styleSheetRemoved: {
|
|
30
|
+
styleSheetId: CDPStyleSheetId;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/ */
|
|
34
|
+
export declare class CDPCss extends CDPEventEmitter<CssEvents> {
|
|
35
|
+
private readonly _connection;
|
|
36
|
+
constructor(connection: CDPConnection);
|
|
37
|
+
/** @param sessionId result of "Target.attachToTarget" */
|
|
38
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-enable */
|
|
39
|
+
enable(sessionId: CDPSessionId): Promise<void>;
|
|
40
|
+
/** @param sessionId result of "Target.attachToTarget" */
|
|
41
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-disable */
|
|
42
|
+
disable(sessionId: CDPSessionId): Promise<void>;
|
|
43
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-getStyleSheetText */
|
|
44
|
+
getStyleSheetText(sessionId: CDPSessionId, styleSheetId: CDPStyleSheetId): Promise<{
|
|
45
|
+
text: string;
|
|
46
|
+
}>;
|
|
47
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-startRuleUsageTracking */
|
|
48
|
+
startRuleUsageTracking(sessionId: CDPSessionId): Promise<void>;
|
|
49
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-stopRuleUsageTracking */
|
|
50
|
+
stopRuleUsageTracking(sessionId: CDPSessionId): Promise<StopRuleUsageTrackingResponse>;
|
|
51
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-takeCoverageDelta */
|
|
52
|
+
takeCoverageDelta(sessionId: CDPSessionId): Promise<TakeCoverageDeltaResponse>;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CDPCss = void 0;
|
|
4
|
+
const emitter_1 = require("../emitter");
|
|
5
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/ */
|
|
6
|
+
class CDPCss extends emitter_1.CDPEventEmitter {
|
|
7
|
+
constructor(connection) {
|
|
8
|
+
super();
|
|
9
|
+
this._connection = connection;
|
|
10
|
+
}
|
|
11
|
+
/** @param sessionId result of "Target.attachToTarget" */
|
|
12
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-enable */
|
|
13
|
+
async enable(sessionId) {
|
|
14
|
+
return this._connection.request("CSS.enable", { sessionId });
|
|
15
|
+
}
|
|
16
|
+
/** @param sessionId result of "Target.attachToTarget" */
|
|
17
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-disable */
|
|
18
|
+
async disable(sessionId) {
|
|
19
|
+
return this._connection.request("CSS.disable", { sessionId });
|
|
20
|
+
}
|
|
21
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-getStyleSheetText */
|
|
22
|
+
async getStyleSheetText(sessionId, styleSheetId) {
|
|
23
|
+
return this._connection.request("CSS.getStyleSheetText", { sessionId, params: { styleSheetId } });
|
|
24
|
+
}
|
|
25
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-startRuleUsageTracking */
|
|
26
|
+
async startRuleUsageTracking(sessionId) {
|
|
27
|
+
return this._connection.request("CSS.startRuleUsageTracking", { sessionId });
|
|
28
|
+
}
|
|
29
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-stopRuleUsageTracking */
|
|
30
|
+
async stopRuleUsageTracking(sessionId) {
|
|
31
|
+
return this._connection.request("CSS.stopRuleUsageTracking", { sessionId });
|
|
32
|
+
}
|
|
33
|
+
/** @link https://chromedevtools.github.io/devtools-protocol/tot/CSS/#method-takeCoverageDelta */
|
|
34
|
+
async takeCoverageDelta(sessionId) {
|
|
35
|
+
return this._connection.request("CSS.takeCoverageDelta", { sessionId });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.CDPCss = CDPCss;
|
|
39
|
+
//# sourceMappingURL=css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/domains/css.ts"],"names":[],"mappings":";;;AACA,wCAA6C;AAoC7C,wEAAwE;AACxE,MAAa,MAAO,SAAQ,yBAA0B;IAGlD,YAAmB,UAAyB;QACxC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,sFAAsF;IACtF,KAAK,CAAC,MAAM,CAAC,SAAuB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,yDAAyD;IACzD,uFAAuF;IACvF,KAAK,CAAC,OAAO,CAAC,SAAuB;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,iBAAiB,CAAC,SAAuB,EAAE,YAA6B;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,sGAAsG;IACtG,KAAK,CAAC,sBAAsB,CAAC,SAAuB;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,qGAAqG;IACrG,KAAK,CAAC,qBAAqB,CAAC,SAAuB;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,iBAAiB,CAAC,SAAuB;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5E,CAAC;CACJ;AAxCD,wBAwCC"}
|