@testspectra/cli 1.0.70 → 1.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +48 -0
- package/README.md +36 -270
- package/bin/.testspectra-runner.hash +1 -0
- package/bin/spectra.js +1 -1
- package/bin/testspectra-runner +0 -0
- package/demo-app/assets/index-BhlW-eXG.css +1 -0
- package/demo-app/assets/index-DOtRypCa.js +154 -0
- package/demo-app/index.html +2 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/commands/__tests__/doctor.test.d.ts +1 -0
- package/dist/commands/__tests__/doctor.test.js +39 -0
- package/dist/commands/__tests__/init.test.d.ts +1 -0
- package/dist/commands/__tests__/init.test.js +148 -0
- package/dist/commands/__tests__/license.test.d.ts +1 -0
- package/dist/commands/__tests__/license.test.js +13 -0
- package/dist/commands/__tests__/refactor.test.d.ts +1 -0
- package/dist/commands/__tests__/refactor.test.js +64 -0
- package/dist/commands/__tests__/run-e2e.test.d.ts +1 -0
- package/dist/commands/__tests__/run-e2e.test.js +422 -0
- package/dist/commands/__tests__/run.test.d.ts +1 -0
- package/dist/commands/__tests__/run.test.js +273 -0
- package/dist/commands/__tests__/watch.test.d.ts +1 -0
- package/dist/commands/__tests__/watch.test.js +155 -0
- package/dist/commands/add.js +86 -85
- package/dist/commands/demo.js +21 -11
- package/dist/commands/devices.d.ts +14 -2
- package/dist/commands/devices.js +44 -34
- package/dist/commands/doctor.d.ts +3 -1
- package/dist/commands/doctor.js +43 -264
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +211 -196
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.js +59 -0
- package/dist/commands/license.d.ts +4 -0
- package/dist/commands/license.js +30 -0
- package/dist/commands/lint.d.ts +5 -0
- package/dist/commands/lint.js +55 -0
- package/dist/commands/refactor.d.ts +9 -0
- package/dist/commands/refactor.js +172 -0
- package/dist/commands/run.d.ts +23 -2
- package/dist/commands/run.js +322 -111
- package/dist/commands/skills.d.ts +9 -0
- package/dist/commands/skills.js +28 -0
- package/dist/commands/sync-types.d.ts +4 -0
- package/dist/commands/sync-types.js +15 -0
- package/dist/commands/test.d.ts +17 -0
- package/dist/commands/test.js +76 -0
- package/dist/commands/update.js +39 -43
- package/dist/commands/watch.d.ts +6 -0
- package/dist/commands/watch.js +55 -45
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.js +40 -25
- package/dist/config/schema.d.ts +104 -145
- package/dist/config/schema.js +36 -45
- package/dist/generator/__tests__/tsconfig-isolation.test.d.ts +1 -0
- package/dist/generator/__tests__/tsconfig-isolation.test.js +282 -0
- package/dist/generator/__tests__/type-generator.test.d.ts +1 -0
- package/dist/generator/__tests__/type-generator.test.js +386 -0
- package/dist/generator/index.d.ts +2 -0
- package/dist/generator/index.js +2 -0
- package/dist/generator/tsconfig-generator.d.ts +27 -0
- package/dist/generator/tsconfig-generator.js +419 -0
- package/dist/generator/type-generator.d.ts +59 -0
- package/dist/generator/type-generator.js +740 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.js +165 -51
- package/dist/lifecycle/__tests__/lifecycle-engine.test.d.ts +1 -0
- package/dist/lifecycle/__tests__/lifecycle-engine.test.js +290 -0
- package/dist/lifecycle/hook-discovery.d.ts +24 -0
- package/dist/lifecycle/hook-discovery.js +60 -0
- package/dist/lifecycle/hook-dispatcher.d.ts +34 -0
- package/dist/lifecycle/hook-dispatcher.js +190 -0
- package/dist/lifecycle/index.d.ts +3 -0
- package/dist/lifecycle/index.js +3 -0
- package/dist/lifecycle/parallel-grouping.d.ts +27 -0
- package/dist/lifecycle/parallel-grouping.js +151 -0
- package/dist/linter/__tests__/anonymous-export.test.d.ts +1 -0
- package/dist/linter/__tests__/anonymous-export.test.js +184 -0
- package/dist/linter/__tests__/component-test-imports.test.d.ts +1 -0
- package/dist/linter/__tests__/component-test-imports.test.js +115 -0
- package/dist/linter/__tests__/shared-lib-boundary.test.d.ts +1 -0
- package/dist/linter/__tests__/shared-lib-boundary.test.js +270 -0
- package/dist/linter/__tests__/spec-schema.test.d.ts +1 -0
- package/dist/linter/__tests__/spec-schema.test.js +369 -0
- package/dist/linter/__tests__/step-parity.test.d.ts +1 -0
- package/dist/linter/__tests__/step-parity.test.js +372 -0
- package/dist/linter/discovery.d.ts +30 -0
- package/dist/linter/discovery.js +249 -0
- package/dist/linter/extractor.d.ts +67 -0
- package/dist/linter/extractor.js +245 -0
- package/dist/linter/index.d.ts +7 -0
- package/dist/linter/index.js +7 -0
- package/dist/linter/parser.d.ts +24 -0
- package/dist/linter/parser.js +219 -0
- package/dist/linter/schemas/spec.schema.d.ts +83 -0
- package/dist/linter/schemas/spec.schema.js +150 -0
- package/dist/linter/schemas/suite.schema.d.ts +59 -0
- package/dist/linter/schemas/suite.schema.js +83 -0
- package/dist/linter/spec-linter.d.ts +23 -0
- package/dist/linter/spec-linter.js +630 -0
- package/dist/linter/types.d.ts +28 -0
- package/dist/linter/types.js +1 -0
- package/dist/mobile/__tests__/android-device-e2e.test.d.ts +1 -0
- package/dist/mobile/__tests__/android-device-e2e.test.js +53 -0
- package/dist/mobile/__tests__/device-pool.test.d.ts +1 -0
- package/dist/mobile/__tests__/device-pool.test.js +97 -0
- package/dist/mobile/device-pool.d.ts +23 -0
- package/dist/mobile/device-pool.js +1 -0
- package/dist/mobile/index.d.ts +1 -0
- package/dist/mobile/index.js +1 -0
- package/dist/refactor/__tests__/refactor-engine.test.d.ts +1 -0
- package/dist/refactor/__tests__/refactor-engine.test.js +873 -0
- package/dist/refactor/index.d.ts +1 -0
- package/dist/refactor/index.js +1 -0
- package/dist/refactor/refactor-engine.d.ts +50 -0
- package/dist/refactor/refactor-engine.js +587 -0
- package/dist/reporter/__tests__/semantic-formatter.test.d.ts +1 -0
- package/dist/reporter/__tests__/semantic-formatter.test.js +73 -0
- package/dist/reporter/semantic-formatter.d.ts +6 -0
- package/dist/reporter/semantic-formatter.js +206 -0
- package/dist/reporter/summary-view.d.ts +12 -0
- package/dist/reporter/summary-view.js +19 -0
- package/dist/reporter/terminal-stream.d.ts +32 -0
- package/dist/reporter/terminal-stream.js +82 -0
- package/dist/reporter/types.d.ts +2 -0
- package/dist/reporter/types.js +1 -0
- package/dist/runner/bridge.d.ts +10 -5
- package/dist/runner/bridge.js +101 -45
- package/dist/runner/reporter.d.ts +32 -2
- package/dist/runner/reporter.js +427 -13
- package/dist/server/demo.js +43 -44
- package/dist/types/generator.d.ts +1 -17
- package/dist/types/generator.js +1 -443
- package/dist/utils/__tests__/api-server.test.d.ts +1 -0
- package/dist/utils/__tests__/api-server.test.js +62 -0
- package/dist/utils/__tests__/demo-server.test.d.ts +1 -0
- package/dist/utils/__tests__/demo-server.test.js +35 -0
- package/dist/utils/api-server.d.ts +19 -0
- package/dist/utils/api-server.js +179 -0
- package/dist/utils/demo-server.d.ts +5 -0
- package/dist/utils/demo-server.js +46 -36
- package/package.json +25 -13
- package/templates/default/CLAUDE.md +12 -5
- package/templates/default/fixtures/apiData.json +24 -0
- package/templates/default/package.json +12 -3
- package/templates/default/page-objects/AuthPage/mobile.ts +5 -0
- package/templates/default/page-objects/AuthPage/web.ts +10 -0
- package/templates/default/page-objects/MatchersPage/mobile.ts +66 -17
- package/templates/default/page-objects/MatchersPage/web.ts +22 -2
- package/templates/default/page-objects/NavigationPage/mobile.ts +11 -2
- package/templates/default/page-objects/NavigationPage/web.ts +1 -1
- package/templates/default/page-objects/PlaygroundPage/mobile.ts +34 -18
- package/templates/default/page-objects/PlaygroundPage/web.ts +4 -2
- package/templates/default/specs/ApiInterception/TC-0008-fetch-mocking/mobile.test.ts +53 -0
- package/templates/default/specs/ApiInterception/TC-0008-fetch-mocking/spec.md +19 -0
- package/templates/default/specs/ApiInterception/TC-0008-fetch-mocking/web.test.ts +31 -0
- package/templates/default/specs/ApiInterception/TC-0009-post-mocking/android.test.ts +3 -0
- package/templates/default/specs/ApiInterception/TC-0009-post-mocking/common.test.ts +3 -0
- package/templates/default/specs/ApiInterception/TC-0009-post-mocking/mobile.test.ts +27 -0
- package/templates/default/specs/ApiInterception/TC-0009-post-mocking/spec.md +19 -0
- package/templates/default/specs/ApiInterception/TC-0009-post-mocking/web.test.ts +26 -0
- package/templates/default/specs/ApiInterception/TC-0012-direct-and-late-response/common.test.ts +30 -0
- package/templates/default/specs/ApiInterception/TC-0012-direct-and-late-response/spec.md +22 -0
- package/templates/default/specs/ApiInterception/TC-0013-real-network-call-recorded/common.test.ts +27 -0
- package/templates/default/specs/ApiInterception/TC-0013-real-network-call-recorded/spec.md +20 -0
- package/templates/default/specs/ApiInterception/TC-0015-mock-server-sent-events/spec.md +24 -0
- package/templates/default/specs/ApiInterception/TC-0015-mock-server-sent-events/web.test.ts +26 -0
- package/templates/default/specs/ApiInterception/TC-0016-bypass-websocket-with-app-level-mock/spec.md +37 -0
- package/templates/default/specs/ApiInterception/TC-0016-bypass-websocket-with-app-level-mock/web.test.ts +21 -0
- package/templates/default/specs/ApiInterception/TC-0017-bypass-captcha-with-test-mode-flag/spec.md +29 -0
- package/templates/default/specs/ApiInterception/TC-0017-bypass-captcha-with-test-mode-flag/web.test.ts +16 -0
- package/templates/default/specs/ApiInterception/suite.md +10 -0
- package/templates/default/specs/ApiSeeding/TC-0014-seed-and-cleanup-via-hooks/common.test.ts +30 -0
- package/templates/default/specs/ApiSeeding/TC-0014-seed-and-cleanup-via-hooks/spec.md +23 -0
- package/templates/default/specs/ApiSeeding/hooks/after/common.hook.ts +16 -0
- package/templates/default/specs/ApiSeeding/hooks/before/common.hook.ts +28 -0
- package/templates/default/specs/ApiSeeding/suite.md +9 -0
- package/templates/default/specs/Authentication/TC-0021-seed-authenticated-session/mobile.test.ts +7 -0
- package/templates/default/specs/Authentication/TC-0021-seed-authenticated-session/spec.md +19 -0
- package/templates/default/specs/Authentication/TC-0021-seed-authenticated-session/web.test.ts +9 -0
- package/templates/default/specs/Authentication/suite.md +9 -0
- package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +7 -1
- package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/spec.md +5 -0
- package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +17 -3
- package/templates/default/specs/BrowserContext/TC-0022-history-navigation/mobile.test.ts +17 -0
- package/templates/default/specs/BrowserContext/TC-0022-history-navigation/spec.md +28 -0
- package/templates/default/specs/BrowserContext/TC-0022-history-navigation/web.test.ts +26 -0
- package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/common.test.ts +26 -0
- package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/spec.md +7 -0
- package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +9 -1
- package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/spec.md +5 -0
- package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +9 -4
- package/templates/default/specs/ContentMatchers/TC-0020-scoped-element-access/common.test.ts +14 -0
- package/templates/default/specs/ContentMatchers/TC-0020-scoped-element-access/spec.md +21 -0
- package/templates/default/specs/DeepLink/TC-0018-navigate-via-deep-link/mobile.test.ts +28 -0
- package/templates/default/specs/DeepLink/TC-0018-navigate-via-deep-link/spec.md +29 -0
- package/templates/default/specs/DeepLink/suite.md +9 -0
- package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +9 -1
- package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/spec.md +5 -0
- package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +9 -3
- package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +27 -1
- package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/spec.md +7 -0
- package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +27 -6
- package/templates/default/specs/ElementMatchers/suite.md +2 -1
- package/templates/default/specs/EnvironmentConfig/TC-0019-read-custom-environment-variable/common.test.ts +5 -0
- package/templates/default/specs/EnvironmentConfig/TC-0019-read-custom-environment-variable/spec.md +16 -0
- package/templates/default/specs/EnvironmentConfig/suite.md +9 -0
- package/templates/default/specs/PermissionRationale/TC-0010-camera-permission-allow/mobile.test.ts +26 -0
- package/templates/default/specs/PermissionRationale/TC-0010-camera-permission-allow/spec.md +22 -0
- package/templates/default/specs/PermissionRationale/TC-0011-camera-permission-deny/mobile.test.ts +13 -0
- package/templates/default/specs/PermissionRationale/TC-0011-camera-permission-deny/spec.md +20 -0
- package/templates/default/specs/PermissionRationale/suite.md +9 -0
- package/templates/default/specs/Playground/TC-0001-form-controls/mobile.test.ts +4 -1
- package/templates/default/specs/Playground/TC-0001-form-controls/spec.md +6 -0
- package/templates/default/specs/Playground/TC-0001-form-controls/web.test.ts +4 -4
- package/templates/default/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +4 -1
- package/templates/default/specs/Playground/TC-0002-toggle-elements/spec.md +6 -0
- package/templates/default/specs/Playground/TC-0002-toggle-elements/web.test.ts +3 -3
- package/templates/default/spectra.config.ts +22 -31
- package/templates/default/support/actions/fillCredentials/mobile.action.ts +3 -3
- package/templates/default/support/actions/fillCredentials/web.action.ts +1 -1
- package/templates/default/support/actions/seedSession/mobile.action.ts +9 -0
- package/templates/default/support/actions/seedSession/web.action.ts +13 -0
- package/templates/default/support/steps/togglePlaygroundStates/mobile.step.ts +3 -1
- package/templates/default/support/steps/togglePlaygroundStates/web.step.ts +3 -3
- package/templates/default/support/steps/verifyPlaygroundState/mobile.step.ts +4 -2
- package/templates/default/support/steps/verifyPlaygroundState/web.step.ts +4 -4
- package/templates/default/tsconfig.json +3 -1
- package/templates/nx/.nx/workspace-data/70094CFD-E89B-57A1-9619-2FC5F4963C54.db +0 -0
- package/templates/nx/.nx/workspace-data/70094CFD-E89B-57A1-9619-2FC5F4963C54.db-shm +0 -0
- package/templates/nx/.nx/workspace-data/70094CFD-E89B-57A1-9619-2FC5F4963C54.db-wal +0 -0
- package/templates/nx/.nx/workspace-data/d/daemon.log +5366 -0
- package/templates/nx/.nx/workspace-data/d/server-process.json +3 -0
- package/templates/nx/.nx/workspace-data/file-map.json +464 -0
- package/templates/nx/.nx/workspace-data/lockfile.hash +1 -0
- package/templates/nx/.nx/workspace-data/nx_files.nxt +0 -0
- package/templates/nx/.nx/workspace-data/parsed-lock-file.json +13485 -0
- package/templates/nx/.nx/workspace-data/project-graph.json +14389 -0
- package/templates/nx/CLAUDE.md +2 -2
- package/templates/nx/package.json +6 -4
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0008-fetch-mocking/mobile.test.ts +27 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0008-fetch-mocking/spec.md +12 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0008-fetch-mocking/web.test.ts +27 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0009-post-mocking/mobile.test.ts +24 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0009-post-mocking/spec.md +12 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/TC-0009-post-mocking/web.test.ts +24 -0
- package/templates/nx/packages/matchers/e2e/specs/ApiInterception/suite.md +9 -0
- package/templates/nx/packages/matchers/e2e/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +1 -1
- package/templates/nx/packages/matchers/e2e/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +17 -3
- package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +1 -1
- package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +15 -5
- package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +1 -1
- package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +9 -4
- package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +1 -1
- package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +9 -3
- package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +1 -1
- package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +27 -6
- package/templates/nx/packages/matchers/e2e/specs/EnvironmentConfig/TC-0019-read-custom-environment-variable/common.test.ts +5 -0
- package/templates/nx/packages/matchers/e2e/specs/EnvironmentConfig/TC-0019-read-custom-environment-variable/spec.md +16 -0
- package/templates/nx/packages/matchers/e2e/specs/EnvironmentConfig/suite.md +9 -0
- package/templates/nx/packages/playground/e2e/specs/Playground/TC-0001-form-controls/mobile.test.ts +1 -1
- package/templates/nx/packages/playground/e2e/specs/Playground/TC-0001-form-controls/web.test.ts +4 -4
- package/templates/nx/packages/playground/e2e/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +1 -1
- package/templates/nx/packages/playground/e2e/specs/Playground/TC-0002-toggle-elements/web.test.ts +3 -3
- package/templates/nx/pnpm-lock.yaml +6663 -0
- package/templates/nx/pnpm-workspace.yaml +2 -1
- package/templates/nx/shared/testing/fixtures/apiData.json +24 -0
- package/templates/nx/shared/testing/page-objects/MatchersPage/mobile.ts +13 -1
- package/templates/nx/shared/testing/page-objects/MatchersPage/web.ts +85 -17
- package/templates/nx/shared/testing/page-objects/NavigationPage/mobile.ts +1 -1
- package/templates/nx/shared/testing/page-objects/NavigationPage/web.ts +1 -1
- package/templates/nx/shared/testing/page-objects/PlaygroundPage/mobile.ts +1 -1
- package/templates/nx/shared/testing/page-objects/PlaygroundPage/web.ts +4 -2
- package/templates/nx/shared/testing/project.json +19 -0
- package/templates/nx/shared/testing/support/actions/fillCredentials/mobile.action.ts +1 -1
- package/templates/nx/shared/testing/support/actions/fillCredentials/web.action.ts +1 -1
- package/templates/nx/shared/testing/support/steps/togglePlaygroundStates/mobile.step.ts +1 -1
- package/templates/nx/shared/testing/support/steps/togglePlaygroundStates/web.step.ts +3 -3
- package/templates/nx/shared/testing/support/steps/verifyPlaygroundState/mobile.step.ts +2 -2
- package/templates/nx/shared/testing/support/steps/verifyPlaygroundState/web.step.ts +4 -4
- package/templates/nx/spectra.config.ts +20 -29
- package/templates/nx/tsconfig.json +3 -1
- package/templates/react-component/.cursorrules +17 -0
- package/templates/react-component/.vscode/extensions.json +5 -0
- package/templates/react-component/CLAUDE.md +14 -0
- package/templates/react-component/README.md +69 -0
- package/templates/react-component/fixtures/component-mock.json +12 -0
- package/templates/react-component/global-hooks/after/web.hook.ts +3 -0
- package/templates/react-component/global-hooks/before/web.hook.ts +3 -0
- package/templates/react-component/package.json +27 -0
- package/templates/react-component/page-objects/BadgeComponent/web.ts +23 -0
- package/templates/react-component/page-objects/ButtonComponent/web.ts +23 -0
- package/templates/react-component/page-objects/InputComponent/web.ts +13 -0
- package/templates/react-component/specs/BadgeComponent/TC-0002-badge-severities-and-dot/spec.md +18 -0
- package/templates/react-component/specs/BadgeComponent/TC-0002-badge-severities-and-dot/web.test.tsx +11 -0
- package/templates/react-component/specs/BadgeComponent/TC-0006-badge-success-with-dot/spec.md +18 -0
- package/templates/react-component/specs/BadgeComponent/TC-0006-badge-success-with-dot/web.test.tsx +10 -0
- package/templates/react-component/specs/BadgeComponent/TC-0007-badge-by-severity-lookup/spec.md +18 -0
- package/templates/react-component/specs/BadgeComponent/TC-0007-badge-by-severity-lookup/web.test.tsx +16 -0
- package/templates/react-component/specs/BadgeComponent/suite.md +12 -0
- package/templates/react-component/specs/ButtonComponent/TC-0001-button-rendering-and-click/spec.md +19 -0
- package/templates/react-component/specs/ButtonComponent/TC-0001-button-rendering-and-click/web.test.tsx +28 -0
- package/templates/react-component/specs/ButtonComponent/TC-0004-disabled-button-not-clickable/spec.md +19 -0
- package/templates/react-component/specs/ButtonComponent/TC-0004-disabled-button-not-clickable/web.test.tsx +22 -0
- package/templates/react-component/specs/ButtonComponent/TC-0005-button-renders-icon/spec.md +18 -0
- package/templates/react-component/specs/ButtonComponent/TC-0005-button-renders-icon/web.test.tsx +8 -0
- package/templates/react-component/specs/ButtonComponent/suite.md +12 -0
- package/templates/react-component/specs/InputComponent/TC-0003-input-typing-and-clear/spec.md +20 -0
- package/templates/react-component/specs/InputComponent/TC-0003-input-typing-and-clear/web.test.tsx +28 -0
- package/templates/react-component/specs/InputComponent/TC-0008-disabled-input-not-editable/spec.md +18 -0
- package/templates/react-component/specs/InputComponent/TC-0008-disabled-input-not-editable/web.test.tsx +9 -0
- package/templates/react-component/specs/InputComponent/suite.md +12 -0
- package/templates/react-component/spectra.config.ts +27 -0
- package/templates/react-component/src/components/Badge/Badge.tsx +60 -0
- package/templates/react-component/src/components/Button/Button.tsx +57 -0
- package/templates/react-component/src/components/Input/Input.tsx +41 -0
- package/templates/react-component/src/test-utils.tsx +23 -0
- package/templates/react-component/support/actions/fillInputField/web.action.ts +9 -0
- package/templates/react-component/support/steps/verifyButtonState/web.step.ts +12 -0
- package/templates/react-component/tsconfig.json +8 -0
- package/demo-app/assets/index-DAUlrHTr.css +0 -1
- package/demo-app/assets/index-DN2Kb0A8.js +0 -100
- package/dist/index.cjs +0 -101
- package/dist/plugin.cjs +0 -575
- package/dist/plugin.d.ts +0 -16
- package/dist/plugin.js +0 -184
- package/dist/step/index.d.ts +0 -6
- package/dist/step/index.js +0 -6
- package/dist/step/matchers.d.ts +0 -14
- package/dist/step/matchers.js +0 -114
- package/dist/step/proto.d.ts +0 -46
- package/dist/step/proto.js +0 -114
- package/dist/step/runner/collection.d.ts +0 -13
- package/dist/step/runner/collection.js +0 -51
- package/dist/step/runner/single.d.ts +0 -21
- package/dist/step/runner/single.js +0 -138
- package/dist/step/spectra.d.ts +0 -34
- package/dist/step/spectra.js +0 -156
- package/dist/step/types.d.ts +0 -32
- package/dist/step/types.js +0 -5
- package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +0 -3
- package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +0 -7
- package/templates/default/tsconfig.spectra.android.json +0 -46
- package/templates/default/tsconfig.spectra.ios.json +0 -46
- package/templates/default/tsconfig.spectra.json +0 -22
- package/templates/default/tsconfig.spectra.web.json +0 -53
- package/templates/nx/fixtures/playgroundData.json +0 -7
- package/templates/nx/global-hooks/after/mobile.hook.ts +0 -3
- package/templates/nx/global-hooks/after/web.hook.ts +0 -3
- package/templates/nx/global-hooks/before/mobile.hook.ts +0 -3
- package/templates/nx/global-hooks/before/web.hook.ts +0 -3
- package/templates/nx/page-objects/MatchersPage/mobile.ts +0 -21
- package/templates/nx/page-objects/MatchersPage/web.ts +0 -23
- package/templates/nx/page-objects/NavigationPage/mobile.ts +0 -5
- package/templates/nx/page-objects/NavigationPage/web.ts +0 -8
- package/templates/nx/page-objects/PlaygroundPage/mobile.ts +0 -26
- package/templates/nx/page-objects/PlaygroundPage/web.ts +0 -29
- package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +0 -3
- package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/spec.md +0 -12
- package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +0 -5
- package/templates/nx/specs/BrowserContext/suite.md +0 -9
- package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +0 -3
- package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/spec.md +0 -12
- package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +0 -7
- package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +0 -3
- package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/spec.md +0 -12
- package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +0 -6
- package/templates/nx/specs/ContentMatchers/suite.md +0 -9
- package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +0 -3
- package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/spec.md +0 -12
- package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +0 -5
- package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +0 -3
- package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/spec.md +0 -12
- package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +0 -8
- package/templates/nx/specs/ElementMatchers/hooks/after/mobile.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/after/web.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/afterEach/mobile.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/afterEach/web.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/before/mobile.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/before/web.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/beforeEach/mobile.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/hooks/beforeEach/web.hook.ts +0 -1
- package/templates/nx/specs/ElementMatchers/suite.md +0 -9
- package/templates/nx/specs/Playground/TC-0001-form-controls/mobile.test.ts +0 -3
- package/templates/nx/specs/Playground/TC-0001-form-controls/spec.md +0 -12
- package/templates/nx/specs/Playground/TC-0001-form-controls/web.test.ts +0 -6
- package/templates/nx/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +0 -3
- package/templates/nx/specs/Playground/TC-0002-toggle-elements/spec.md +0 -12
- package/templates/nx/specs/Playground/TC-0002-toggle-elements/web.test.ts +0 -6
- package/templates/nx/specs/Playground/hooks/after/mobile.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/after/web.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/afterEach/mobile.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/afterEach/web.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/before/mobile.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/before/web.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/beforeEach/mobile.hook.ts +0 -1
- package/templates/nx/specs/Playground/hooks/beforeEach/web.hook.ts +0 -1
- package/templates/nx/specs/Playground/suite.md +0 -9
- package/templates/nx/support/actions/fillCredentials/mobile.action.ts +0 -4
- package/templates/nx/support/actions/fillCredentials/web.action.ts +0 -4
- package/templates/nx/support/steps/togglePlaygroundStates/mobile.step.ts +0 -3
- package/templates/nx/support/steps/togglePlaygroundStates/step.md +0 -7
- package/templates/nx/support/steps/togglePlaygroundStates/web.step.ts +0 -5
- package/templates/nx/support/steps/verifyPlaygroundState/mobile.step.ts +0 -4
- package/templates/nx/support/steps/verifyPlaygroundState/step.md +0 -7
- package/templates/nx/support/steps/verifyPlaygroundState/web.step.ts +0 -6
- package/templates/nx/tsconfig.spectra.android.json +0 -39
- package/templates/nx/tsconfig.spectra.ios.json +0 -39
- package/templates/nx/tsconfig.spectra.json +0 -25
- package/templates/nx/tsconfig.spectra.shared.json +0 -25
- package/templates/nx/tsconfig.spectra.web.json +0 -45
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/after/mobile.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/after/web.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/afterEach/mobile.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/afterEach/web.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/before/mobile.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/before/web.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/beforeEach/mobile.hook.ts +0 -0
- /package/templates/{nx/specs/BrowserContext → default/specs/ApiInterception}/hooks/beforeEach/web.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/after/mobile.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/after/web.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/afterEach/mobile.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/afterEach/web.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/before/mobile.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/before/web.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/beforeEach/mobile.hook.ts +0 -0
- /package/templates/nx/{specs/ContentMatchers → packages/matchers/e2e/specs/ApiInterception}/hooks/beforeEach/web.hook.ts +0 -0
package/dist/config/schema.d.ts
CHANGED
|
@@ -9,97 +9,106 @@ export interface WebConfig {
|
|
|
9
9
|
baseUrl: string;
|
|
10
10
|
/**
|
|
11
11
|
* Maximum number of parallel browser sessions/workers spawned during test execution.
|
|
12
|
-
*
|
|
12
|
+
* Can be an explicit number, numeric string, or `"auto"`.
|
|
13
|
+
* @default "auto"
|
|
13
14
|
*/
|
|
14
|
-
maxConcurrentSessions: string;
|
|
15
|
+
maxConcurrentSessions: number | string | 'auto';
|
|
15
16
|
/**
|
|
16
17
|
* Whether to run browsers in headless mode without a visible GUI window.
|
|
17
18
|
* @default true
|
|
18
19
|
*/
|
|
19
|
-
|
|
20
|
+
headless: boolean | 'new';
|
|
20
21
|
/**
|
|
21
22
|
* Implicit wait timeout (in milliseconds) for finding elements before throwing an error.
|
|
23
|
+
* Also the ceiling auto-waiting element assertions/actions poll against (capped at 2000ms for
|
|
24
|
+
* assertions — see `getAssertionTimeoutMs()`).
|
|
22
25
|
* @default "5000"
|
|
23
26
|
*/
|
|
24
27
|
implicitWait: string;
|
|
25
28
|
/**
|
|
26
|
-
*
|
|
27
|
-
* @default
|
|
28
|
-
*/
|
|
29
|
-
pageLoadTimeout: string;
|
|
30
|
-
/**
|
|
31
|
-
* Maximum time (in milliseconds) allowed for asynchronous scripts to finish executing.
|
|
32
|
-
* @default "30000"
|
|
29
|
+
* Delay between consecutive actions and commands in milliseconds (slow motion).
|
|
30
|
+
* @default 0
|
|
33
31
|
*/
|
|
34
|
-
|
|
32
|
+
stepDelay?: number;
|
|
35
33
|
/**
|
|
36
34
|
* Parallelization granularity:
|
|
37
35
|
* - `"testcase"`: Each test case executes in parallel across available workers.
|
|
38
36
|
* - `"suite"`: Test cases within a suite run serially, while different suites run in parallel.
|
|
39
37
|
* @default "testcase"
|
|
40
38
|
*/
|
|
41
|
-
parallelizationMode:
|
|
39
|
+
parallelizationMode: 'testcase' | 'suite';
|
|
42
40
|
}
|
|
43
41
|
/**
|
|
44
|
-
*
|
|
42
|
+
* Target Android device specification for multi-device parallel execution.
|
|
45
43
|
*/
|
|
46
|
-
export interface
|
|
44
|
+
export interface AndroidDeviceTarget {
|
|
47
45
|
/**
|
|
48
|
-
*
|
|
46
|
+
* ADB serial or device ID (e.g. "emulator-5554", "192.168.1.50:5555").
|
|
49
47
|
*/
|
|
50
48
|
id: string;
|
|
51
49
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @default "chrome"
|
|
50
|
+
* Emulator AVD name (e.g. "Pixel_7_Pro_API_34").
|
|
54
51
|
*/
|
|
55
|
-
|
|
52
|
+
avd?: string;
|
|
56
53
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @default false
|
|
54
|
+
* Friendly display/model name (e.g. "Pixel 7 Pro").
|
|
59
55
|
*/
|
|
60
|
-
|
|
56
|
+
name?: string;
|
|
61
57
|
/**
|
|
62
|
-
*
|
|
58
|
+
* Android OS version (e.g. "14.0").
|
|
63
59
|
*/
|
|
64
|
-
|
|
60
|
+
version?: string;
|
|
65
61
|
/**
|
|
66
|
-
*
|
|
62
|
+
* UiAutomator2 port (e.g. 8200).
|
|
67
63
|
*/
|
|
68
|
-
|
|
64
|
+
systemPort?: number;
|
|
69
65
|
/**
|
|
70
|
-
* Custom
|
|
66
|
+
* Custom Appium capabilities overrides for this specific device.
|
|
71
67
|
*/
|
|
72
|
-
|
|
68
|
+
capabilities?: Record<string, any>;
|
|
73
69
|
}
|
|
74
70
|
/**
|
|
75
|
-
*
|
|
71
|
+
* Target iOS device specification for multi-device parallel execution.
|
|
76
72
|
*/
|
|
77
|
-
export interface
|
|
73
|
+
export interface IosDeviceTarget {
|
|
78
74
|
/**
|
|
79
|
-
*
|
|
80
|
-
* @default "http://127.0.0.1:4723"
|
|
75
|
+
* Device ID or simulator slug (e.g. "iphone-15-pro").
|
|
81
76
|
*/
|
|
82
|
-
|
|
77
|
+
id: string;
|
|
83
78
|
/**
|
|
84
|
-
*
|
|
85
|
-
* @default "Android"
|
|
79
|
+
* Friendly name (e.g. "iPhone 15 Pro Simulator").
|
|
86
80
|
*/
|
|
87
|
-
|
|
81
|
+
name?: string;
|
|
88
82
|
/**
|
|
89
|
-
*
|
|
90
|
-
* @default "13"
|
|
83
|
+
* iOS version (e.g. "17.0").
|
|
91
84
|
*/
|
|
92
|
-
|
|
85
|
+
version?: string;
|
|
93
86
|
/**
|
|
94
|
-
*
|
|
95
|
-
* @default "emulator-5554"
|
|
87
|
+
* Physical device UDID or "auto".
|
|
96
88
|
*/
|
|
97
|
-
|
|
89
|
+
udid?: string;
|
|
98
90
|
/**
|
|
99
|
-
*
|
|
100
|
-
* @default "UiAutomator2"
|
|
91
|
+
* WebDriverAgent local port (e.g. 8100).
|
|
101
92
|
*/
|
|
102
|
-
|
|
93
|
+
wdaLocalPort?: number;
|
|
94
|
+
/**
|
|
95
|
+
* Custom Appium capabilities overrides for this specific device.
|
|
96
|
+
*/
|
|
97
|
+
capabilities?: Record<string, any>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Configuration for Android mobile test automation with Spectra Android Native Driver.
|
|
101
|
+
*/
|
|
102
|
+
export interface AndroidConfig {
|
|
103
|
+
/**
|
|
104
|
+
* Spectra Android Driver server endpoint URL.
|
|
105
|
+
* @default "tcp://127.0.0.1:8200"
|
|
106
|
+
*/
|
|
107
|
+
driverServer?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Legacy Appium server endpoint URL (fallback, deprecated — use `driverServer`).
|
|
110
|
+
*/
|
|
111
|
+
appiumServer?: string;
|
|
103
112
|
/**
|
|
104
113
|
* Android application package name (e.g. `"com.example.app"`).
|
|
105
114
|
*/
|
|
@@ -108,11 +117,6 @@ export interface AndroidConfig {
|
|
|
108
117
|
* Main activity name launched when starting the app.
|
|
109
118
|
*/
|
|
110
119
|
appActivity: string;
|
|
111
|
-
/**
|
|
112
|
-
* Whether to automatically grant Android runtime permissions upon installation.
|
|
113
|
-
* @default true
|
|
114
|
-
*/
|
|
115
|
-
autoGrantPermissions: boolean;
|
|
116
120
|
/**
|
|
117
121
|
* Whether to preserve app state and prevent clearing app data/cache between sessions.
|
|
118
122
|
* @default false
|
|
@@ -120,39 +124,47 @@ export interface AndroidConfig {
|
|
|
120
124
|
noReset: boolean;
|
|
121
125
|
/**
|
|
122
126
|
* Implicit wait timeout (in milliseconds) for locating mobile elements.
|
|
123
|
-
* @default
|
|
127
|
+
* @default 10000
|
|
124
128
|
*/
|
|
125
|
-
implicitWait: string;
|
|
129
|
+
implicitWait: string | number;
|
|
126
130
|
/**
|
|
127
131
|
* Parallelization execution mode for Android mobile tests.
|
|
128
132
|
* @default "suite"
|
|
129
133
|
*/
|
|
130
|
-
parallelizationMode:
|
|
134
|
+
parallelizationMode: 'testcase' | 'suite';
|
|
135
|
+
/**
|
|
136
|
+
* Array of explicit target devices or configurations for multi-device parallel execution.
|
|
137
|
+
* Each entry can specify its own `id`, `name`, `version`, `avd`, `systemPort`, etc.
|
|
138
|
+
*/
|
|
139
|
+
devices: (string | AndroidDeviceTarget)[] | 'auto';
|
|
140
|
+
/**
|
|
141
|
+
* Raw custom WebdriverIO / Appium capabilities array override.
|
|
142
|
+
*/
|
|
143
|
+
capabilities?: Record<string, any>[];
|
|
144
|
+
/**
|
|
145
|
+
* Maximum concurrent mobile sessions/devices cap.
|
|
146
|
+
*/
|
|
147
|
+
maxConcurrentSessions?: number | string;
|
|
148
|
+
/**
|
|
149
|
+
* Delay between consecutive actions and commands in milliseconds (slow motion).
|
|
150
|
+
* @default 0
|
|
151
|
+
*/
|
|
152
|
+
stepDelay?: number;
|
|
131
153
|
}
|
|
132
154
|
/**
|
|
133
155
|
* Configuration for iOS mobile test automation with Appium & XCUITest.
|
|
134
156
|
*/
|
|
135
157
|
export interface IosConfig {
|
|
158
|
+
/**
|
|
159
|
+
* Delay between consecutive actions and commands in milliseconds (slow motion).
|
|
160
|
+
* @default 0
|
|
161
|
+
*/
|
|
162
|
+
stepDelay?: number;
|
|
136
163
|
/**
|
|
137
164
|
* Appium server endpoint URL.
|
|
138
165
|
* @default "http://127.0.0.1:4723"
|
|
139
166
|
*/
|
|
140
167
|
appiumServer: string;
|
|
141
|
-
/**
|
|
142
|
-
* Mobile platform name.
|
|
143
|
-
* @default "iOS"
|
|
144
|
-
*/
|
|
145
|
-
platformName: string;
|
|
146
|
-
/**
|
|
147
|
-
* iOS version (e.g. `"16.0"`, `"17.0"`).
|
|
148
|
-
* @default "16.0"
|
|
149
|
-
*/
|
|
150
|
-
platformVersion: string;
|
|
151
|
-
/**
|
|
152
|
-
* iOS simulator or connected physical device name (e.g. `"iPhone 14"`).
|
|
153
|
-
* @default "iPhone 14"
|
|
154
|
-
*/
|
|
155
|
-
deviceName: string;
|
|
156
168
|
/**
|
|
157
169
|
* Appium mobile automation driver engine for iOS.
|
|
158
170
|
* @default "XCUITest"
|
|
@@ -166,16 +178,28 @@ export interface IosConfig {
|
|
|
166
178
|
* Target device Unique Device Identifier (UDID) or `"auto"`.
|
|
167
179
|
* @default "auto"
|
|
168
180
|
*/
|
|
169
|
-
udid
|
|
181
|
+
udid?: string;
|
|
182
|
+
/**
|
|
183
|
+
* Array of explicit target devices or configurations for multi-device execution.
|
|
184
|
+
*/
|
|
185
|
+
devices: (string | IosDeviceTarget)[] | 'auto';
|
|
186
|
+
/**
|
|
187
|
+
* Raw custom WebdriverIO / Appium capabilities array override.
|
|
188
|
+
*/
|
|
189
|
+
capabilities?: Record<string, any>[];
|
|
190
|
+
/**
|
|
191
|
+
* Maximum concurrent mobile sessions/devices cap.
|
|
192
|
+
*/
|
|
193
|
+
maxConcurrentSessions?: number | string;
|
|
170
194
|
/**
|
|
171
195
|
* Apple Developer Team 10-character Organization ID for code signing.
|
|
172
196
|
*/
|
|
173
|
-
xcodeOrgId
|
|
197
|
+
xcodeOrgId?: string;
|
|
174
198
|
/**
|
|
175
199
|
* Xcode code signing identity string (e.g. `"iPhone Developer"`).
|
|
176
200
|
* @default "iPhone Developer"
|
|
177
201
|
*/
|
|
178
|
-
xcodeSigningId
|
|
202
|
+
xcodeSigningId?: string;
|
|
179
203
|
/**
|
|
180
204
|
* Whether to automatically accept iOS system permission alerts.
|
|
181
205
|
* @default true
|
|
@@ -188,48 +212,14 @@ export interface IosConfig {
|
|
|
188
212
|
noReset: boolean;
|
|
189
213
|
/**
|
|
190
214
|
* Implicit wait timeout (in milliseconds) for locating iOS UI elements.
|
|
191
|
-
* @default
|
|
215
|
+
* @default 10000
|
|
192
216
|
*/
|
|
193
|
-
implicitWait: string;
|
|
217
|
+
implicitWait: string | number;
|
|
194
218
|
/**
|
|
195
219
|
* Parallelization execution mode for iOS mobile tests.
|
|
196
220
|
* @default "suite"
|
|
197
221
|
*/
|
|
198
|
-
parallelizationMode:
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Load testing stage ramp-up profile.
|
|
202
|
-
*/
|
|
203
|
-
export interface LoadStage {
|
|
204
|
-
/**
|
|
205
|
-
* Stage identifier.
|
|
206
|
-
*/
|
|
207
|
-
id: string;
|
|
208
|
-
/**
|
|
209
|
-
* Duration for this load stage (e.g. `"30s"`, `"2m"`).
|
|
210
|
-
*/
|
|
211
|
-
duration: string;
|
|
212
|
-
/**
|
|
213
|
-
* Target virtual users (VUs) to scale to during this stage.
|
|
214
|
-
*/
|
|
215
|
-
targetVUs: string;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Performance and pass/fail metric threshold definition.
|
|
219
|
-
*/
|
|
220
|
-
export interface SuccessThreshold {
|
|
221
|
-
/**
|
|
222
|
-
* Unique threshold identifier.
|
|
223
|
-
*/
|
|
224
|
-
id: string;
|
|
225
|
-
/**
|
|
226
|
-
* Performance metric type (e.g. `"http_req_duration"`, `"http_req_failed"`).
|
|
227
|
-
*/
|
|
228
|
-
metricType: string;
|
|
229
|
-
/**
|
|
230
|
-
* Maximum acceptable value (e.g. `"500ms"`, `"0.01"`).
|
|
231
|
-
*/
|
|
232
|
-
maxValue: string;
|
|
222
|
+
parallelizationMode: 'testcase' | 'suite';
|
|
233
223
|
}
|
|
234
224
|
/**
|
|
235
225
|
* Specific domain filter for real-time network interception and recording.
|
|
@@ -244,19 +234,6 @@ export interface MonitoredDomain {
|
|
|
244
234
|
*/
|
|
245
235
|
enabled: boolean;
|
|
246
236
|
}
|
|
247
|
-
/**
|
|
248
|
-
* Custom environment variable key-value pair injected into the test execution sandbox.
|
|
249
|
-
*/
|
|
250
|
-
export interface EnvironmentVariable {
|
|
251
|
-
/**
|
|
252
|
-
* Environment variable name (e.g. `"API_SECRET_KEY"`).
|
|
253
|
-
*/
|
|
254
|
-
key: string;
|
|
255
|
-
/**
|
|
256
|
-
* Environment variable value.
|
|
257
|
-
*/
|
|
258
|
-
value: string;
|
|
259
|
-
}
|
|
260
237
|
/**
|
|
261
238
|
* Test execution, CDP network monitoring, and sandbox environment configuration.
|
|
262
239
|
*/
|
|
@@ -281,9 +258,10 @@ export interface ExecutionConfig {
|
|
|
281
258
|
*/
|
|
282
259
|
monitoredDomains?: MonitoredDomain[];
|
|
283
260
|
/**
|
|
284
|
-
* Custom environment variables injected into the test process runtime
|
|
261
|
+
* Custom environment variables injected into the test process runtime
|
|
262
|
+
* (e.g. `{ API_SECRET_KEY: "..." }`).
|
|
285
263
|
*/
|
|
286
|
-
environmentVariables?:
|
|
264
|
+
environmentVariables?: Record<string, string>;
|
|
287
265
|
}
|
|
288
266
|
/**
|
|
289
267
|
* Root configuration data structure matching TestSpectra project schema.
|
|
@@ -293,10 +271,6 @@ export interface ConfigData {
|
|
|
293
271
|
* Web browser execution settings.
|
|
294
272
|
*/
|
|
295
273
|
webConfig: WebConfig;
|
|
296
|
-
/**
|
|
297
|
-
* List of target browsers for web automation runs.
|
|
298
|
-
*/
|
|
299
|
-
browsers: Browser[];
|
|
300
274
|
/**
|
|
301
275
|
* Android Appium driver and device options.
|
|
302
276
|
*/
|
|
@@ -305,21 +279,6 @@ export interface ConfigData {
|
|
|
305
279
|
* iOS Appium driver and device options.
|
|
306
280
|
*/
|
|
307
281
|
iosConfig: IosConfig;
|
|
308
|
-
/**
|
|
309
|
-
* Load testing parameters.
|
|
310
|
-
*/
|
|
311
|
-
loadConfig: {
|
|
312
|
-
virtualUsers: string;
|
|
313
|
-
duration: string;
|
|
314
|
-
};
|
|
315
|
-
/**
|
|
316
|
-
* Load testing stages.
|
|
317
|
-
*/
|
|
318
|
-
loadStages: LoadStage[];
|
|
319
|
-
/**
|
|
320
|
-
* Pass/fail metric thresholds.
|
|
321
|
-
*/
|
|
322
|
-
thresholds: SuccessThreshold[];
|
|
323
282
|
/**
|
|
324
283
|
* Advanced execution and network recording settings.
|
|
325
284
|
*/
|
|
@@ -328,9 +287,9 @@ export interface ConfigData {
|
|
|
328
287
|
/**
|
|
329
288
|
* Deep recursive partial type for user-friendly configuration objects.
|
|
330
289
|
*/
|
|
331
|
-
export type DeepPartial<T> = {
|
|
332
|
-
[
|
|
333
|
-
};
|
|
290
|
+
export type DeepPartial<T> = T extends Function | boolean | number | string | symbol | null | undefined ? T : T extends Array<infer U> ? DeepPartial<U>[] : T extends ReadonlyArray<infer U> ? readonly DeepPartial<U>[] : T extends object ? {
|
|
291
|
+
[K in keyof T]?: DeepPartial<T[K]>;
|
|
292
|
+
} : T;
|
|
334
293
|
/**
|
|
335
294
|
* User-provided configuration options with optional deep partial properties.
|
|
336
295
|
*/
|
|
@@ -345,7 +304,7 @@ export type UserConfig = DeepPartial<ConfigData>;
|
|
|
345
304
|
* export default defineConfig({
|
|
346
305
|
* webConfig: {
|
|
347
306
|
* baseUrl: "https://example.com",
|
|
348
|
-
*
|
|
307
|
+
* headless: false,
|
|
349
308
|
* },
|
|
350
309
|
* });
|
|
351
310
|
* ```
|
package/dist/config/schema.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* export default defineConfig({
|
|
9
9
|
* webConfig: {
|
|
10
10
|
* baseUrl: "https://example.com",
|
|
11
|
-
*
|
|
11
|
+
* headless: false,
|
|
12
12
|
* },
|
|
13
13
|
* });
|
|
14
14
|
* ```
|
|
@@ -21,60 +21,51 @@ export function defineConfig(config) {
|
|
|
21
21
|
*/
|
|
22
22
|
export const DEFAULT_CONFIG_DATA = {
|
|
23
23
|
webConfig: {
|
|
24
|
-
baseUrl:
|
|
25
|
-
maxConcurrentSessions:
|
|
26
|
-
|
|
27
|
-
implicitWait:
|
|
28
|
-
|
|
29
|
-
scriptTimeout: "30000",
|
|
30
|
-
parallelizationMode: "testcase",
|
|
24
|
+
baseUrl: 'http://localhost:3000',
|
|
25
|
+
maxConcurrentSessions: '1',
|
|
26
|
+
headless: true,
|
|
27
|
+
implicitWait: '5000',
|
|
28
|
+
parallelizationMode: 'testcase',
|
|
31
29
|
},
|
|
32
|
-
browsers: [
|
|
33
|
-
{
|
|
34
|
-
id: "chrome-desktop",
|
|
35
|
-
type: "chrome",
|
|
36
|
-
mobileEmulation: false,
|
|
37
|
-
},
|
|
38
|
-
],
|
|
39
30
|
androidConfig: {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
deviceName: "emulator-5554",
|
|
44
|
-
automationName: "UiAutomator2",
|
|
45
|
-
appPackage: "",
|
|
46
|
-
appActivity: "",
|
|
47
|
-
autoGrantPermissions: true,
|
|
31
|
+
driverServer: 'http://127.0.0.1:4800',
|
|
32
|
+
appPackage: '',
|
|
33
|
+
appActivity: '',
|
|
48
34
|
noReset: false,
|
|
49
|
-
implicitWait:
|
|
50
|
-
parallelizationMode:
|
|
35
|
+
implicitWait: 10000,
|
|
36
|
+
parallelizationMode: 'suite',
|
|
37
|
+
devices: [
|
|
38
|
+
{
|
|
39
|
+
id: 'emulator-5554',
|
|
40
|
+
name: 'Pixel 7 Pro Emulator',
|
|
41
|
+
version: '14.0',
|
|
42
|
+
systemPort: 8200,
|
|
43
|
+
},
|
|
44
|
+
],
|
|
51
45
|
},
|
|
52
46
|
iosConfig: {
|
|
53
|
-
appiumServer:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
deviceName: "iPhone 14",
|
|
57
|
-
automationName: "XCUITest",
|
|
58
|
-
bundleId: "",
|
|
59
|
-
udid: "auto",
|
|
60
|
-
xcodeOrgId: "",
|
|
61
|
-
xcodeSigningId: "iPhone Developer",
|
|
47
|
+
appiumServer: 'http://127.0.0.1:4723',
|
|
48
|
+
automationName: 'XCUITest',
|
|
49
|
+
bundleId: '',
|
|
62
50
|
autoAcceptAlerts: true,
|
|
63
51
|
noReset: false,
|
|
64
|
-
implicitWait:
|
|
65
|
-
parallelizationMode:
|
|
52
|
+
implicitWait: 10000,
|
|
53
|
+
parallelizationMode: 'suite',
|
|
54
|
+
devices: [
|
|
55
|
+
{
|
|
56
|
+
id: 'iphone-15-pro',
|
|
57
|
+
name: 'iPhone 15 Pro Simulator',
|
|
58
|
+
version: '17.0',
|
|
59
|
+
udid: 'auto',
|
|
60
|
+
wdaLocalPort: 8100,
|
|
61
|
+
},
|
|
62
|
+
],
|
|
66
63
|
},
|
|
67
|
-
loadConfig: {
|
|
68
|
-
virtualUsers: "10",
|
|
69
|
-
duration: "1m",
|
|
70
|
-
},
|
|
71
|
-
loadStages: [],
|
|
72
|
-
thresholds: [],
|
|
73
64
|
executionConfig: {
|
|
74
65
|
networkMonitoringEnabled: true,
|
|
75
|
-
fastResponseTime:
|
|
76
|
-
normalResponseTime:
|
|
66
|
+
fastResponseTime: '200',
|
|
67
|
+
normalResponseTime: '1000',
|
|
77
68
|
monitoredDomains: [],
|
|
78
|
-
environmentVariables:
|
|
69
|
+
environmentVariables: {},
|
|
79
70
|
},
|
|
80
71
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|