testplane 0.0.1 → 0.1.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 +20 -0
- package/README.md +102 -0
- package/bin/hermione +4 -0
- package/bin/testplane +4 -0
- package/build/package.json +130 -0
- package/build/src/base-testplane.d.ts +18 -0
- package/build/src/base-testplane.js +53 -0
- package/build/src/base-testplane.js.map +1 -0
- package/build/src/browser/browser.d.ts +28 -0
- package/build/src/browser/browser.js +111 -0
- package/build/src/browser/browser.js.map +1 -0
- package/build/src/browser/calibrator.d.ts +16 -0
- package/build/src/browser/calibrator.js +105 -0
- package/build/src/browser/calibrator.js.map +1 -0
- package/build/src/browser/camera/index.d.ts +13 -0
- package/build/src/browser/camera/index.js +53 -0
- package/build/src/browser/camera/index.js.map +1 -0
- package/build/src/browser/camera/utils.d.ts +1 -0
- package/build/src/browser/camera/utils.js +25 -0
- package/build/src/browser/camera/utils.js.map +1 -0
- package/build/src/browser/client-bridge/client-bridge.d.ts +12 -0
- package/build/src/browser/client-bridge/client-bridge.js +41 -0
- package/build/src/browser/client-bridge/client-bridge.js.map +1 -0
- package/build/src/browser/client-bridge/error.d.ts +3 -0
- package/build/src/browser/client-bridge/error.js +11 -0
- package/build/src/browser/client-bridge/error.js.map +1 -0
- package/build/src/browser/client-bridge/index.d.ts +4 -0
- package/build/src/browser/client-bridge/index.js +33 -0
- package/build/src/browser/client-bridge/index.js.map +1 -0
- package/build/src/browser/client-scripts/calibrate.js +70 -0
- package/build/src/browser/client-scripts/ignore-areas.deprecated.js +7 -0
- package/build/src/browser/client-scripts/ignore-areas.js +7 -0
- package/build/src/browser/client-scripts/index.js +405 -0
- package/build/src/browser/client-scripts/lib.compat.js +28 -0
- package/build/src/browser/client-scripts/lib.native.js +28 -0
- package/build/src/browser/client-scripts/rect.js +239 -0
- package/build/src/browser/client-scripts/util.js +142 -0
- package/build/src/browser/client-scripts/xpath.js +31 -0
- package/build/src/browser/commands/assert-view/assert-view-results.d.ts +12 -0
- package/build/src/browser/commands/assert-view/assert-view-results.js +34 -0
- package/build/src/browser/commands/assert-view/assert-view-results.js.map +1 -0
- package/build/src/browser/commands/assert-view/capture-processors/assert-refs.d.ts +3 -0
- package/build/src/browser/commands/assert-view/capture-processors/assert-refs.js +31 -0
- package/build/src/browser/commands/assert-view/capture-processors/assert-refs.js.map +1 -0
- package/build/src/browser/commands/assert-view/capture-processors/index.d.ts +2 -0
- package/build/src/browser/commands/assert-view/capture-processors/index.js +6 -0
- package/build/src/browser/commands/assert-view/capture-processors/index.js.map +1 -0
- package/build/src/browser/commands/assert-view/capture-processors/update-refs.d.ts +6 -0
- package/build/src/browser/commands/assert-view/capture-processors/update-refs.js +8 -0
- package/build/src/browser/commands/assert-view/capture-processors/update-refs.js.map +1 -0
- package/build/src/browser/commands/assert-view/errors/assert-view-error.d.ts +4 -0
- package/build/src/browser/commands/assert-view/errors/assert-view-error.js +12 -0
- package/build/src/browser/commands/assert-view/errors/assert-view-error.js.map +1 -0
- package/build/src/browser/commands/assert-view/errors/base-state-error.d.ts +7 -0
- package/build/src/browser/commands/assert-view/errors/base-state-error.js +14 -0
- package/build/src/browser/commands/assert-view/errors/base-state-error.js.map +1 -0
- package/build/src/browser/commands/assert-view/errors/image-diff-error.d.ts +64 -0
- package/build/src/browser/commands/assert-view/errors/image-diff-error.js +32 -0
- package/build/src/browser/commands/assert-view/errors/image-diff-error.js.map +1 -0
- package/build/src/browser/commands/assert-view/errors/invalid-png-error.d.ts +5 -0
- package/build/src/browser/commands/assert-view/errors/invalid-png-error.js +9 -0
- package/build/src/browser/commands/assert-view/errors/invalid-png-error.js.map +1 -0
- package/build/src/browser/commands/assert-view/errors/no-ref-image-error.d.ts +14 -0
- package/build/src/browser/commands/assert-view/errors/no-ref-image-error.js +18 -0
- package/build/src/browser/commands/assert-view/errors/no-ref-image-error.js.map +1 -0
- package/build/src/browser/commands/assert-view/index.d.ts +2 -0
- package/build/src/browser/commands/assert-view/index.js +130 -0
- package/build/src/browser/commands/assert-view/index.js.map +1 -0
- package/build/src/browser/commands/clearSession.d.ts +3 -0
- package/build/src/browser/commands/clearSession.js +29 -0
- package/build/src/browser/commands/clearSession.js.map +1 -0
- package/build/src/browser/commands/getConfig.d.ts +2 -0
- package/build/src/browser/commands/getConfig.js +6 -0
- package/build/src/browser/commands/getConfig.js.map +1 -0
- package/build/src/browser/commands/getPuppeteer.d.ts +2 -0
- package/build/src/browser/commands/getPuppeteer.js +32 -0
- package/build/src/browser/commands/getPuppeteer.js.map +1 -0
- package/build/src/browser/commands/index.d.ts +2 -0
- package/build/src/browser/commands/index.js +13 -0
- package/build/src/browser/commands/index.js.map +1 -0
- package/build/src/browser/commands/moveCursorTo.d.ts +8 -0
- package/build/src/browser/commands/moveCursorTo.js +23 -0
- package/build/src/browser/commands/moveCursorTo.js.map +1 -0
- package/build/src/browser/commands/openAndWait.d.ts +17 -0
- package/build/src/browser/commands/openAndWait.js +87 -0
- package/build/src/browser/commands/openAndWait.js.map +1 -0
- package/build/src/browser/commands/runStep.d.ts +2 -0
- package/build/src/browser/commands/runStep.js +15 -0
- package/build/src/browser/commands/runStep.js.map +1 -0
- package/build/src/browser/commands/scrollIntoView.d.ts +3 -0
- package/build/src/browser/commands/scrollIntoView.js +12 -0
- package/build/src/browser/commands/scrollIntoView.js.map +1 -0
- package/build/src/browser/commands/setOrientation.d.ts +2 -0
- package/build/src/browser/commands/setOrientation.js +32 -0
- package/build/src/browser/commands/setOrientation.js.map +1 -0
- package/build/src/browser/commands/switchToRepl.d.ts +3 -0
- package/build/src/browser/commands/switchToRepl.js +65 -0
- package/build/src/browser/commands/switchToRepl.js.map +1 -0
- package/build/src/browser/commands/types.d.ts +83 -0
- package/build/src/browser/commands/types.js +3 -0
- package/build/src/browser/commands/types.js.map +1 -0
- package/build/src/browser/core-error.d.ts +4 -0
- package/build/src/browser/core-error.js +11 -0
- package/build/src/browser/core-error.js.map +1 -0
- package/build/src/browser/existing-browser.d.ts +55 -0
- package/build/src/browser/existing-browser.js +286 -0
- package/build/src/browser/existing-browser.js.map +1 -0
- package/build/src/browser/history/callstack.d.ts +9 -0
- package/build/src/browser/history/callstack.js +49 -0
- package/build/src/browser/history/callstack.js.map +1 -0
- package/build/src/browser/history/commands.d.ts +10 -0
- package/build/src/browser/history/commands.js +105 -0
- package/build/src/browser/history/commands.js.map +1 -0
- package/build/src/browser/history/index.d.ts +4 -0
- package/build/src/browser/history/index.js +101 -0
- package/build/src/browser/history/index.js.map +1 -0
- package/build/src/browser/history/utils.d.ts +21 -0
- package/build/src/browser/history/utils.js +61 -0
- package/build/src/browser/history/utils.js.map +1 -0
- package/build/src/browser/new-browser.d.ts +32 -0
- package/build/src/browser/new-browser.js +150 -0
- package/build/src/browser/new-browser.js.map +1 -0
- package/build/src/browser/screen-shooter/index.d.ts +9 -0
- package/build/src/browser/screen-shooter/index.js +36 -0
- package/build/src/browser/screen-shooter/index.js.map +1 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/height-viewport-error.d.ts +6 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/height-viewport-error.js +14 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/height-viewport-error.js.map +1 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/offset-viewport-error.d.ts +6 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/offset-viewport-error.js +14 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/errors/offset-viewport-error.js.map +1 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/index.d.ts +43 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/index.js +76 -0
- package/build/src/browser/screen-shooter/viewport/coord-validator/index.js.map +1 -0
- package/build/src/browser/screen-shooter/viewport/index.d.ts +56 -0
- package/build/src/browser/screen-shooter/viewport/index.js +104 -0
- package/build/src/browser/screen-shooter/viewport/index.js.map +1 -0
- package/build/src/browser/types.d.ts +144 -0
- package/build/src/browser/types.js +3 -0
- package/build/src/browser/types.js.map +1 -0
- package/build/src/browser-pool/basic-pool.d.ts +14 -0
- package/build/src/browser-pool/basic-pool.js +62 -0
- package/build/src/browser-pool/basic-pool.js.map +1 -0
- package/build/src/browser-pool/caching-pool.d.ts +29 -0
- package/build/src/browser-pool/caching-pool.js +90 -0
- package/build/src/browser-pool/caching-pool.js.map +1 -0
- package/build/src/browser-pool/cancelled-error.d.ts +5 -0
- package/build/src/browser-pool/cancelled-error.js +13 -0
- package/build/src/browser-pool/cancelled-error.js.map +1 -0
- package/build/src/browser-pool/index.d.ts +6 -0
- package/build/src/browser-pool/index.js +25 -0
- package/build/src/browser-pool/index.js.map +1 -0
- package/build/src/browser-pool/limited-pool.d.ts +30 -0
- package/build/src/browser-pool/limited-pool.js +99 -0
- package/build/src/browser-pool/limited-pool.js.map +1 -0
- package/build/src/browser-pool/limited-use-set.d.ts +13 -0
- package/build/src/browser-pool/limited-use-set.js +54 -0
- package/build/src/browser-pool/limited-use-set.js.map +1 -0
- package/build/src/browser-pool/per-browser-limited-pool.d.ts +10 -0
- package/build/src/browser-pool/per-browser-limited-pool.js +28 -0
- package/build/src/browser-pool/per-browser-limited-pool.js.map +1 -0
- package/build/src/browser-pool/pool.d.ts +13 -0
- package/build/src/browser-pool/pool.js +18 -0
- package/build/src/browser-pool/pool.js.map +1 -0
- package/build/src/browser-pool/utils.d.ts +1 -0
- package/build/src/browser-pool/utils.js +3 -0
- package/build/src/browser-pool/utils.js.map +1 -0
- package/build/src/cli/index.d.ts +1 -0
- package/build/src/cli/index.js +109 -0
- package/build/src/cli/index.js.map +1 -0
- package/build/src/cli/info.d.ts +1 -0
- package/build/src/cli/info.js +23 -0
- package/build/src/cli/info.js.map +1 -0
- package/build/src/config/browser-config.d.ts +7 -0
- package/build/src/config/browser-config.js +45 -0
- package/build/src/config/browser-config.js.map +1 -0
- package/build/src/config/browser-options.d.ts +2 -0
- package/build/src/config/browser-options.js +298 -0
- package/build/src/config/browser-options.js.map +1 -0
- package/build/src/config/defaults.d.ts +92 -0
- package/build/src/config/defaults.js +96 -0
- package/build/src/config/defaults.js.map +1 -0
- package/build/src/config/index.d.ts +16 -0
- package/build/src/config/index.js +123 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/config/options-builder.d.ts +21 -0
- package/build/src/config/options-builder.js +142 -0
- package/build/src/config/options-builder.js.map +1 -0
- package/build/src/config/options.d.ts +3 -0
- package/build/src/config/options.js +75 -0
- package/build/src/config/options.js.map +1 -0
- package/build/src/config/runtime-config.d.ts +1 -0
- package/build/src/config/runtime-config.js +21 -0
- package/build/src/config/runtime-config.js.map +1 -0
- package/build/src/config/types.d.ts +154 -0
- package/build/src/config/types.js +3 -0
- package/build/src/config/types.js.map +1 -0
- package/build/src/config/utils.d.ts +11 -0
- package/build/src/config/utils.js +73 -0
- package/build/src/config/utils.js.map +1 -0
- package/build/src/constants/browser.d.ts +2 -0
- package/build/src/constants/browser.js +6 -0
- package/build/src/constants/browser.js.map +1 -0
- package/build/src/constants/config.d.ts +7 -0
- package/build/src/constants/config.js +11 -0
- package/build/src/constants/config.js.map +1 -0
- package/build/src/constants/process-messages.d.ts +5 -0
- package/build/src/constants/process-messages.js +9 -0
- package/build/src/constants/process-messages.js.map +1 -0
- package/build/src/constants/test-statuses.d.ts +4 -0
- package/build/src/constants/test-statuses.js +8 -0
- package/build/src/constants/test-statuses.js.map +1 -0
- package/build/src/errors.d.ts +19 -0
- package/build/src/errors.js +22 -0
- package/build/src/errors.js.map +1 -0
- package/build/src/events/async-emitter/index.d.ts +5 -0
- package/build/src/events/async-emitter/index.js +19 -0
- package/build/src/events/async-emitter/index.js.map +1 -0
- package/build/src/events/index.d.ts +134 -0
- package/build/src/events/index.js +73 -0
- package/build/src/events/index.js.map +1 -0
- package/build/src/events/types.d.ts +11 -0
- package/build/src/events/types.js +3 -0
- package/build/src/events/types.js.map +1 -0
- package/build/src/events/utils.d.ts +2 -0
- package/build/src/events/utils.js +14 -0
- package/build/src/events/utils.js.map +1 -0
- package/build/src/image.d.ts +55 -0
- package/build/src/image.js +144 -0
- package/build/src/image.js.map +1 -0
- package/build/src/index.d.ts +18 -0
- package/build/src/index.js +15 -0
- package/build/src/index.js.map +1 -0
- package/build/src/reporters/base.d.ts +17 -0
- package/build/src/reporters/base.js +65 -0
- package/build/src/reporters/base.js.map +1 -0
- package/build/src/reporters/flat.d.ts +6 -0
- package/build/src/reporters/flat.js +33 -0
- package/build/src/reporters/flat.js.map +1 -0
- package/build/src/reporters/index.d.ts +1 -0
- package/build/src/reporters/index.js +86 -0
- package/build/src/reporters/index.js.map +1 -0
- package/build/src/reporters/informers/base.d.ts +8 -0
- package/build/src/reporters/informers/base.js +19 -0
- package/build/src/reporters/informers/base.js.map +1 -0
- package/build/src/reporters/informers/console.d.ts +8 -0
- package/build/src/reporters/informers/console.js +20 -0
- package/build/src/reporters/informers/console.js.map +1 -0
- package/build/src/reporters/informers/file.d.ts +14 -0
- package/build/src/reporters/informers/file.js +34 -0
- package/build/src/reporters/informers/file.js.map +1 -0
- package/build/src/reporters/informers/index.d.ts +1 -0
- package/build/src/reporters/informers/index.js +11 -0
- package/build/src/reporters/informers/index.js.map +1 -0
- package/build/src/reporters/jsonl.d.ts +8 -0
- package/build/src/reporters/jsonl.js +32 -0
- package/build/src/reporters/jsonl.js.map +1 -0
- package/build/src/reporters/plain.d.ts +4 -0
- package/build/src/reporters/plain.js +16 -0
- package/build/src/reporters/plain.js.map +1 -0
- package/build/src/reporters/utils/helpers.d.ts +12 -0
- package/build/src/reporters/utils/helpers.js +56 -0
- package/build/src/reporters/utils/helpers.js.map +1 -0
- package/build/src/reporters/utils/icons.d.ts +4 -0
- package/build/src/reporters/utils/icons.js +9 -0
- package/build/src/reporters/utils/icons.js.map +1 -0
- package/build/src/runner/browser-agent.d.ts +15 -0
- package/build/src/runner/browser-agent.js +26 -0
- package/build/src/runner/browser-agent.js.map +1 -0
- package/build/src/runner/browser-runner.d.ts +26 -0
- package/build/src/runner/browser-runner.js +97 -0
- package/build/src/runner/browser-runner.js.map +1 -0
- package/build/src/runner/index.d.ts +47 -0
- package/build/src/runner/index.js +144 -0
- package/build/src/runner/index.js.map +1 -0
- package/build/src/runner/promise-group.d.ts +11 -0
- package/build/src/runner/promise-group.js +32 -0
- package/build/src/runner/promise-group.js.map +1 -0
- package/build/src/runner/runner.d.ts +7 -0
- package/build/src/runner/runner.js +11 -0
- package/build/src/runner/runner.js.map +1 -0
- package/build/src/runner/suite-monitor.d.ts +13 -0
- package/build/src/runner/suite-monitor.js +57 -0
- package/build/src/runner/suite-monitor.js.map +1 -0
- package/build/src/runner/test-runner/high-priority-browser-agent.d.ts +8 -0
- package/build/src/runner/test-runner/high-priority-browser-agent.js +16 -0
- package/build/src/runner/test-runner/high-priority-browser-agent.js.map +1 -0
- package/build/src/runner/test-runner/index.d.ts +7 -0
- package/build/src/runner/test-runner/index.js +15 -0
- package/build/src/runner/test-runner/index.js.map +1 -0
- package/build/src/runner/test-runner/insistant-test-runner.d.ts +14 -0
- package/build/src/runner/test-runner/insistant-test-runner.js +62 -0
- package/build/src/runner/test-runner/insistant-test-runner.js.map +1 -0
- package/build/src/runner/test-runner/regular-test-runner.d.ts +18 -0
- package/build/src/runner/test-runner/regular-test-runner.js +94 -0
- package/build/src/runner/test-runner/regular-test-runner.js.map +1 -0
- package/build/src/runner/test-runner/skipped-test-runner.d.ts +11 -0
- package/build/src/runner/test-runner/skipped-test-runner.js +21 -0
- package/build/src/runner/test-runner/skipped-test-runner.js.map +1 -0
- package/build/src/signal-handler.d.ts +3 -0
- package/build/src/signal-handler.js +23 -0
- package/build/src/signal-handler.js.map +1 -0
- package/build/src/stats.d.ts +15 -0
- package/build/src/stats.js +44 -0
- package/build/src/stats.js.map +1 -0
- package/build/src/temp.d.ts +4 -0
- package/build/src/temp.js +39 -0
- package/build/src/temp.js.map +1 -0
- package/build/src/test-collection.d.ts +23 -0
- package/build/src/test-collection.js +151 -0
- package/build/src/test-collection.js.map +1 -0
- package/build/src/test-reader/build-instructions.d.ts +28 -0
- package/build/src/test-reader/build-instructions.js +87 -0
- package/build/src/test-reader/build-instructions.js.map +1 -0
- package/build/src/test-reader/controllers/browser-version-controller.d.ts +9 -0
- package/build/src/test-reader/controllers/browser-version-controller.js +49 -0
- package/build/src/test-reader/controllers/browser-version-controller.js.map +1 -0
- package/build/src/test-reader/controllers/config-controller.d.ts +8 -0
- package/build/src/test-reader/controllers/config-controller.js +42 -0
- package/build/src/test-reader/controllers/config-controller.js.map +1 -0
- package/build/src/test-reader/controllers/only-controller.d.ts +9 -0
- package/build/src/test-reader/controllers/only-controller.js +49 -0
- package/build/src/test-reader/controllers/only-controller.js.map +1 -0
- package/build/src/test-reader/controllers/skip-controller.d.ts +14 -0
- package/build/src/test-reader/controllers/skip-controller.js +55 -0
- package/build/src/test-reader/controllers/skip-controller.js.map +1 -0
- package/build/src/test-reader/index.d.ts +10 -0
- package/build/src/test-reader/index.js +86 -0
- package/build/src/test-reader/index.js.map +1 -0
- package/build/src/test-reader/mocha-reader/index.d.ts +5 -0
- package/build/src/test-reader/mocha-reader/index.js +78 -0
- package/build/src/test-reader/mocha-reader/index.js.map +1 -0
- package/build/src/test-reader/mocha-reader/mocha-event-bus.d.ts +8 -0
- package/build/src/test-reader/mocha-reader/mocha-event-bus.js +43 -0
- package/build/src/test-reader/mocha-reader/mocha-event-bus.js.map +1 -0
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.d.ts +13 -0
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js +98 -0
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js.map +1 -0
- package/build/src/test-reader/sets-builder/index.d.ts +12 -0
- package/build/src/test-reader/sets-builder/index.js +108 -0
- package/build/src/test-reader/sets-builder/index.js.map +1 -0
- package/build/src/test-reader/sets-builder/set-collection.d.ts +10 -0
- package/build/src/test-reader/sets-builder/set-collection.js +53 -0
- package/build/src/test-reader/sets-builder/set-collection.js.map +1 -0
- package/build/src/test-reader/sets-builder/test-set.d.ts +16 -0
- package/build/src/test-reader/sets-builder/test-set.js +74 -0
- package/build/src/test-reader/sets-builder/test-set.js.map +1 -0
- package/build/src/test-reader/test-object/configurable-test-object.d.ts +30 -0
- package/build/src/test-reader/test-object/configurable-test-object.js +93 -0
- package/build/src/test-reader/test-object/configurable-test-object.js.map +1 -0
- package/build/src/test-reader/test-object/hook.d.ts +12 -0
- package/build/src/test-reader/test-object/hook.js +27 -0
- package/build/src/test-reader/test-object/hook.js.map +1 -0
- package/build/src/test-reader/test-object/index.d.ts +4 -0
- package/build/src/test-reader/test-object/index.js +10 -0
- package/build/src/test-reader/test-object/index.js.map +1 -0
- package/build/src/test-reader/test-object/suite.d.ts +23 -0
- package/build/src/test-reader/test-object/suite.js +86 -0
- package/build/src/test-reader/test-object/suite.js.map +1 -0
- package/build/src/test-reader/test-object/test-object.d.ts +12 -0
- package/build/src/test-reader/test-object/test-object.js +44 -0
- package/build/src/test-reader/test-object/test-object.js.map +1 -0
- package/build/src/test-reader/test-object/test.d.ts +11 -0
- package/build/src/test-reader/test-object/test.js +20 -0
- package/build/src/test-reader/test-object/test.js.map +1 -0
- package/build/src/test-reader/test-parser-api.d.ts +12 -0
- package/build/src/test-reader/test-parser-api.js +41 -0
- package/build/src/test-reader/test-parser-api.js.map +1 -0
- package/build/src/test-reader/test-parser.d.ts +11 -0
- package/build/src/test-reader/test-parser.js +114 -0
- package/build/src/test-reader/test-parser.js.map +1 -0
- package/build/src/test-reader/tree-builder.d.ts +11 -0
- package/build/src/test-reader/tree-builder.js +74 -0
- package/build/src/test-reader/tree-builder.js.map +1 -0
- package/build/src/testplane.d.ts +48 -0
- package/build/src/testplane.js +98 -0
- package/build/src/testplane.js.map +1 -0
- package/build/src/types/index.d.ts +191 -0
- package/build/src/types/index.js +8 -0
- package/build/src/types/index.js.map +1 -0
- package/build/src/utils/browser.d.ts +1 -0
- package/build/src/utils/browser.js +10 -0
- package/build/src/utils/browser.js.map +1 -0
- package/build/src/utils/crypto.d.ts +1 -0
- package/build/src/utils/crypto.js +4 -0
- package/build/src/utils/crypto.js.map +1 -0
- package/build/src/utils/env.d.ts +4 -0
- package/build/src/utils/env.js +10 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.d.ts +1 -0
- package/build/src/utils/errors.js +17 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/fs.d.ts +1 -0
- package/build/src/utils/fs.js +18 -0
- package/build/src/utils/fs.js.map +1 -0
- package/build/src/utils/ipc.d.ts +2 -0
- package/build/src/utils/ipc.js +14 -0
- package/build/src/utils/ipc.js.map +1 -0
- package/build/src/utils/logger.d.ts +3 -0
- package/build/src/utils/logger.js +12 -0
- package/build/src/utils/logger.js.map +1 -0
- package/build/src/utils/module.d.ts +1 -0
- package/build/src/utils/module.js +14 -0
- package/build/src/utils/module.js.map +1 -0
- package/build/src/utils/page-loader.d.ts +29 -0
- package/build/src/utils/page-loader.js +120 -0
- package/build/src/utils/page-loader.js.map +1 -0
- package/build/src/utils/processor.d.ts +2 -0
- package/build/src/utils/processor.js +47 -0
- package/build/src/utils/processor.js.map +1 -0
- package/build/src/utils/typescript.d.ts +1 -0
- package/build/src/utils/typescript.js +44 -0
- package/build/src/utils/typescript.js.map +1 -0
- package/build/src/utils/worker-process.d.ts +10 -0
- package/build/src/utils/worker-process.js +20 -0
- package/build/src/utils/worker-process.js.map +1 -0
- package/build/src/utils/workers-registry.d.ts +24 -0
- package/build/src/utils/workers-registry.js +114 -0
- package/build/src/utils/workers-registry.js.map +1 -0
- package/build/src/validators.d.ts +1 -0
- package/build/src/validators.js +16 -0
- package/build/src/validators.js.map +1 -0
- package/build/src/worker/index.d.ts +1 -0
- package/build/src/worker/index.js +8 -0
- package/build/src/worker/index.js.map +1 -0
- package/build/src/worker/runner/browser-agent.d.ts +19 -0
- package/build/src/worker/runner/browser-agent.js +25 -0
- package/build/src/worker/runner/browser-agent.js.map +1 -0
- package/build/src/worker/runner/browser-pool.d.ts +19 -0
- package/build/src/worker/runner/browser-pool.js +41 -0
- package/build/src/worker/runner/browser-pool.js.map +1 -0
- package/build/src/worker/runner/caching-test-parser.d.ts +22 -0
- package/build/src/worker/runner/caching-test-parser.js +37 -0
- package/build/src/worker/runner/caching-test-parser.js.map +1 -0
- package/build/src/worker/runner/index.d.ts +24 -0
- package/build/src/worker/runner/index.js +32 -0
- package/build/src/worker/runner/index.js.map +1 -0
- package/build/src/worker/runner/sequence-test-parser.d.ts +14 -0
- package/build/src/worker/runner/sequence-test-parser.js +21 -0
- package/build/src/worker/runner/sequence-test-parser.js.map +1 -0
- package/build/src/worker/runner/simple-test-parser.d.ts +11 -0
- package/build/src/worker/runner/simple-test-parser.js +21 -0
- package/build/src/worker/runner/simple-test-parser.js.map +1 -0
- package/build/src/worker/runner/test-runner/execution-thread.d.ts +21 -0
- package/build/src/worker/runner/test-runner/execution-thread.js +65 -0
- package/build/src/worker/runner/test-runner/execution-thread.js.map +1 -0
- package/build/src/worker/runner/test-runner/hook-runner.d.ts +15 -0
- package/build/src/worker/runner/test-runner/hook-runner.js +65 -0
- package/build/src/worker/runner/test-runner/hook-runner.js.map +1 -0
- package/build/src/worker/runner/test-runner/index.d.ts +21 -0
- package/build/src/worker/runner/test-runner/index.js +124 -0
- package/build/src/worker/runner/test-runner/index.js.map +1 -0
- package/build/src/worker/runner/test-runner/one-time-screenshooter.d.ts +38 -0
- package/build/src/worker/runner/test-runner/one-time-screenshooter.js +88 -0
- package/build/src/worker/runner/test-runner/one-time-screenshooter.js.map +1 -0
- package/build/src/worker/testplane-facade.d.ts +12 -0
- package/build/src/worker/testplane-facade.js +71 -0
- package/build/src/worker/testplane-facade.js.map +1 -0
- package/build/src/worker/testplane.d.ts +38 -0
- package/build/src/worker/testplane.js +39 -0
- package/build/src/worker/testplane.js.map +1 -0
- package/package.json +125 -7
- package/typings/api.d.ts +4 -0
- package/typings/global.d.ts +35 -0
- package/readme.md +0 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var SCROLL_DIR_NAME = {
|
|
4
|
+
top: "scrollTop",
|
|
5
|
+
left: "scrollLeft"
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
var PAGE_OFFSET_NAME = {
|
|
9
|
+
x: "pageXOffset",
|
|
10
|
+
y: "pageYOffset"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.each = arrayUtil(Array.prototype.forEach, myForEach);
|
|
14
|
+
exports.some = arrayUtil(Array.prototype.some, mySome);
|
|
15
|
+
exports.every = arrayUtil(Array.prototype.every, myEvery);
|
|
16
|
+
|
|
17
|
+
function arrayUtil(nativeFunc, shimFunc) {
|
|
18
|
+
return nativeFunc ? contextify(nativeFunc) : shimFunc;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Makes function f to accept context as a
|
|
23
|
+
* first argument
|
|
24
|
+
*/
|
|
25
|
+
function contextify(f) {
|
|
26
|
+
return function (ctx) {
|
|
27
|
+
var rest = Array.prototype.slice.call(arguments, 1);
|
|
28
|
+
return f.apply(ctx, rest);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function myForEach(array, cb, context) {
|
|
33
|
+
for (var i = 0; i < array.length; i++) {
|
|
34
|
+
cb.call(context, array[i], i, array);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function mySome(array, cb, context) {
|
|
39
|
+
for (var i = 0; i < array.length; i++) {
|
|
40
|
+
if (cb.call(context, array[i], i, array)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function myEvery(array, cb, context) {
|
|
48
|
+
for (var i = 0; i < array.length; i++) {
|
|
49
|
+
if (!cb.call(context, array[i], i, array)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getScroll(scrollElem, direction, coord) {
|
|
57
|
+
var scrollDir = SCROLL_DIR_NAME[direction];
|
|
58
|
+
var pageOffset = PAGE_OFFSET_NAME[coord];
|
|
59
|
+
|
|
60
|
+
if (scrollElem && scrollElem !== window) {
|
|
61
|
+
return scrollElem[scrollDir];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (typeof window[pageOffset] !== "undefined") {
|
|
65
|
+
return window[pageOffset];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return document.documentElement[scrollDir];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
exports.getScrollTop = function (scrollElem) {
|
|
72
|
+
return getScroll(scrollElem, "top", "y");
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.getScrollLeft = function (scrollElem) {
|
|
76
|
+
return getScroll(scrollElem, "left", "x");
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exports.isSafariMobile = function () {
|
|
80
|
+
return (
|
|
81
|
+
navigator &&
|
|
82
|
+
typeof navigator.vendor === "string" &&
|
|
83
|
+
navigator.vendor.match(/apple/i) &&
|
|
84
|
+
/(iPhone|iPad).*AppleWebKit.*Safari/i.test(navigator.userAgent)
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
exports.isInteger = function (num) {
|
|
89
|
+
return num % 1 === 0;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
exports.forEachRoot = function (cb) {
|
|
93
|
+
function traverseRoots(root) {
|
|
94
|
+
cb(root);
|
|
95
|
+
|
|
96
|
+
// In IE 11, we need to pass the third and fourth arguments
|
|
97
|
+
var treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, null, false);
|
|
98
|
+
|
|
99
|
+
for (var node = treeWalker.currentNode; node !== null; node = treeWalker.nextNode()) {
|
|
100
|
+
if (node instanceof Element && node.shadowRoot) {
|
|
101
|
+
traverseRoots(node.shadowRoot);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
traverseRoots(document.documentElement);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exports.getOwnerWindow = function (node) {
|
|
110
|
+
if (!node.ownerDocument) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return node.ownerDocument.defaultView;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
exports.getOwnerIframe = function (node) {
|
|
118
|
+
var nodeWindow = exports.getOwnerWindow(node);
|
|
119
|
+
if (nodeWindow) {
|
|
120
|
+
return nodeWindow.frameElement;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return null;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
exports.getMainDocumentElem = function (currDocumentElem) {
|
|
127
|
+
if (!currDocumentElem) {
|
|
128
|
+
currDocumentElem = document.documentElement;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var currIframe = exports.getOwnerIframe(currDocumentElem);
|
|
132
|
+
if (!currIframe) {
|
|
133
|
+
return currDocumentElem;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
var currWindow = exports.getOwnerWindow(currIframe);
|
|
137
|
+
if (!currWindow) {
|
|
138
|
+
return currDocumentElem;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return exports.getMainDocumentElem(currWindow.document.documentElement);
|
|
142
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var XPATH_SELECTORS_START = ["/", "(", "../", "./", "*/"];
|
|
4
|
+
|
|
5
|
+
function isXpathSelector(selector) {
|
|
6
|
+
return XPATH_SELECTORS_START.some(function (startString) {
|
|
7
|
+
return selector.indexOf(startString) === 0;
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function queryFirst(selector) {
|
|
12
|
+
return document.evaluate(selector, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function queryAll(selector) {
|
|
16
|
+
var elements = document.evaluate(selector, document, null, XPathResult.ANY_TYPE, null);
|
|
17
|
+
var node,
|
|
18
|
+
nodes = [];
|
|
19
|
+
node = elements.iterateNext();
|
|
20
|
+
while (node) {
|
|
21
|
+
nodes.push(node);
|
|
22
|
+
node = elements.iterateNext();
|
|
23
|
+
}
|
|
24
|
+
return nodes;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
module.exports = {
|
|
28
|
+
isXpathSelector: isXpathSelector,
|
|
29
|
+
queryFirst: queryFirst,
|
|
30
|
+
queryAll: queryAll
|
|
31
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export = AssertViewResults;
|
|
2
|
+
declare class AssertViewResults {
|
|
3
|
+
static fromRawObject(results: any): import("./assert-view-results");
|
|
4
|
+
static create(results: any): import("./assert-view-results");
|
|
5
|
+
constructor(results: any);
|
|
6
|
+
_results: any;
|
|
7
|
+
add(data: any): void;
|
|
8
|
+
hasFails(): any;
|
|
9
|
+
hasState(stateName: any): any;
|
|
10
|
+
toRawObject(): any;
|
|
11
|
+
get(): any;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { ImageDiffError } = require("./errors/image-diff-error");
|
|
3
|
+
const { NoRefImageError } = require("./errors/no-ref-image-error");
|
|
4
|
+
module.exports = class AssertViewResults {
|
|
5
|
+
static fromRawObject(results) {
|
|
6
|
+
return AssertViewResults.create(results.map(res => {
|
|
7
|
+
return ((res.name === ImageDiffError.name && ImageDiffError.fromObject(res)) ||
|
|
8
|
+
(res.name === NoRefImageError.name && NoRefImageError.fromObject(res)) ||
|
|
9
|
+
res);
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
static create(results) {
|
|
13
|
+
return new AssertViewResults(results);
|
|
14
|
+
}
|
|
15
|
+
constructor(results) {
|
|
16
|
+
this._results = results || [];
|
|
17
|
+
}
|
|
18
|
+
add(data) {
|
|
19
|
+
this._results.push(data);
|
|
20
|
+
}
|
|
21
|
+
hasFails() {
|
|
22
|
+
return this._results.some(res => res instanceof Error);
|
|
23
|
+
}
|
|
24
|
+
hasState(stateName) {
|
|
25
|
+
return this._results.some(res => res.stateName === stateName);
|
|
26
|
+
}
|
|
27
|
+
toRawObject() {
|
|
28
|
+
return this._results.map(res => ({ ...res }));
|
|
29
|
+
}
|
|
30
|
+
get() {
|
|
31
|
+
return this._results;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=assert-view-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-view-results.js","sourceRoot":"","sources":["../../../../../src/browser/commands/assert-view/assert-view-results.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAChE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEnE,MAAM,CAAC,OAAO,GAAG,MAAM,iBAAiB;IACpC,MAAM,CAAC,aAAa,CAAC,OAAO;QACxB,OAAO,iBAAiB,CAAC,MAAM,CAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACd,OAAO,CACH,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpE,CAAC,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtE,GAAG,CACN,CAAC;QACN,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAO;QACjB,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,OAAO;QACf,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,IAAI;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ,CAAC,SAAS;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const Promise = require("bluebird");
|
|
3
|
+
const { ImageDiffError } = require("../errors/image-diff-error");
|
|
4
|
+
const { NoRefImageError } = require("../errors/no-ref-image-error");
|
|
5
|
+
exports.handleNoRefImage = (currImg, refImg, stateName) => {
|
|
6
|
+
return Promise.reject(NoRefImageError.create(stateName, currImg, refImg));
|
|
7
|
+
};
|
|
8
|
+
exports.handleImageDiff = (currImg, refImg, stateName, opts) => {
|
|
9
|
+
const { tolerance, antialiasingTolerance, canHaveCaret, diffAreas, config, diffBuffer, differentPixels, diffRatio, } = opts;
|
|
10
|
+
const { buildDiffOpts, system: { diffColor }, } = config;
|
|
11
|
+
buildDiffOpts.ignoreCaret = buildDiffOpts.ignoreCaret && canHaveCaret;
|
|
12
|
+
const diffOpts = {
|
|
13
|
+
current: currImg.path,
|
|
14
|
+
reference: refImg.path,
|
|
15
|
+
diffColor,
|
|
16
|
+
tolerance,
|
|
17
|
+
antialiasingTolerance,
|
|
18
|
+
...buildDiffOpts,
|
|
19
|
+
};
|
|
20
|
+
return Promise.reject(ImageDiffError.create({
|
|
21
|
+
stateName,
|
|
22
|
+
currImg,
|
|
23
|
+
refImg,
|
|
24
|
+
diffOpts,
|
|
25
|
+
diffAreas,
|
|
26
|
+
diffBuffer,
|
|
27
|
+
differentPixels,
|
|
28
|
+
diffRatio,
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=assert-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-refs.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/capture-processors/assert-refs.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACjE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAEpE,OAAO,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IACtD,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,OAAO,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;IAC3D,MAAM,EACF,SAAS,EACT,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,UAAU,EACV,eAAe,EACf,SAAS,GACZ,GAAG,IAAI,CAAC;IACT,MAAM,EACF,aAAa,EACb,MAAM,EAAE,EAAE,SAAS,EAAE,GACxB,GAAG,MAAM,CAAC;IACX,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,YAAY,CAAC;IAEtE,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,SAAS,EAAE,MAAM,CAAC,IAAI;QACtB,SAAS;QACT,SAAS;QACT,qBAAqB;QACrB,GAAG,aAAa;KACnB,CAAC;IAEF,OAAO,OAAO,CAAC,MAAM,CACjB,cAAc,CAAC,MAAM,CAAC;QAClB,SAAS;QACT,OAAO;QACP,MAAM;QACN,QAAQ;QACR,SAAS;QACT,UAAU;QACV,eAAe;QACf,SAAS;KACZ,CAAC,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const RuntimeConfig = require("../../../../config/runtime-config");
|
|
3
|
+
const assertRefs = require("./assert-refs");
|
|
4
|
+
const updateRefs = require("./update-refs");
|
|
5
|
+
exports.getCaptureProcessors = () => (RuntimeConfig.getInstance().updateRefs ? updateRefs : assertRefs);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/capture-processors/index.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAEnE,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE5C,OAAO,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const fs = require("fs-extra");
|
|
3
|
+
const { WorkerEvents } = require("../../../../events");
|
|
4
|
+
exports.handleNoRefImage = exports.handleImageDiff = async (currImg, refImg, state, { emitter }) => {
|
|
5
|
+
await fs.copy(currImg.path, refImg.path);
|
|
6
|
+
emitter.emit(WorkerEvents.UPDATE_REFERENCE, { state, refImg });
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=update-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-refs.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/capture-processors/update-refs.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEvD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/F,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssertViewError = void 0;
|
|
4
|
+
class AssertViewError extends Error {
|
|
5
|
+
constructor(message = "image comparison failed") {
|
|
6
|
+
super();
|
|
7
|
+
this.message = message;
|
|
8
|
+
this.name = this.constructor.name;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.AssertViewError = AssertViewError;
|
|
12
|
+
//# sourceMappingURL=assert-view-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-view-error.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/errors/assert-view-error.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IACtC,YAAmB,UAAkB,yBAAyB;QAC1D,KAAK,EAAE,CAAC;QADO,YAAO,GAAP,OAAO,CAAoC;QAG1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtC,CAAC;CACJ;AAND,0CAMC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseStateError = void 0;
|
|
4
|
+
class BaseStateError extends Error {
|
|
5
|
+
constructor(stateName, currImg, refImg) {
|
|
6
|
+
super();
|
|
7
|
+
this.stateName = stateName;
|
|
8
|
+
this.currImg = currImg;
|
|
9
|
+
this.refImg = refImg;
|
|
10
|
+
this.name = this.constructor.name;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.BaseStateError = BaseStateError;
|
|
14
|
+
//# sourceMappingURL=base-state-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-state-error.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/errors/base-state-error.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAe,SAAQ,KAAK;IACrC,YAAmB,SAAiB,EAAS,OAAkB,EAAS,MAAiB;QACrF,KAAK,EAAE,CAAC;QADO,cAAS,GAAT,SAAS,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAW;QAAS,WAAM,GAAN,MAAM,CAAW;QAGrF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtC,CAAC;CACJ;AAND,wCAMC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ImageInfo } from "../../../../types";
|
|
3
|
+
import { BaseStateError } from "./base-state-error";
|
|
4
|
+
import type { LooksSameOptions, LooksSameResult } from "looks-same";
|
|
5
|
+
interface DiffOptions extends LooksSameOptions {
|
|
6
|
+
/** Path to the current screenshot */
|
|
7
|
+
current: string;
|
|
8
|
+
reference: string;
|
|
9
|
+
diffColor: string;
|
|
10
|
+
}
|
|
11
|
+
type DiffAreas = Pick<LooksSameResult, "diffClusters" | "diffBounds">;
|
|
12
|
+
type ImageDiffErrorConstructor<T> = new (params: {
|
|
13
|
+
stateName: string;
|
|
14
|
+
currImg: ImageInfo;
|
|
15
|
+
refImg: ImageInfo;
|
|
16
|
+
diffOpts: DiffOptions;
|
|
17
|
+
diffAreas: DiffAreas;
|
|
18
|
+
diffBuffer: Buffer;
|
|
19
|
+
differentPixels: number;
|
|
20
|
+
diffRatio: number;
|
|
21
|
+
}) => T;
|
|
22
|
+
interface ImageDiffErrorData {
|
|
23
|
+
stateName: string;
|
|
24
|
+
currImg: ImageInfo;
|
|
25
|
+
refImg: ImageInfo;
|
|
26
|
+
diffOpts: DiffOptions;
|
|
27
|
+
diffBounds: LooksSameResult["diffBounds"];
|
|
28
|
+
diffClusters: LooksSameResult["diffClusters"];
|
|
29
|
+
diffBuffer: Buffer;
|
|
30
|
+
differentPixels: number;
|
|
31
|
+
diffRatio: number;
|
|
32
|
+
}
|
|
33
|
+
export declare class ImageDiffError extends BaseStateError {
|
|
34
|
+
message: string;
|
|
35
|
+
diffOpts: DiffOptions;
|
|
36
|
+
diffBounds?: DiffAreas["diffBounds"];
|
|
37
|
+
diffClusters?: DiffAreas["diffClusters"];
|
|
38
|
+
diffBuffer: Buffer;
|
|
39
|
+
differentPixels: number;
|
|
40
|
+
diffRatio: number;
|
|
41
|
+
static create<T extends ImageDiffError>(this: ImageDiffErrorConstructor<T>, { stateName, currImg, refImg, diffOpts, diffAreas, diffBuffer, differentPixels, diffRatio, }: {
|
|
42
|
+
stateName: string;
|
|
43
|
+
currImg: ImageInfo;
|
|
44
|
+
refImg: ImageInfo;
|
|
45
|
+
diffOpts: DiffOptions;
|
|
46
|
+
diffAreas?: DiffAreas;
|
|
47
|
+
diffBuffer: Buffer;
|
|
48
|
+
differentPixels: number;
|
|
49
|
+
diffRatio: number;
|
|
50
|
+
}): T;
|
|
51
|
+
static fromObject<T>(this: ImageDiffErrorConstructor<T>, data: ImageDiffErrorData): T;
|
|
52
|
+
constructor({ stateName, currImg, refImg, diffOpts, diffAreas: { diffBounds, diffClusters }, diffBuffer, differentPixels, diffRatio, }: {
|
|
53
|
+
stateName: string;
|
|
54
|
+
currImg: ImageInfo;
|
|
55
|
+
refImg: ImageInfo;
|
|
56
|
+
diffOpts: DiffOptions;
|
|
57
|
+
diffAreas?: DiffAreas;
|
|
58
|
+
diffBuffer: Buffer;
|
|
59
|
+
differentPixels: number;
|
|
60
|
+
diffRatio: number;
|
|
61
|
+
});
|
|
62
|
+
saveDiffTo(diffPath: string): Promise<null>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
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.ImageDiffError = void 0;
|
|
7
|
+
const image_1 = __importDefault(require("../../../../image"));
|
|
8
|
+
const base_state_error_1 = require("./base-state-error");
|
|
9
|
+
class ImageDiffError extends base_state_error_1.BaseStateError {
|
|
10
|
+
static create({ stateName, currImg, refImg, diffOpts, diffAreas = {}, diffBuffer, differentPixels, diffRatio, }) {
|
|
11
|
+
return new this({ stateName, currImg, refImg, diffOpts, diffAreas, diffBuffer, differentPixels, diffRatio });
|
|
12
|
+
}
|
|
13
|
+
static fromObject(data) {
|
|
14
|
+
const { diffBounds, diffClusters, ...rest } = data;
|
|
15
|
+
return new this({ ...rest, diffAreas: { diffBounds, diffClusters } });
|
|
16
|
+
}
|
|
17
|
+
constructor({ stateName, currImg, refImg, diffOpts, diffAreas: { diffBounds, diffClusters } = {}, diffBuffer, differentPixels, diffRatio, }) {
|
|
18
|
+
super(stateName, currImg, refImg);
|
|
19
|
+
this.message = `images are different for "${stateName}" state`;
|
|
20
|
+
this.diffOpts = diffOpts;
|
|
21
|
+
this.diffBounds = diffBounds;
|
|
22
|
+
this.diffClusters = diffClusters;
|
|
23
|
+
this.diffBuffer = diffBuffer;
|
|
24
|
+
this.differentPixels = differentPixels;
|
|
25
|
+
this.diffRatio = diffRatio;
|
|
26
|
+
}
|
|
27
|
+
saveDiffTo(diffPath) {
|
|
28
|
+
return image_1.default.buildDiff({ diff: diffPath, ...this.diffOpts });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ImageDiffError = ImageDiffError;
|
|
32
|
+
//# sourceMappingURL=image-diff-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-diff-error.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/errors/image-diff-error.ts"],"names":[],"mappings":";;;;;;AAEA,8DAAsC;AACtC,yDAAoD;AAoCpD,MAAa,cAAe,SAAQ,iCAAc;IAS9C,MAAM,CAAC,MAAM,CAET,EACI,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAe,EAC3B,UAAU,EACV,eAAe,EACf,SAAS,GAUZ;QAED,OAAO,IAAI,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,CAAC,UAAU,CAAwC,IAAwB;QAC7E,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACnD,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,YAAY,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAe,EACzD,UAAU,EACV,eAAe,EACf,SAAS,GAUZ;QACG,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,GAAG,6BAA6B,SAAS,SAAS,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,QAAgB;QACvB,OAAO,eAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;CACJ;AAxED,wCAwEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-png-error.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/errors/invalid-png-error.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,CAAC,OAAO,GAAG,MAAM,eAAgB,SAAQ,KAAK;IAChD,YAAY,OAAO;QACf,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseStateError } from "./base-state-error";
|
|
2
|
+
import { ImageInfo } from "../../../../types";
|
|
3
|
+
type NoRefImageErrorConstructor<T> = new (stateName: string, currImg: ImageInfo, refImg: ImageInfo) => T;
|
|
4
|
+
interface NoRefImageErrorData {
|
|
5
|
+
stateName: string;
|
|
6
|
+
currImg: ImageInfo;
|
|
7
|
+
refImg: ImageInfo;
|
|
8
|
+
}
|
|
9
|
+
export declare class NoRefImageError extends BaseStateError {
|
|
10
|
+
static create<T extends NoRefImageError>(this: NoRefImageErrorConstructor<T>, stateName: string, currImg: ImageInfo, refImg: ImageInfo): T;
|
|
11
|
+
static fromObject<T extends NoRefImageError>(this: NoRefImageErrorConstructor<T>, data: NoRefImageErrorData): T;
|
|
12
|
+
constructor(stateName: string, currImg: ImageInfo, refImg: ImageInfo);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoRefImageError = void 0;
|
|
4
|
+
const base_state_error_1 = require("./base-state-error");
|
|
5
|
+
class NoRefImageError extends base_state_error_1.BaseStateError {
|
|
6
|
+
static create(stateName, currImg, refImg) {
|
|
7
|
+
return new this(stateName, currImg, refImg);
|
|
8
|
+
}
|
|
9
|
+
static fromObject(data) {
|
|
10
|
+
return new this(data.stateName, data.currImg, data.refImg);
|
|
11
|
+
}
|
|
12
|
+
constructor(stateName, currImg, refImg) {
|
|
13
|
+
super(stateName, currImg, refImg);
|
|
14
|
+
this.message = `can not find reference image at ${this.refImg.path} for "${stateName}" state`;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.NoRefImageError = NoRefImageError;
|
|
18
|
+
//# sourceMappingURL=no-ref-image-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-ref-image-error.js","sourceRoot":"","sources":["../../../../../../src/browser/commands/assert-view/errors/no-ref-image-error.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAWpD,MAAa,eAAgB,SAAQ,iCAAc;IAC/C,MAAM,CAAC,MAAM,CAET,SAAiB,EACjB,OAAkB,EAClB,MAAiB;QAEjB,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,UAAU,CAAiE,IAAyB;QACvG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,SAAiB,EAAE,OAAkB,EAAE,MAAiB;QAChE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,GAAG,mCAAmC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,SAAS,SAAS,CAAC;IAClG,CAAC;CACJ;AAnBD,0CAmBC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const fs = require("fs-extra");
|
|
3
|
+
const _ = require("lodash");
|
|
4
|
+
const Promise = require("bluebird");
|
|
5
|
+
const { pngValidator: validatePng } = require("png-validator");
|
|
6
|
+
const Image = require("../../../image");
|
|
7
|
+
const ScreenShooter = require("../../screen-shooter");
|
|
8
|
+
const temp = require("../../../temp");
|
|
9
|
+
const { getCaptureProcessors } = require("./capture-processors");
|
|
10
|
+
const RuntimeConfig = require("../../../config/runtime-config");
|
|
11
|
+
const AssertViewResults = require("./assert-view-results");
|
|
12
|
+
const { BaseStateError } = require("./errors/base-state-error");
|
|
13
|
+
const { AssertViewError } = require("./errors/assert-view-error");
|
|
14
|
+
const InvalidPngError = require("./errors/invalid-png-error");
|
|
15
|
+
const getIgnoreDiffPixelCountRatio = value => {
|
|
16
|
+
const percent = _.isString(value) && value.endsWith("%") ? parseFloat(value.slice(0, -1)) : false;
|
|
17
|
+
if (percent === false || _.isNaN(percent)) {
|
|
18
|
+
throw new Error(`Invalid ignoreDiffPixelCount value: got ${value}, but expected number or '\${number}%'`);
|
|
19
|
+
}
|
|
20
|
+
if (percent > 100 || percent < 0) {
|
|
21
|
+
throw new Error(`Invalid ignoreDiffPixelCount value: percent should be in range between 0 and 100`);
|
|
22
|
+
}
|
|
23
|
+
return percent / 100;
|
|
24
|
+
};
|
|
25
|
+
module.exports.default = browser => {
|
|
26
|
+
const screenShooter = ScreenShooter.create(browser);
|
|
27
|
+
const { publicAPI: session, config } = browser;
|
|
28
|
+
const { assertViewOpts, compareOpts, compositeImage, screenshotDelay, tolerance, antialiasingTolerance, disableAnimation, } = config;
|
|
29
|
+
const { handleNoRefImage, handleImageDiff } = getCaptureProcessors();
|
|
30
|
+
const assertView = async (state, selectors, opts) => {
|
|
31
|
+
opts = _.defaults(opts, assertViewOpts, {
|
|
32
|
+
compositeImage,
|
|
33
|
+
screenshotDelay,
|
|
34
|
+
tolerance,
|
|
35
|
+
antialiasingTolerance,
|
|
36
|
+
disableAnimation,
|
|
37
|
+
});
|
|
38
|
+
const { testplaneCtx } = session.executionContext;
|
|
39
|
+
testplaneCtx.assertViewResults = testplaneCtx.assertViewResults || AssertViewResults.create();
|
|
40
|
+
if (testplaneCtx.assertViewResults.hasState(state)) {
|
|
41
|
+
return Promise.reject(new AssertViewError(`duplicate name for "${state}" state`));
|
|
42
|
+
}
|
|
43
|
+
const handleCaptureProcessorError = e => e instanceof BaseStateError ? testplaneCtx.assertViewResults.add(e) : Promise.reject(e);
|
|
44
|
+
const page = await browser.prepareScreenshot([].concat(selectors), {
|
|
45
|
+
ignoreSelectors: [].concat(opts.ignoreElements),
|
|
46
|
+
allowViewportOverflow: opts.allowViewportOverflow,
|
|
47
|
+
captureElementFromTop: opts.captureElementFromTop,
|
|
48
|
+
selectorToScroll: opts.selectorToScroll,
|
|
49
|
+
disableAnimation: opts.disableAnimation,
|
|
50
|
+
});
|
|
51
|
+
const { tempOpts } = RuntimeConfig.getInstance();
|
|
52
|
+
temp.attach(tempOpts);
|
|
53
|
+
const screenshoterOpts = _.pick(opts, [
|
|
54
|
+
"allowViewportOverflow",
|
|
55
|
+
"compositeImage",
|
|
56
|
+
"screenshotDelay",
|
|
57
|
+
"selectorToScroll",
|
|
58
|
+
]);
|
|
59
|
+
const currImgInst = await screenShooter
|
|
60
|
+
.capture(page, screenshoterOpts)
|
|
61
|
+
.finally(() => browser.cleanupScreenshot(opts));
|
|
62
|
+
const currSize = await currImgInst.getSize();
|
|
63
|
+
const currImg = { path: temp.path(Object.assign(tempOpts, { suffix: ".png" })), size: currSize };
|
|
64
|
+
const test = session.executionContext.ctx.currentTest;
|
|
65
|
+
const refImg = { path: config.getScreenshotPath(test, state), size: null };
|
|
66
|
+
const { emitter } = browser;
|
|
67
|
+
if (!fs.existsSync(refImg.path)) {
|
|
68
|
+
await currImgInst.save(currImg.path);
|
|
69
|
+
return handleNoRefImage(currImg, refImg, state, { emitter }).catch(e => handleCaptureProcessorError(e));
|
|
70
|
+
}
|
|
71
|
+
const { canHaveCaret, pixelRatio } = page;
|
|
72
|
+
const imageCompareOpts = {
|
|
73
|
+
tolerance: opts.tolerance,
|
|
74
|
+
antialiasingTolerance: opts.antialiasingTolerance,
|
|
75
|
+
canHaveCaret,
|
|
76
|
+
pixelRatio,
|
|
77
|
+
compareOpts,
|
|
78
|
+
};
|
|
79
|
+
const currBuffer = await currImgInst.toPngBuffer({ resolveWithObject: false });
|
|
80
|
+
const refBuffer = await fs.readFile(refImg.path);
|
|
81
|
+
try {
|
|
82
|
+
validatePng(refBuffer);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
throw new InvalidPngError(`Reference image in ${refImg.path} is not a valid png`);
|
|
86
|
+
}
|
|
87
|
+
const { equal, diffBounds, diffClusters, diffImage, metaInfo = {}, differentPixels, totalPixels, } = await Image.compare(refBuffer, currBuffer, imageCompareOpts);
|
|
88
|
+
Object.assign(refImg, metaInfo.refImg);
|
|
89
|
+
const diffRatio = differentPixels / totalPixels;
|
|
90
|
+
const isMinorDiff = _.isString(opts.ignoreDiffPixelCount)
|
|
91
|
+
? diffRatio <= getIgnoreDiffPixelCountRatio(opts.ignoreDiffPixelCount)
|
|
92
|
+
: differentPixels <= opts.ignoreDiffPixelCount;
|
|
93
|
+
if (!equal && !isMinorDiff) {
|
|
94
|
+
const diffBuffer = await diffImage.createBuffer("png");
|
|
95
|
+
const diffAreas = { diffBounds, diffClusters };
|
|
96
|
+
const { tolerance, antialiasingTolerance } = opts;
|
|
97
|
+
const imageDiffOpts = {
|
|
98
|
+
tolerance,
|
|
99
|
+
antialiasingTolerance,
|
|
100
|
+
canHaveCaret,
|
|
101
|
+
diffAreas,
|
|
102
|
+
config,
|
|
103
|
+
emitter,
|
|
104
|
+
diffBuffer,
|
|
105
|
+
differentPixels,
|
|
106
|
+
diffRatio,
|
|
107
|
+
};
|
|
108
|
+
await fs.outputFile(currImg.path, currBuffer);
|
|
109
|
+
return handleImageDiff(currImg, refImg, state, imageDiffOpts).catch(e => handleCaptureProcessorError(e));
|
|
110
|
+
}
|
|
111
|
+
testplaneCtx.assertViewResults.add({ stateName: state, refImg: refImg });
|
|
112
|
+
};
|
|
113
|
+
session.addCommand("assertView", async function (state, selectors, opts = {}) {
|
|
114
|
+
await Promise.map([].concat(selectors), async (selector) => {
|
|
115
|
+
await this.$(selector)
|
|
116
|
+
.then(el => el.waitForExist())
|
|
117
|
+
.catch(() => {
|
|
118
|
+
throw new Error(`element ("${selector}") still not existing after ${this.options.waitforTimeout} ms`);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
return assertView(state, selectors, opts);
|
|
122
|
+
});
|
|
123
|
+
session.addCommand("assertView", async function (state, opts = {}) {
|
|
124
|
+
await this.waitForExist({ timeoutMsg: "custom timeout msg" }).catch(() => {
|
|
125
|
+
throw new Error(`element ("${this.selector}") still not existing after ${this.options.waitforTimeout} ms`);
|
|
126
|
+
});
|
|
127
|
+
return assertView(state, this.selector, opts);
|
|
128
|
+
}, true);
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=index.js.map
|