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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/screen-shooter/viewport/index.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="mocha" />
|
|
3
|
+
import type { EventEmitter } from "events";
|
|
4
|
+
import type { AssertViewCommand, AssertViewElementCommand } from "./commands/types";
|
|
5
|
+
import type { BrowserConfig } from "./../config/browser-config";
|
|
6
|
+
import type { RunnerTest, RunnerHook, ExecutionThreadToolCtx } from "../types";
|
|
7
|
+
import { MoveCursorToCommand } from "./commands/moveCursorTo";
|
|
8
|
+
import { OpenAndWaitCommand } from "./commands/openAndWait";
|
|
9
|
+
export interface BrowserMeta {
|
|
10
|
+
pid: number;
|
|
11
|
+
browserVersion: string;
|
|
12
|
+
[name: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface Browser {
|
|
15
|
+
publicAPI: WebdriverIO.Browser;
|
|
16
|
+
config: BrowserConfig;
|
|
17
|
+
state: Record<string, unknown>;
|
|
18
|
+
applyState: (state: Record<string, unknown>) => void;
|
|
19
|
+
}
|
|
20
|
+
type FunctionProperties<T> = Exclude<{
|
|
21
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
22
|
+
}[keyof T], undefined>;
|
|
23
|
+
type EventEmitterMethod = FunctionProperties<EventEmitter>;
|
|
24
|
+
declare global {
|
|
25
|
+
namespace WebdriverIO {
|
|
26
|
+
type BrowserCommand = Exclude<FunctionProperties<WebdriverIO.Browser>, EventEmitterMethod>;
|
|
27
|
+
type ElementCommand = Exclude<FunctionProperties<WebdriverIO.Element>, EventEmitterMethod>;
|
|
28
|
+
type OverwriteCommandFn<ThisArg, Fn extends (...args: any) => any> = (this: ThisArg, origCommand: OmitThisParameter<Fn>, ...args: Parameters<Fn>) => ReturnType<Fn>;
|
|
29
|
+
interface Browser {
|
|
30
|
+
getMeta(this: WebdriverIO.Browser): Promise<BrowserMeta>;
|
|
31
|
+
getMeta(this: WebdriverIO.Browser, key: string): Promise<unknown>;
|
|
32
|
+
setMeta(this: WebdriverIO.Browser, key: string, value: unknown): Promise<void>;
|
|
33
|
+
extendOptions(this: WebdriverIO.Browser, opts: {
|
|
34
|
+
[name: string]: unknown;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
getConfig(this: WebdriverIO.Browser): Promise<BrowserConfig>;
|
|
37
|
+
overwriteCommand<CommandName extends BrowserCommand>(name: CommandName, func: OverwriteCommandFn<WebdriverIO.Browser, WebdriverIO.Browser[CommandName]>, attachToElement?: false, proto?: Record<string, any>, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
38
|
+
instances?: Record<string, WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser>): void;
|
|
39
|
+
overwriteCommand<CommandName extends ElementCommand>(name: CommandName, func: OverwriteCommandFn<WebdriverIO.Element, WebdriverIO.Element[CommandName]>, attachToElement: true, proto?: Record<string, any>, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
40
|
+
instances?: Record<string, WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Takes a screenshot of the passed selector and compares the received screenshot with the reference.
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* For more details, see {@link https://github.com/gemini-testing/testplane#assertview documentation}.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
*
|
|
50
|
+
* it('some test', async function() {
|
|
51
|
+
* await this.browser.url('some/url');
|
|
52
|
+
* await this.browser.assertView('plain', '.button', {
|
|
53
|
+
* ignoreElements: ['.link'],
|
|
54
|
+
* tolerance: 2.3,
|
|
55
|
+
* antialiasingTolerance: 4,
|
|
56
|
+
* allowViewportOverflow: true,
|
|
57
|
+
* captureElementFromTop: true,
|
|
58
|
+
* compositeImage: true,
|
|
59
|
+
* screenshotDelay: 600,
|
|
60
|
+
* selectorToScroll: '.modal'
|
|
61
|
+
* });
|
|
62
|
+
*});
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @param state state name, should be unique within one test
|
|
66
|
+
* @param selectors DOM-node selector that you need to capture
|
|
67
|
+
* @param opts additional options, currently available:
|
|
68
|
+
* "ignoreElements", "tolerance", "antialiasingTolerance", "allowViewportOverflow", "captureElementFromTop",
|
|
69
|
+
* "compositeImage", "screenshotDelay", "selectorToScroll"
|
|
70
|
+
*/
|
|
71
|
+
assertView: AssertViewCommand;
|
|
72
|
+
/**
|
|
73
|
+
* Command that allows to add human-readable description for commands in history
|
|
74
|
+
*
|
|
75
|
+
* @remarks
|
|
76
|
+
* For more details, see {@link https://github.com/gemini-testing/testplane#runstep documentation}
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* it('some test', async function () {
|
|
81
|
+
* await this.browser.runStep('step name', async () => {
|
|
82
|
+
* await this.browser.url('some/url');
|
|
83
|
+
* ...
|
|
84
|
+
* });
|
|
85
|
+
* })
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @param stepName step name
|
|
89
|
+
* @param stepCb step callback
|
|
90
|
+
* @returns {Promise<T>} value, returned by `stepCb`
|
|
91
|
+
*/
|
|
92
|
+
runStep<T = unknown>(this: WebdriverIO.Browser, stepName: string, stepCb: () => Promise<T> | T): Promise<T>;
|
|
93
|
+
executionContext: (RunnerTest | RunnerHook) & {
|
|
94
|
+
testplaneCtx: ExecutionThreadToolCtx;
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated Use `testplaneCtx` instead
|
|
97
|
+
*/
|
|
98
|
+
hermioneCtx: ExecutionThreadToolCtx;
|
|
99
|
+
ctx: {
|
|
100
|
+
browser: WebdriverIO.Browser;
|
|
101
|
+
currentTest: RunnerTest;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
openAndWait: OpenAndWaitCommand;
|
|
105
|
+
switchToRepl: (this: WebdriverIO.Browser, ctx?: Record<string, unknown>) => Promise<void>;
|
|
106
|
+
clearSession: (this: WebdriverIO.Browser) => Promise<void>;
|
|
107
|
+
}
|
|
108
|
+
interface Element {
|
|
109
|
+
/**
|
|
110
|
+
* Takes a screenshot of the element and compares the received screenshot with the reference.
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* For more details, see {@link https://github.com/gemini-testing/testplane#assertview documentation}.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
*
|
|
118
|
+
* it('some test', async function() {
|
|
119
|
+
* await this.browser.url('some/url');
|
|
120
|
+
* const button = await this.browser.$('.button');
|
|
121
|
+
* await button.assertView('plain', {
|
|
122
|
+
* ignoreElements: ['.link'],
|
|
123
|
+
* tolerance: 2.3,
|
|
124
|
+
* antialiasingTolerance: 4,
|
|
125
|
+
* allowViewportOverflow: true,
|
|
126
|
+
* captureElementFromTop: true,
|
|
127
|
+
* compositeImage: true,
|
|
128
|
+
* screenshotDelay: 600,
|
|
129
|
+
* selectorToScroll: '.modal'
|
|
130
|
+
* });
|
|
131
|
+
*});
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* @param state state name, should be unique within one test
|
|
135
|
+
* @param opts additional options, currently available:
|
|
136
|
+
* "ignoreElements", "tolerance", "antialiasingTolerance", "allowViewportOverflow", "captureElementFromTop",
|
|
137
|
+
* "compositeImage", "screenshotDelay", "selectorToScroll"
|
|
138
|
+
*/
|
|
139
|
+
assertView: AssertViewElementCommand;
|
|
140
|
+
moveCursorTo: MoveCursorToCommand;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/browser/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export = BasicPool;
|
|
2
|
+
declare class BasicPool extends Pool {
|
|
3
|
+
static create(config: any, emitter: any): import("./basic-pool");
|
|
4
|
+
constructor(config: any, emitter: any);
|
|
5
|
+
_config: any;
|
|
6
|
+
_emitter: any;
|
|
7
|
+
log: any;
|
|
8
|
+
_activeSessions: {};
|
|
9
|
+
getBrowser(id: any, opts?: {}): Promise<import("../browser/browser")>;
|
|
10
|
+
freeBrowser(browser: any): Promise<void>;
|
|
11
|
+
_emit(event: any, browser: any): any;
|
|
12
|
+
_cancelled: boolean | undefined;
|
|
13
|
+
}
|
|
14
|
+
import Pool = require("./pool");
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const Browser = require("../browser/new-browser");
|
|
4
|
+
const { CancelledError } = require("./cancelled-error");
|
|
5
|
+
const { MasterEvents } = require("../events");
|
|
6
|
+
const Pool = require("./pool");
|
|
7
|
+
const debug = require("debug");
|
|
8
|
+
module.exports = class BasicPool extends Pool {
|
|
9
|
+
static create(config, emitter) {
|
|
10
|
+
return new BasicPool(config, emitter);
|
|
11
|
+
}
|
|
12
|
+
constructor(config, emitter) {
|
|
13
|
+
super();
|
|
14
|
+
this._config = config;
|
|
15
|
+
this._emitter = emitter;
|
|
16
|
+
this.log = debug("testplane:pool:basic");
|
|
17
|
+
this._activeSessions = {};
|
|
18
|
+
}
|
|
19
|
+
async getBrowser(id, opts = {}) {
|
|
20
|
+
const browser = Browser.create(this._config, { ...opts, id });
|
|
21
|
+
try {
|
|
22
|
+
await browser.init();
|
|
23
|
+
this.log(`browser ${browser.fullId} started`);
|
|
24
|
+
await this._emit(MasterEvents.SESSION_START, browser);
|
|
25
|
+
if (this._cancelled) {
|
|
26
|
+
throw new CancelledError();
|
|
27
|
+
}
|
|
28
|
+
await browser.reset();
|
|
29
|
+
this._activeSessions[browser.sessionId] = browser;
|
|
30
|
+
return browser;
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
if (browser.publicAPI) {
|
|
34
|
+
await this.freeBrowser(browser);
|
|
35
|
+
}
|
|
36
|
+
throw e;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async freeBrowser(browser) {
|
|
40
|
+
delete this._activeSessions[browser.sessionId];
|
|
41
|
+
this.log(`stop browser ${browser.fullId}`);
|
|
42
|
+
try {
|
|
43
|
+
await this._emit(MasterEvents.SESSION_END, browser);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.warn((err && err.stack) || err);
|
|
47
|
+
}
|
|
48
|
+
await browser.quit();
|
|
49
|
+
}
|
|
50
|
+
_emit(event, browser) {
|
|
51
|
+
return this._emitter.emitAndWait(event, browser.publicAPI, {
|
|
52
|
+
browserId: browser.id,
|
|
53
|
+
sessionId: browser.sessionId,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
cancel() {
|
|
57
|
+
this._cancelled = true;
|
|
58
|
+
_.forEach(this._activeSessions, browser => browser.quit());
|
|
59
|
+
this._activeSessions = {};
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=basic-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/basic-pool.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export = CachingPool;
|
|
2
|
+
declare class CachingPool extends Pool {
|
|
3
|
+
/**
|
|
4
|
+
* @constructor
|
|
5
|
+
* @extends BasicPool
|
|
6
|
+
* @param {BasicPool} underlyingPool
|
|
7
|
+
*/
|
|
8
|
+
constructor(underlyingPool: BasicPool, config: any);
|
|
9
|
+
log: any;
|
|
10
|
+
underlyingPool: BasicPool;
|
|
11
|
+
_caches: {};
|
|
12
|
+
_config: any;
|
|
13
|
+
_getCacheFor(id: any, version: any): any;
|
|
14
|
+
getBrowser(id: any, opts?: {}): any;
|
|
15
|
+
_initPool(browserId: any, version: any): void;
|
|
16
|
+
/**
|
|
17
|
+
* Free browser
|
|
18
|
+
* @param {Browser} browser session instance
|
|
19
|
+
* @param {Object} [options] - advanced options
|
|
20
|
+
* @param {Boolean} [options.force] - if `true` than browser should
|
|
21
|
+
* not be cached
|
|
22
|
+
* @returns {Promise<undefined>}
|
|
23
|
+
*/
|
|
24
|
+
freeBrowser(browser: Browser, options?: {
|
|
25
|
+
force?: boolean | undefined;
|
|
26
|
+
} | undefined): Promise<undefined>;
|
|
27
|
+
}
|
|
28
|
+
import Pool = require("./pool");
|
|
29
|
+
import Promise = require("bluebird");
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const Promise = require("bluebird");
|
|
3
|
+
const Pool = require("./pool");
|
|
4
|
+
const LimitedUseSet = require("./limited-use-set");
|
|
5
|
+
const debug = require("debug");
|
|
6
|
+
const { buildCompositeBrowserId } = require("./utils");
|
|
7
|
+
module.exports = class CachingPool extends Pool {
|
|
8
|
+
/**
|
|
9
|
+
* @constructor
|
|
10
|
+
* @extends BasicPool
|
|
11
|
+
* @param {BasicPool} underlyingPool
|
|
12
|
+
*/
|
|
13
|
+
constructor(underlyingPool, config) {
|
|
14
|
+
super();
|
|
15
|
+
this.log = debug("testplane:pool:caching");
|
|
16
|
+
this.underlyingPool = underlyingPool;
|
|
17
|
+
this._caches = {};
|
|
18
|
+
this._config = config;
|
|
19
|
+
}
|
|
20
|
+
_getCacheFor(id, version) {
|
|
21
|
+
const compositeId = buildCompositeBrowserId(id, version);
|
|
22
|
+
this.log(`request for ${compositeId}`);
|
|
23
|
+
if (!this._caches[compositeId]) {
|
|
24
|
+
this.log(`init for ${compositeId}`);
|
|
25
|
+
this._initPool(id, version);
|
|
26
|
+
}
|
|
27
|
+
return this._caches[compositeId];
|
|
28
|
+
}
|
|
29
|
+
getBrowser(id, opts = {}) {
|
|
30
|
+
const { version } = opts;
|
|
31
|
+
const cache = this._getCacheFor(id, version);
|
|
32
|
+
const browser = cache.pop();
|
|
33
|
+
if (!browser) {
|
|
34
|
+
this.log(`no cached browser for ${buildCompositeBrowserId(id, version)}, requesting new`);
|
|
35
|
+
return this.underlyingPool.getBrowser(id, opts);
|
|
36
|
+
}
|
|
37
|
+
this.log(`has cached browser ${browser.fullId}`);
|
|
38
|
+
return browser
|
|
39
|
+
.reset()
|
|
40
|
+
.catch(e => {
|
|
41
|
+
const reject = Promise.reject.bind(null, e);
|
|
42
|
+
return this.underlyingPool.freeBrowser(browser).then(reject, reject);
|
|
43
|
+
})
|
|
44
|
+
.then(() => browser);
|
|
45
|
+
}
|
|
46
|
+
_initPool(browserId, version) {
|
|
47
|
+
const compositeId = buildCompositeBrowserId(browserId, version);
|
|
48
|
+
const freeBrowser = this.underlyingPool.freeBrowser.bind(this.underlyingPool);
|
|
49
|
+
const { testsPerSession } = this._config.forBrowser(browserId);
|
|
50
|
+
this._caches[compositeId] = new LimitedUseSet({
|
|
51
|
+
formatItem: item => item.fullId,
|
|
52
|
+
// browser does not get put in a set on first usages, so if
|
|
53
|
+
// we want to limit it usage to N times, we must set N-1 limit
|
|
54
|
+
// for the set.
|
|
55
|
+
useLimit: testsPerSession - 1,
|
|
56
|
+
finalize: freeBrowser,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Free browser
|
|
61
|
+
* @param {Browser} browser session instance
|
|
62
|
+
* @param {Object} [options] - advanced options
|
|
63
|
+
* @param {Boolean} [options.force] - if `true` than browser should
|
|
64
|
+
* not be cached
|
|
65
|
+
* @returns {Promise<undefined>}
|
|
66
|
+
*/
|
|
67
|
+
freeBrowser(browser, options = {}) {
|
|
68
|
+
const shouldFreeForNextRequest = () => {
|
|
69
|
+
const { compositeIdForNextRequest } = options;
|
|
70
|
+
if (!compositeIdForNextRequest) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
const { hasFreeSlots } = options;
|
|
74
|
+
const hasCacheForNextRequest = this._caches[options.compositeIdForNextRequest];
|
|
75
|
+
return !hasFreeSlots && !hasCacheForNextRequest;
|
|
76
|
+
};
|
|
77
|
+
const force = options.force || shouldFreeForNextRequest();
|
|
78
|
+
this.log(`free ${browser.fullId} force=${force}`);
|
|
79
|
+
if (force) {
|
|
80
|
+
return this.underlyingPool.freeBrowser(browser);
|
|
81
|
+
}
|
|
82
|
+
const cache = this._getCacheFor(browser.id, browser.version);
|
|
83
|
+
return cache.push(browser);
|
|
84
|
+
}
|
|
85
|
+
cancel() {
|
|
86
|
+
this.log("cancel");
|
|
87
|
+
this.underlyingPool.cancel();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=caching-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caching-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/caching-pool.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CancelledError = void 0;
|
|
4
|
+
class CancelledError extends Error {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.name = "CancelledError";
|
|
8
|
+
this.message = "Browser request was cancelled";
|
|
9
|
+
Error.captureStackTrace(this, CancelledError);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.CancelledError = CancelledError;
|
|
13
|
+
//# sourceMappingURL=cancelled-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelled-error.js","sourceRoot":"","sources":["../../../src/browser-pool/cancelled-error.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IAIrC;QACI,KAAK,EAAE,CAAC;QAJZ,SAAI,GAAG,gBAAgB,CAAC;QACxB,YAAO,GAAG,+BAA+B,CAAC;QAItC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;CACJ;AARD,wCAQC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import LimitedPool from "./limited-pool";
|
|
2
|
+
import PerBrowserLimitedPool from "./per-browser-limited-pool";
|
|
3
|
+
import { Config } from "../config";
|
|
4
|
+
import { AsyncEmitter } from "../events";
|
|
5
|
+
export type BrowserPool = LimitedPool | PerBrowserLimitedPool;
|
|
6
|
+
export declare const create: (config: Config, emitter: AsyncEmitter) => BrowserPool;
|
|
@@ -0,0 +1,25 @@
|
|
|
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.create = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const basic_pool_1 = __importDefault(require("./basic-pool"));
|
|
9
|
+
const limited_pool_1 = __importDefault(require("./limited-pool"));
|
|
10
|
+
const per_browser_limited_pool_1 = __importDefault(require("./per-browser-limited-pool"));
|
|
11
|
+
const caching_pool_1 = __importDefault(require("./caching-pool"));
|
|
12
|
+
const create = function (config, emitter) {
|
|
13
|
+
let pool = basic_pool_1.default.create(config, emitter);
|
|
14
|
+
pool = new caching_pool_1.default(pool, config);
|
|
15
|
+
pool = new per_browser_limited_pool_1.default(pool, config);
|
|
16
|
+
if (lodash_1.default.isFinite(config.system.parallelLimit)) {
|
|
17
|
+
pool = new limited_pool_1.default(pool, {
|
|
18
|
+
limit: config.system.parallelLimit,
|
|
19
|
+
isSpecificBrowserLimiter: false,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return pool;
|
|
23
|
+
};
|
|
24
|
+
exports.create = create;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser-pool/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,8DAAqC;AACrC,kEAAyC;AACzC,0FAA+D;AAC/D,kEAAyC;AAMlC,MAAM,MAAM,GAAG,UAAU,MAAc,EAAE,OAAqB;IACjE,IAAI,IAAI,GAAkE,oBAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5G,IAAI,GAAG,IAAI,sBAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,GAAG,IAAI,kCAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,gBAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,IAAI,GAAG,IAAI,sBAAW,CAAC,IAAI,EAAE;YACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;YAClC,wBAAwB,EAAE,KAAK;SAClC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,MAAM,UAcjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export = LimitedPool;
|
|
2
|
+
declare class LimitedPool extends Pool {
|
|
3
|
+
static create(underlyingPool: any, opts: any): import("./limited-pool");
|
|
4
|
+
/**
|
|
5
|
+
* @extends BasicPool
|
|
6
|
+
* @param {Number} limit
|
|
7
|
+
* @param {BasicPool} underlyingPool
|
|
8
|
+
*/
|
|
9
|
+
constructor(underlyingPool: BasicPool, opts: any);
|
|
10
|
+
log: any;
|
|
11
|
+
underlyingPool: BasicPool;
|
|
12
|
+
_limit: any;
|
|
13
|
+
_launched: number;
|
|
14
|
+
_requests: number;
|
|
15
|
+
_requestQueue: any;
|
|
16
|
+
_highPriorityRequestQueue: any;
|
|
17
|
+
_isSpecificBrowserLimiter: any;
|
|
18
|
+
getBrowser(id: any, opts?: {}): Promise<any>;
|
|
19
|
+
freeBrowser(browser: any, opts?: {}): any;
|
|
20
|
+
_getBrowser(id: any, opts?: {}): Promise<Browser>;
|
|
21
|
+
/**
|
|
22
|
+
* @param {String} id
|
|
23
|
+
* @returns {Promise<Browser>}
|
|
24
|
+
*/
|
|
25
|
+
_newBrowser(id: string, opts: any): Promise<Browser>;
|
|
26
|
+
_lookAtNextRequest(): any;
|
|
27
|
+
_launchNextBrowser(): void;
|
|
28
|
+
}
|
|
29
|
+
import Pool = require("./pool");
|
|
30
|
+
import Promise = require("bluebird");
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const Promise = require("bluebird");
|
|
4
|
+
const yallist = require("yallist");
|
|
5
|
+
const Pool = require("./pool");
|
|
6
|
+
const { CancelledError } = require("./cancelled-error");
|
|
7
|
+
const debug = require("debug");
|
|
8
|
+
const { buildCompositeBrowserId } = require("./utils");
|
|
9
|
+
module.exports = class LimitedPool extends Pool {
|
|
10
|
+
static create(underlyingPool, opts) {
|
|
11
|
+
return new LimitedPool(underlyingPool, opts);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @extends BasicPool
|
|
15
|
+
* @param {Number} limit
|
|
16
|
+
* @param {BasicPool} underlyingPool
|
|
17
|
+
*/
|
|
18
|
+
constructor(underlyingPool, opts) {
|
|
19
|
+
super();
|
|
20
|
+
this.log = debug("testplane:pool:limited");
|
|
21
|
+
this.underlyingPool = underlyingPool;
|
|
22
|
+
this._limit = opts.limit;
|
|
23
|
+
this._launched = 0;
|
|
24
|
+
this._requests = 0;
|
|
25
|
+
this._requestQueue = yallist.create();
|
|
26
|
+
this._highPriorityRequestQueue = yallist.create();
|
|
27
|
+
this._isSpecificBrowserLimiter = _.isBoolean(opts.isSpecificBrowserLimiter)
|
|
28
|
+
? opts.isSpecificBrowserLimiter
|
|
29
|
+
: true;
|
|
30
|
+
}
|
|
31
|
+
getBrowser(id, opts = {}) {
|
|
32
|
+
const optsToPrint = JSON.stringify(opts);
|
|
33
|
+
this.log(`get browser ${id} with opts:${optsToPrint} (launched ${this._launched}, limit ${this._limit})`);
|
|
34
|
+
++this._requests;
|
|
35
|
+
return this._getBrowser(id, opts).catch(e => {
|
|
36
|
+
--this._requests;
|
|
37
|
+
return Promise.reject(e);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
freeBrowser(browser, opts = {}) {
|
|
41
|
+
--this._requests;
|
|
42
|
+
const nextRequest = this._lookAtNextRequest();
|
|
43
|
+
const compositeIdForNextRequest = nextRequest && buildCompositeBrowserId(nextRequest.id, nextRequest.opts.version);
|
|
44
|
+
const hasFreeSlots = this._launched < this._limit;
|
|
45
|
+
const shouldFreeUnusedResource = this._isSpecificBrowserLimiter && this._launched > this._requests;
|
|
46
|
+
const force = opts.force || shouldFreeUnusedResource;
|
|
47
|
+
const optsForFree = { force, compositeIdForNextRequest, hasFreeSlots };
|
|
48
|
+
this.log(`free browser ${browser.fullId} with opts:${JSON.stringify(optsForFree)}`);
|
|
49
|
+
return this.underlyingPool.freeBrowser(browser, optsForFree).finally(() => this._launchNextBrowser());
|
|
50
|
+
}
|
|
51
|
+
cancel() {
|
|
52
|
+
this.log("cancel");
|
|
53
|
+
const reject_ = entry => entry.reject(new CancelledError());
|
|
54
|
+
this._highPriorityRequestQueue.forEach(reject_);
|
|
55
|
+
this._requestQueue.forEach(reject_);
|
|
56
|
+
this._highPriorityRequestQueue = yallist.create();
|
|
57
|
+
this._requestQueue = yallist.create();
|
|
58
|
+
this.underlyingPool.cancel();
|
|
59
|
+
}
|
|
60
|
+
_getBrowser(id, opts = {}) {
|
|
61
|
+
if (this._launched < this._limit) {
|
|
62
|
+
this.log("can launch one more");
|
|
63
|
+
this._launched++;
|
|
64
|
+
return this._newBrowser(id, opts);
|
|
65
|
+
}
|
|
66
|
+
this.log("queuing the request");
|
|
67
|
+
const queue = opts.highPriority ? this._highPriorityRequestQueue : this._requestQueue;
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
queue.push({ id, opts, resolve, reject });
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @param {String} id
|
|
74
|
+
* @returns {Promise<Browser>}
|
|
75
|
+
*/
|
|
76
|
+
_newBrowser(id, opts) {
|
|
77
|
+
this.log(`launching new browser ${id} with opts:${JSON.stringify(opts)}`);
|
|
78
|
+
return this.underlyingPool.getBrowser(id, opts).catch(e => {
|
|
79
|
+
this._launchNextBrowser();
|
|
80
|
+
return Promise.reject(e);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
_lookAtNextRequest() {
|
|
84
|
+
return this._highPriorityRequestQueue.get(0) || this._requestQueue.get(0);
|
|
85
|
+
}
|
|
86
|
+
_launchNextBrowser() {
|
|
87
|
+
const queued = this._highPriorityRequestQueue.shift() || this._requestQueue.shift();
|
|
88
|
+
if (queued) {
|
|
89
|
+
const compositeId = buildCompositeBrowserId(queued.id, queued.opts.version);
|
|
90
|
+
this.log(`has queued requests for ${compositeId}`);
|
|
91
|
+
this.log(`remaining queue length: ${this._requestQueue.length}`);
|
|
92
|
+
this._newBrowser(queued.id, queued.opts).then(queued.resolve, queued.reject);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this._launched--;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=limited-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limited-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/limited-pool.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export = LimitedUseSet;
|
|
2
|
+
declare class LimitedUseSet {
|
|
3
|
+
constructor(opts: any);
|
|
4
|
+
_useCounts: WeakMap<object, any>;
|
|
5
|
+
_useLimit: any;
|
|
6
|
+
_finalize: any;
|
|
7
|
+
_formatItem: any;
|
|
8
|
+
_objects: any[];
|
|
9
|
+
log: any;
|
|
10
|
+
push(value: any): any;
|
|
11
|
+
_isOverLimit(value: any): boolean;
|
|
12
|
+
pop(): any;
|
|
13
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const debug = require("debug");
|
|
4
|
+
/**
|
|
5
|
+
* Set implementation which allows to get and put an object
|
|
6
|
+
* there only limited amout of times. After limit is reached
|
|
7
|
+
* attempt to put an object there causes the object to be finalized.
|
|
8
|
+
*
|
|
9
|
+
* @constructor
|
|
10
|
+
* @param {Number} useLimit number of times object can be popped from set
|
|
11
|
+
* before finalizing.
|
|
12
|
+
* @param {Function} finalize callback which will be called when value in
|
|
13
|
+
* set needs to be finalized.
|
|
14
|
+
*/
|
|
15
|
+
module.exports = class LimitedUseSet {
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
this._useCounts = new WeakMap();
|
|
18
|
+
this._useLimit = opts.useLimit;
|
|
19
|
+
this._finalize = opts.finalize;
|
|
20
|
+
this._formatItem = opts.formatItem || _.identity;
|
|
21
|
+
this._objects = [];
|
|
22
|
+
this.log = debug("testplane:pool:limited-use-set");
|
|
23
|
+
}
|
|
24
|
+
push(value) {
|
|
25
|
+
const formatedItem = this._formatItem(value);
|
|
26
|
+
this.log(`push ${formatedItem}`);
|
|
27
|
+
if (this._isOverLimit(value)) {
|
|
28
|
+
this.log(`over limit, finalizing ${formatedItem}`);
|
|
29
|
+
return this._finalize(value);
|
|
30
|
+
}
|
|
31
|
+
this.log(`under limit for ${formatedItem}`);
|
|
32
|
+
this._objects.push(value);
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
_isOverLimit(value) {
|
|
36
|
+
if (this._useLimit === 0) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return this._useCounts.has(value) && this._useCounts.get(value) >= this._useLimit;
|
|
40
|
+
}
|
|
41
|
+
pop() {
|
|
42
|
+
if (this._objects.length === 0) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const result = this._objects.pop();
|
|
46
|
+
const useCount = this._useCounts.get(result) || 0;
|
|
47
|
+
const formatedItem = this._formatItem(result);
|
|
48
|
+
this.log(`popping ${formatedItem}`);
|
|
49
|
+
this.log(`previous use count ${formatedItem}:${useCount}`);
|
|
50
|
+
this._useCounts.set(result, useCount + 1);
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=limited-use-set.js.map
|