@wdio/browserstack-service 0.0.0-canary-20260722132416
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-MIT +20 -0
- package/README.md +392 -0
- package/browserstack-service.d.ts +43 -0
- package/build/Percy/Percy-Handler.d.ts +32 -0
- package/build/Percy/Percy-Handler.d.ts.map +1 -0
- package/build/Percy/Percy-Handler.js +165 -0
- package/build/Percy/Percy-Handler.js.map +1 -0
- package/build/Percy/Percy.d.ts +19 -0
- package/build/Percy/Percy.d.ts.map +1 -0
- package/build/Percy/Percy.js +164 -0
- package/build/Percy/Percy.js.map +1 -0
- package/build/Percy/PercyBinary.d.ts +10 -0
- package/build/Percy/PercyBinary.d.ts.map +1 -0
- package/build/Percy/PercyBinary.js +161 -0
- package/build/Percy/PercyBinary.js.map +1 -0
- package/build/Percy/PercyCaptureMap.d.ts +9 -0
- package/build/Percy/PercyCaptureMap.d.ts.map +1 -0
- package/build/Percy/PercyCaptureMap.js +36 -0
- package/build/Percy/PercyCaptureMap.js.map +1 -0
- package/build/Percy/PercyHelper.d.ts +8 -0
- package/build/Percy/PercyHelper.d.ts.map +1 -0
- package/build/Percy/PercyHelper.js +68 -0
- package/build/Percy/PercyHelper.js.map +1 -0
- package/build/Percy/PercyLogger.d.ts +15 -0
- package/build/Percy/PercyLogger.d.ts.map +1 -0
- package/build/Percy/PercyLogger.js +68 -0
- package/build/Percy/PercyLogger.js.map +1 -0
- package/build/Percy/PercySDK.d.ts +4 -0
- package/build/Percy/PercySDK.d.ts.map +1 -0
- package/build/Percy/PercySDK.js +86 -0
- package/build/Percy/PercySDK.js.map +1 -0
- package/build/accessibility-handler.d.ts +52 -0
- package/build/accessibility-handler.d.ts.map +1 -0
- package/build/accessibility-handler.js +361 -0
- package/build/accessibility-handler.js.map +1 -0
- package/build/ai-handler.d.ts +23 -0
- package/build/ai-handler.d.ts.map +1 -0
- package/build/ai-handler.js +184 -0
- package/build/ai-handler.js.map +1 -0
- package/build/bstackLogger.d.ts +16 -0
- package/build/bstackLogger.d.ts.map +1 -0
- package/build/bstackLogger.js +71 -0
- package/build/bstackLogger.js.map +1 -0
- package/build/cleanup.d.ts +9 -0
- package/build/cleanup.d.ts.map +1 -0
- package/build/cleanup.js +101 -0
- package/build/cleanup.js.map +1 -0
- package/build/cli/apiUtils.d.ts +14 -0
- package/build/cli/apiUtils.d.ts.map +1 -0
- package/build/cli/apiUtils.js +25 -0
- package/build/cli/apiUtils.js.map +1 -0
- package/build/cli/cliLogger.d.ts +17 -0
- package/build/cli/cliLogger.d.ts.map +1 -0
- package/build/cli/cliLogger.js +82 -0
- package/build/cli/cliLogger.js.map +1 -0
- package/build/cli/cliUtils.d.ts +64 -0
- package/build/cli/cliUtils.d.ts.map +1 -0
- package/build/cli/cliUtils.js +461 -0
- package/build/cli/cliUtils.js.map +1 -0
- package/build/cli/eventDispatcher.d.ts +28 -0
- package/build/cli/eventDispatcher.d.ts.map +1 -0
- package/build/cli/eventDispatcher.js +49 -0
- package/build/cli/eventDispatcher.js.map +1 -0
- package/build/cli/frameworks/automationFramework.d.ts +89 -0
- package/build/cli/frameworks/automationFramework.d.ts.map +1 -0
- package/build/cli/frameworks/automationFramework.js +132 -0
- package/build/cli/frameworks/automationFramework.js.map +1 -0
- package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts +18 -0
- package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts.map +1 -0
- package/build/cli/frameworks/constants/automationFrameworkConstants.js +18 -0
- package/build/cli/frameworks/constants/automationFrameworkConstants.js.map +1 -0
- package/build/cli/frameworks/constants/testFrameworkConstants.d.ts +43 -0
- package/build/cli/frameworks/constants/testFrameworkConstants.d.ts.map +1 -0
- package/build/cli/frameworks/constants/testFrameworkConstants.js +43 -0
- package/build/cli/frameworks/constants/testFrameworkConstants.js.map +1 -0
- package/build/cli/frameworks/testFramework.d.ts +89 -0
- package/build/cli/frameworks/testFramework.d.ts.map +1 -0
- package/build/cli/frameworks/testFramework.js +126 -0
- package/build/cli/frameworks/testFramework.js.map +1 -0
- package/build/cli/frameworks/wdioAutomationFramework.d.ts +28 -0
- package/build/cli/frameworks/wdioAutomationFramework.d.ts.map +1 -0
- package/build/cli/frameworks/wdioAutomationFramework.js +67 -0
- package/build/cli/frameworks/wdioAutomationFramework.js.map +1 -0
- package/build/cli/frameworks/wdioMochaTestFramework.d.ts +82 -0
- package/build/cli/frameworks/wdioMochaTestFramework.d.ts.map +1 -0
- package/build/cli/frameworks/wdioMochaTestFramework.js +322 -0
- package/build/cli/frameworks/wdioMochaTestFramework.js.map +1 -0
- package/build/cli/grpcClient.d.ts +86 -0
- package/build/cli/grpcClient.d.ts.map +1 -0
- package/build/cli/grpcClient.js +532 -0
- package/build/cli/grpcClient.js.map +1 -0
- package/build/cli/index.d.ts +150 -0
- package/build/cli/index.d.ts.map +1 -0
- package/build/cli/index.js +464 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/instances/automationFrameworkInstance.d.ts +33 -0
- package/build/cli/instances/automationFrameworkInstance.d.ts.map +1 -0
- package/build/cli/instances/automationFrameworkInstance.js +45 -0
- package/build/cli/instances/automationFrameworkInstance.js.map +1 -0
- package/build/cli/instances/testFrameworkInstance.d.ts +62 -0
- package/build/cli/instances/testFrameworkInstance.d.ts.map +1 -0
- package/build/cli/instances/testFrameworkInstance.js +97 -0
- package/build/cli/instances/testFrameworkInstance.js.map +1 -0
- package/build/cli/instances/trackedContext.d.ts +32 -0
- package/build/cli/instances/trackedContext.d.ts.map +1 -0
- package/build/cli/instances/trackedContext.js +48 -0
- package/build/cli/instances/trackedContext.js.map +1 -0
- package/build/cli/instances/trackedInstance.d.ts +40 -0
- package/build/cli/instances/trackedInstance.d.ts.map +1 -0
- package/build/cli/instances/trackedInstance.js +64 -0
- package/build/cli/instances/trackedInstance.js.map +1 -0
- package/build/cli/modules/accessibilityModule.d.ts +46 -0
- package/build/cli/modules/accessibilityModule.d.ts.map +1 -0
- package/build/cli/modules/accessibilityModule.js +447 -0
- package/build/cli/modules/accessibilityModule.js.map +1 -0
- package/build/cli/modules/automateModule.d.ts +26 -0
- package/build/cli/modules/automateModule.d.ts.map +1 -0
- package/build/cli/modules/automateModule.js +223 -0
- package/build/cli/modules/automateModule.js.map +1 -0
- package/build/cli/modules/baseModule.d.ts +33 -0
- package/build/cli/modules/baseModule.d.ts.map +1 -0
- package/build/cli/modules/baseModule.js +52 -0
- package/build/cli/modules/baseModule.js.map +1 -0
- package/build/cli/modules/observabilityModule.d.ts +22 -0
- package/build/cli/modules/observabilityModule.d.ts.map +1 -0
- package/build/cli/modules/observabilityModule.js +46 -0
- package/build/cli/modules/observabilityModule.js.map +1 -0
- package/build/cli/modules/percyModule.d.ts +19 -0
- package/build/cli/modules/percyModule.d.ts.map +1 -0
- package/build/cli/modules/percyModule.js +78 -0
- package/build/cli/modules/percyModule.js.map +1 -0
- package/build/cli/modules/testHubModule.d.ts +30 -0
- package/build/cli/modules/testHubModule.d.ts.map +1 -0
- package/build/cli/modules/testHubModule.js +233 -0
- package/build/cli/modules/testHubModule.js.map +1 -0
- package/build/cli/modules/webdriverIOModule.d.ts +29 -0
- package/build/cli/modules/webdriverIOModule.d.ts.map +1 -0
- package/build/cli/modules/webdriverIOModule.js +129 -0
- package/build/cli/modules/webdriverIOModule.js.map +1 -0
- package/build/cli/states/automationFrameworkState.d.ts +65 -0
- package/build/cli/states/automationFrameworkState.d.ts.map +1 -0
- package/build/cli/states/automationFrameworkState.js +62 -0
- package/build/cli/states/automationFrameworkState.js.map +1 -0
- package/build/cli/states/hookState.d.ts +45 -0
- package/build/cli/states/hookState.d.ts.map +1 -0
- package/build/cli/states/hookState.js +44 -0
- package/build/cli/states/hookState.js.map +1 -0
- package/build/cli/states/testFrameworkState.d.ts +125 -0
- package/build/cli/states/testFrameworkState.d.ts.map +1 -0
- package/build/cli/states/testFrameworkState.js +116 -0
- package/build/cli/states/testFrameworkState.js.map +1 -0
- package/build/config.d.ts +29 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +52 -0
- package/build/config.js.map +1 -0
- package/build/constants.d.ts +96 -0
- package/build/constants.d.ts.map +1 -0
- package/build/constants.js +156 -0
- package/build/constants.js.map +1 -0
- package/build/crash-reporter.d.ts +18 -0
- package/build/crash-reporter.d.ts.map +1 -0
- package/build/crash-reporter.js +134 -0
- package/build/crash-reporter.js.map +1 -0
- package/build/cucumber-types.d.ts +194 -0
- package/build/cucumber-types.d.ts.map +1 -0
- package/build/cucumber-types.js +2 -0
- package/build/cucumber-types.js.map +1 -0
- package/build/data-store.d.ts +4 -0
- package/build/data-store.d.ts.map +1 -0
- package/build/data-store.js +42 -0
- package/build/data-store.js.map +1 -0
- package/build/exitHandler.d.ts +4 -0
- package/build/exitHandler.d.ts.map +1 -0
- package/build/exitHandler.js +105 -0
- package/build/exitHandler.js.map +1 -0
- package/build/fileStream.d.ts +9 -0
- package/build/fileStream.d.ts.map +1 -0
- package/build/fileStream.js +13 -0
- package/build/fileStream.js.map +1 -0
- package/build/grpc/generated/sdk-messages-accessibility.d.ts +76 -0
- package/build/grpc/generated/sdk-messages-accessibility.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages-accessibility.js +908 -0
- package/build/grpc/generated/sdk-messages-accessibility.js.map +1 -0
- package/build/grpc/generated/sdk-messages-ai.d.ts +52 -0
- package/build/grpc/generated/sdk-messages-ai.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages-ai.js +643 -0
- package/build/grpc/generated/sdk-messages-ai.js.map +1 -0
- package/build/grpc/generated/sdk-messages-observability.d.ts +44 -0
- package/build/grpc/generated/sdk-messages-observability.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages-observability.js +505 -0
- package/build/grpc/generated/sdk-messages-observability.js.map +1 -0
- package/build/grpc/generated/sdk-messages-percy.d.ts +16 -0
- package/build/grpc/generated/sdk-messages-percy.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages-percy.js +111 -0
- package/build/grpc/generated/sdk-messages-percy.js.map +1 -0
- package/build/grpc/generated/sdk-messages-testhub.d.ts +16 -0
- package/build/grpc/generated/sdk-messages-testhub.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages-testhub.js +132 -0
- package/build/grpc/generated/sdk-messages-testhub.js.map +1 -0
- package/build/grpc/generated/sdk-messages.d.ts +288 -0
- package/build/grpc/generated/sdk-messages.d.ts.map +1 -0
- package/build/grpc/generated/sdk-messages.js +3958 -0
- package/build/grpc/generated/sdk-messages.js.map +1 -0
- package/build/grpc/generated/sdk.d.ts +282 -0
- package/build/grpc/generated/sdk.d.ts.map +1 -0
- package/build/grpc/generated/sdk.js +197 -0
- package/build/grpc/generated/sdk.js.map +1 -0
- package/build/grpc/index.d.ts +43 -0
- package/build/grpc/index.d.ts.map +1 -0
- package/build/grpc/index.js +154 -0
- package/build/grpc/index.js.map +1 -0
- package/build/index.d.ts +20 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +13 -0
- package/build/index.js.map +1 -0
- package/build/insights-handler.d.ts +76 -0
- package/build/insights-handler.d.ts.map +1 -0
- package/build/insights-handler.js +855 -0
- package/build/insights-handler.js.map +1 -0
- package/build/instrumentation/funnelInstrumentation.d.ts +8 -0
- package/build/instrumentation/funnelInstrumentation.d.ts.map +1 -0
- package/build/instrumentation/funnelInstrumentation.js +235 -0
- package/build/instrumentation/funnelInstrumentation.js.map +1 -0
- package/build/instrumentation/performance/constants.d.ts +151 -0
- package/build/instrumentation/performance/constants.d.ts.map +1 -0
- package/build/instrumentation/performance/constants.js +158 -0
- package/build/instrumentation/performance/constants.js.map +1 -0
- package/build/instrumentation/performance/performance-tester.d.ts +55 -0
- package/build/instrumentation/performance/performance-tester.d.ts.map +1 -0
- package/build/instrumentation/performance/performance-tester.js +403 -0
- package/build/instrumentation/performance/performance-tester.js.map +1 -0
- package/build/launcher.d.ts +49 -0
- package/build/launcher.d.ts.map +1 -0
- package/build/launcher.js +1077 -0
- package/build/launcher.js.map +1 -0
- package/build/log4jsAppender.d.ts +2 -0
- package/build/log4jsAppender.d.ts.map +1 -0
- package/build/log4jsAppender.js +20 -0
- package/build/log4jsAppender.js.map +1 -0
- package/build/logPatcher.d.ts +13 -0
- package/build/logPatcher.d.ts.map +1 -0
- package/build/logPatcher.js +39 -0
- package/build/logPatcher.js.map +1 -0
- package/build/logReportingAPI.d.ts +12 -0
- package/build/logReportingAPI.d.ts.map +1 -0
- package/build/logReportingAPI.js +57 -0
- package/build/logReportingAPI.js.map +1 -0
- package/build/reporter.d.ts +40 -0
- package/build/reporter.d.ts.map +1 -0
- package/build/reporter.js +254 -0
- package/build/reporter.js.map +1 -0
- package/build/request-handler.d.ts +19 -0
- package/build/request-handler.d.ts.map +1 -0
- package/build/request-handler.js +78 -0
- package/build/request-handler.js.map +1 -0
- package/build/scripts/accessibility-scripts.d.ts +26 -0
- package/build/scripts/accessibility-scripts.d.ts.map +1 -0
- package/build/scripts/accessibility-scripts.js +91 -0
- package/build/scripts/accessibility-scripts.js.map +1 -0
- package/build/service.d.ts +68 -0
- package/build/service.d.ts.map +1 -0
- package/build/service.js +740 -0
- package/build/service.js.map +1 -0
- package/build/testHub/utils.d.ts +10 -0
- package/build/testHub/utils.d.ts.map +1 -0
- package/build/testHub/utils.js +67 -0
- package/build/testHub/utils.js.map +1 -0
- package/build/testOps/featureStats.d.ts +45 -0
- package/build/testOps/featureStats.d.ts.map +1 -0
- package/build/testOps/featureStats.js +117 -0
- package/build/testOps/featureStats.js.map +1 -0
- package/build/testOps/featureUsage.d.ts +22 -0
- package/build/testOps/featureUsage.d.ts.map +1 -0
- package/build/testOps/featureUsage.js +48 -0
- package/build/testOps/featureUsage.js.map +1 -0
- package/build/testOps/listener.d.ts +40 -0
- package/build/testOps/listener.d.ts.map +1 -0
- package/build/testOps/listener.js +269 -0
- package/build/testOps/listener.js.map +1 -0
- package/build/testOps/requestUtils.d.ts +4 -0
- package/build/testOps/requestUtils.d.ts.map +1 -0
- package/build/testOps/requestUtils.js +41 -0
- package/build/testOps/requestUtils.js.map +1 -0
- package/build/testOps/testOpsConfig.d.ts +11 -0
- package/build/testOps/testOpsConfig.d.ts.map +1 -0
- package/build/testOps/testOpsConfig.js +20 -0
- package/build/testOps/testOpsConfig.js.map +1 -0
- package/build/testOps/usageStats.d.ts +404 -0
- package/build/testOps/usageStats.d.ts.map +1 -0
- package/build/testOps/usageStats.js +115 -0
- package/build/testOps/usageStats.js.map +1 -0
- package/build/testorchestration/apply-orchestration.d.ts +7 -0
- package/build/testorchestration/apply-orchestration.d.ts.map +1 -0
- package/build/testorchestration/apply-orchestration.js +43 -0
- package/build/testorchestration/apply-orchestration.js.map +1 -0
- package/build/testorchestration/helpers.d.ts +20 -0
- package/build/testorchestration/helpers.d.ts.map +1 -0
- package/build/testorchestration/helpers.js +413 -0
- package/build/testorchestration/helpers.js.map +1 -0
- package/build/testorchestration/request-utils.d.ts +23 -0
- package/build/testorchestration/request-utils.d.ts.map +1 -0
- package/build/testorchestration/request-utils.js +82 -0
- package/build/testorchestration/request-utils.js.map +1 -0
- package/build/testorchestration/test-ordering-server.d.ts +33 -0
- package/build/testorchestration/test-ordering-server.d.ts.map +1 -0
- package/build/testorchestration/test-ordering-server.js +169 -0
- package/build/testorchestration/test-ordering-server.js.map +1 -0
- package/build/testorchestration/testorcherstrationhandler.d.ts +50 -0
- package/build/testorchestration/testorcherstrationhandler.d.ts.map +1 -0
- package/build/testorchestration/testorcherstrationhandler.js +134 -0
- package/build/testorchestration/testorcherstrationhandler.js.map +1 -0
- package/build/testorchestration/testorcherstrationutils.d.ts +86 -0
- package/build/testorchestration/testorcherstrationutils.d.ts.map +1 -0
- package/build/testorchestration/testorcherstrationutils.js +380 -0
- package/build/testorchestration/testorcherstrationutils.js.map +1 -0
- package/build/types.d.ts +413 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/build/util.d.ts +241 -0
- package/build/util.d.ts.map +1 -0
- package/build/util.js +1665 -0
- package/build/util.js.map +1 -0
- package/package.json +96 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages-accessibility.proto +71 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages-ai.proto +48 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages-observability.proto +39 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages-percy.proto +10 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages-testhub.proto +10 -0
- package/src/proto/browserstack/sdk/v1/sdk-messages.proto +276 -0
- package/src/proto/browserstack/sdk/v1/sdk.proto +41 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import AutomationFramework from './automationFramework.js';
|
|
2
|
+
import { AutomationFrameworkState } from '../states/automationFrameworkState.js';
|
|
3
|
+
import { CLIUtils } from '../cliUtils.js';
|
|
4
|
+
import TrackedInstance from '../instances/trackedInstance.js';
|
|
5
|
+
import AutomationFrameworkInstance from '../instances/automationFrameworkInstance.js';
|
|
6
|
+
import { BStackLogger as logger } from '../cliLogger.js';
|
|
7
|
+
/**
|
|
8
|
+
* WebdriverIO Framework class
|
|
9
|
+
*/
|
|
10
|
+
export default class WdioAutomationFramework extends AutomationFramework {
|
|
11
|
+
constructor(automationFrameworkName, automationFrameworkVersion) {
|
|
12
|
+
super(automationFrameworkName, automationFrameworkVersion);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Find instance and track any state for the automation framework
|
|
16
|
+
* @param {*} automationFrameworkState
|
|
17
|
+
* @param {*} hookState
|
|
18
|
+
* @param {*} args
|
|
19
|
+
*/
|
|
20
|
+
async trackEvent(automationFrameworkState, hookState, args = {}) {
|
|
21
|
+
logger.info(`trackEvent: automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
|
|
22
|
+
await super.trackEvent(automationFrameworkState, hookState, args);
|
|
23
|
+
const instance = this.resolveInstance(automationFrameworkState, hookState, args);
|
|
24
|
+
if (instance === null) {
|
|
25
|
+
logger.error(`trackEvent: instance not found for automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
args.instance = instance;
|
|
29
|
+
await this.runHooks(instance, automationFrameworkState, hookState, args);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve instance for the automation framework
|
|
33
|
+
* @param {*} automationFrameworkState
|
|
34
|
+
* @param {*} hookState
|
|
35
|
+
* @param {*} args
|
|
36
|
+
* @returns instance
|
|
37
|
+
*/
|
|
38
|
+
resolveInstance(automationFrameworkState, hookState, args = {}) {
|
|
39
|
+
let instance = null;
|
|
40
|
+
logger.info(`resolveInstance: resolving instance for automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
|
|
41
|
+
if (automationFrameworkState === AutomationFrameworkState.CREATE || automationFrameworkState === AutomationFrameworkState.NONE) {
|
|
42
|
+
this.trackWebdriverIOInstance(automationFrameworkState, args);
|
|
43
|
+
}
|
|
44
|
+
instance = AutomationFramework.getTrackedInstance();
|
|
45
|
+
return instance;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create instance for WebdriverIO
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*/
|
|
51
|
+
trackWebdriverIOInstance(automationFrameworkState, args = {}) {
|
|
52
|
+
if (
|
|
53
|
+
// !args.browser &&
|
|
54
|
+
AutomationFramework.getTrackedInstance()) {
|
|
55
|
+
logger.info('trackWebdriverIOInstance: instance already exists');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const target = CLIUtils.getCurrentInstanceName();
|
|
59
|
+
const trackedContext = TrackedInstance.createContext(target);
|
|
60
|
+
let instance = null;
|
|
61
|
+
logger.info(`trackWebdriverIOInstance: created instance for target=${target}, state=${automationFrameworkState}, args=${args}`);
|
|
62
|
+
instance = new AutomationFrameworkInstance(trackedContext, this.getAutomationFrameworkName(), this.getAutomationFrameworkVersion(), automationFrameworkState);
|
|
63
|
+
AutomationFramework.setTrackedInstance(trackedContext, instance);
|
|
64
|
+
logger.info(`trackWebdriverIOInstance: saved instance contextId=${trackedContext.getId()} target=${target}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=wdioAutomationFramework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wdioAutomationFramework.js","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioAutomationFramework.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,2BAA2B,MAAM,6CAA6C,CAAA;AACrF,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,mBAAmB;IAEpE,YAAY,uBAA+B,EAAE,0BAAkC;QAC3E,KAAK,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAA;IAC9D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,wBAA+B,EAAE,SAAgB,EAAE,OAAgC,EAAE;QAClG,MAAM,CAAC,IAAI,CAAC,wCAAwC,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;QACtG,MAAM,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,+DAA+D,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;YAC9H,OAAM;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,wBAA+B,EAAE,SAAgB,EAAE,OAAgC,EAAE;QACjG,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,oEAAoE,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;QAClI,IAAI,wBAAwB,KAAK,wBAAwB,CAAC,MAAM,IAAI,wBAAwB,KAAK,wBAAwB,CAAC,IAAI,EAAE,CAAC;YAC7H,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;QACjE,CAAC;QAED,QAAQ,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;QACnD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,wBAA+B,EAAE,OAAgC,EAAE;QACxF;QACI,mBAAmB;QACnB,mBAAmB,CAAC,kBAAkB,EAAE,EAC1C,CAAC;YACC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;YAChE,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAA;QAChD,MAAM,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5D,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,yDAAyD,MAAM,WAAW,wBAAwB,UAAU,IAAI,EAAE,CAAC,CAAA;QAE/H,QAAQ,GAAG,IAAI,2BAA2B,CACtC,cAAc,EACd,IAAI,CAAC,0BAA0B,EAAE,EACjC,IAAI,CAAC,6BAA6B,EAAE,EACpC,wBAAwB,CAC3B,CAAA;QAED,mBAAmB,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAChE,MAAM,CAAC,IAAI,CAAC,sDAAsD,cAAc,CAAC,KAAK,EAAE,WAAW,MAAM,EAAE,CAAC,CAAA;IAChH,CAAC;CACJ"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import TestFramework from './testFramework.js';
|
|
2
|
+
import TestFrameworkInstance from '../instances/testFrameworkInstance.js';
|
|
3
|
+
import type { Frameworks } from '@wdio/types';
|
|
4
|
+
export default class WdioMochaTestFramework extends TestFramework {
|
|
5
|
+
static KEY_HOOK_LAST_STARTED: string;
|
|
6
|
+
static KEY_HOOK_LAST_FINISHED: string;
|
|
7
|
+
/**
|
|
8
|
+
* Constructor for the TestFramework
|
|
9
|
+
* @param {Array} testFrameworks - List of Test frameworks
|
|
10
|
+
* @param {Map} testFrameworkVersions - Name of the Test frameworks
|
|
11
|
+
* @param {string} binSessionId - BinSessionId
|
|
12
|
+
*/
|
|
13
|
+
constructor(testFrameworks: string[], testFrameworkVersions: Record<string, string>, binSessionId: string);
|
|
14
|
+
/**
|
|
15
|
+
* Find instance and track any state for the test framework
|
|
16
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
17
|
+
* @param {HookState} hookState
|
|
18
|
+
* @param {*} args
|
|
19
|
+
*/
|
|
20
|
+
trackEvent(testFrameworkState: State, hookState: State, args?: Record<string, unknown>): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve instance for the test framework
|
|
23
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
24
|
+
* @param {HookState} hookState
|
|
25
|
+
* @param {*} args
|
|
26
|
+
* @returns {TestFrameworkInstance}
|
|
27
|
+
*/
|
|
28
|
+
resolveInstance(testFrameworkState: State, hookState: State, args?: Record<string, unknown>): TestFrameworkInstance | null;
|
|
29
|
+
/**
|
|
30
|
+
* Track WebdriverIO instance
|
|
31
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
32
|
+
* @param {*} args
|
|
33
|
+
*/
|
|
34
|
+
trackWdioMochaInstance(testFrameworkState: State, args: Record<string, unknown>): void;
|
|
35
|
+
getTestData(instance: TestFrameworkInstance, test: Frameworks.Test): Promise<Record<string, unknown>>;
|
|
36
|
+
loadTestResult(instance: TestFrameworkInstance, args: Record<string, unknown>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Load log entries into the test framework instance.
|
|
39
|
+
* @param instance TestFrameworkInstance
|
|
40
|
+
* @param testFrameworkState TestFrameworkState
|
|
41
|
+
* @param hookState HookState
|
|
42
|
+
* @param args Additional arguments (level, message, etc.)
|
|
43
|
+
*/
|
|
44
|
+
loadLogEntries(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State, logEntry: Record<string, unknown>): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get the last active hook for the given instance and hook key.
|
|
47
|
+
* @param instance TestFrameworkInstance
|
|
48
|
+
* @param lastHookKey string
|
|
49
|
+
* @returns Record<string, unknown> | null
|
|
50
|
+
*/
|
|
51
|
+
static lastActiveHook(instance: TestFrameworkInstance, lastHookKey: string): Record<string, unknown> | null;
|
|
52
|
+
/**
|
|
53
|
+
* Clear logs for a specific hook.
|
|
54
|
+
* @param instance TestFrameworkInstance
|
|
55
|
+
* @param lastHookKey string
|
|
56
|
+
*/
|
|
57
|
+
static clearHookLogs(instance: TestFrameworkInstance, lastHookKey: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Clear all logs for the given instance, test framework state, and hook state.
|
|
60
|
+
* @param instance TestFrameworkInstance
|
|
61
|
+
* @param testFrameworkState TestFrameworkState
|
|
62
|
+
* @param hookState HookState
|
|
63
|
+
*/
|
|
64
|
+
static clearLogs(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get all log entries for the given instance, test framework state, and hook state.
|
|
67
|
+
* @param instance TestFrameworkInstance
|
|
68
|
+
* @param testFrameworkState TestFrameworkState
|
|
69
|
+
* @param hookState HookState
|
|
70
|
+
* @returns unknown[]
|
|
71
|
+
*/
|
|
72
|
+
static getLogEntries(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State): unknown[];
|
|
73
|
+
/**
|
|
74
|
+
* Track hook events for the test framework.
|
|
75
|
+
* @param instance TestFrameworkInstance
|
|
76
|
+
* @param testFrameworkState TestFrameworkState
|
|
77
|
+
* @param hookState HookState
|
|
78
|
+
* @param args Additional arguments (e.g., test result, test method)
|
|
79
|
+
*/
|
|
80
|
+
trackHookEvents(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State, args: Record<string, unknown>): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=wdioMochaTestFramework.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wdioMochaTestFramework.d.ts","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioMochaTestFramework.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAG9C,OAAO,qBAAqB,MAAM,uCAAuC,CAAA;AAKzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa;IAC7D,MAAM,CAAC,qBAAqB,SAA2B;IACvD,MAAM,CAAC,sBAAsB,SAA4B;IAEzD;;;;;IAKA;gBACY,cAAc,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM;IAIzG;;;;;IAKA;IACM,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAoDhG;;;;;;KAMC;IACD,eAAe,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,qBAAqB,GAAC,IAAI;IAa5H;;;;KAIC;IACD,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqCzE,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAmBxE,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwB7E;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA+B9H;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqB3G;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM;IAOzE;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;IAY7F;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE;IAY7G;;;;;;OAMG;IACG,eAAe,CACjB,QAAQ,EAAE,qBAAqB,EAC/B,kBAAkB,EAAE,KAAK,EACzB,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAwDpC"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import TestFramework from './testFramework.js';
|
|
4
|
+
import { TestFrameworkState } from '../states/testFrameworkState.js';
|
|
5
|
+
import { HookState } from '../states/hookState.js';
|
|
6
|
+
import TestFrameworkInstance from '../instances/testFrameworkInstance.js';
|
|
7
|
+
import { CLIUtils } from '../cliUtils.js';
|
|
8
|
+
import TrackedInstance from '../instances/trackedInstance.js';
|
|
9
|
+
import { TestFrameworkConstants } from './constants/testFrameworkConstants.js';
|
|
10
|
+
import { BStackLogger as logger } from '../cliLogger.js';
|
|
11
|
+
import { getGitMetaData, getMochaTestHierarchy, getUniqueIdentifier, isUndefined, removeAnsiColors } from '../../util.js';
|
|
12
|
+
import { TEST_ANALYTICS_ID } from '../../constants.js';
|
|
13
|
+
export default class WdioMochaTestFramework extends TestFramework {
|
|
14
|
+
static KEY_HOOK_LAST_STARTED = 'test_hook_last_started';
|
|
15
|
+
static KEY_HOOK_LAST_FINISHED = 'test_hook_last_finished';
|
|
16
|
+
/**
|
|
17
|
+
* Constructor for the TestFramework
|
|
18
|
+
* @param {Array} testFrameworks - List of Test frameworks
|
|
19
|
+
* @param {Map} testFrameworkVersions - Name of the Test frameworks
|
|
20
|
+
* @param {string} binSessionId - BinSessionId
|
|
21
|
+
*/
|
|
22
|
+
constructor(testFrameworks, testFrameworkVersions, binSessionId) {
|
|
23
|
+
super(testFrameworks, testFrameworkVersions, binSessionId);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Find instance and track any state for the test framework
|
|
27
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
28
|
+
* @param {HookState} hookState
|
|
29
|
+
* @param {*} args
|
|
30
|
+
*/
|
|
31
|
+
async trackEvent(testFrameworkState, hookState, args = {}) {
|
|
32
|
+
logger.info(`trackEvent: testFrameworkState=${testFrameworkState} hookState=${hookState}`);
|
|
33
|
+
await super.trackEvent(testFrameworkState, hookState, args);
|
|
34
|
+
const instance = this.resolveInstance(testFrameworkState, hookState, args);
|
|
35
|
+
if (instance === null) {
|
|
36
|
+
logger.error(`trackEvent: instance not found for testFrameworkState=${testFrameworkState} hookState=${hookState}`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
if (CLIUtils.matchHookRegex(testFrameworkState.toString()) && hookState === HookState.PRE) {
|
|
41
|
+
instance.updateMultipleEntries({
|
|
42
|
+
[TestFrameworkConstants.KEY_HOOK_ID]: uuidv4(),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (!TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_ID) && hookState === HookState.PRE && testFrameworkState === TestFrameworkState.TEST) {
|
|
46
|
+
const test = args.test;
|
|
47
|
+
const testData = await this.getTestData(instance, test);
|
|
48
|
+
logger.info(`trackEvent: instanceData=${JSON.stringify(Object.fromEntries(instance.getAllData()))}`);
|
|
49
|
+
instance.updateMultipleEntries(testData);
|
|
50
|
+
}
|
|
51
|
+
if (testFrameworkState === TestFrameworkState.TEST) {
|
|
52
|
+
if (hookState === HookState.PRE) {
|
|
53
|
+
instance.updateMultipleEntries({
|
|
54
|
+
[TestFrameworkConstants.KEY_TEST_STARTED_AT]: new Date().toISOString(),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else if (hookState === HookState.POST) {
|
|
58
|
+
instance.updateMultipleEntries({
|
|
59
|
+
[TestFrameworkConstants.KEY_TEST_ENDED_AT]: new Date().toISOString(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (testFrameworkState === TestFrameworkState.LOG) {
|
|
64
|
+
const logEntry = args.logEntry;
|
|
65
|
+
logEntry.uuid = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID);
|
|
66
|
+
this.loadLogEntries(instance, testFrameworkState, hookState, logEntry);
|
|
67
|
+
}
|
|
68
|
+
else if (testFrameworkState === TestFrameworkState.LOG_REPORT && hookState === HookState.POST) {
|
|
69
|
+
logger.info('trackEvent: load test results');
|
|
70
|
+
this.loadTestResult(instance, args);
|
|
71
|
+
}
|
|
72
|
+
await this.trackHookEvents(instance, testFrameworkState, hookState, args);
|
|
73
|
+
logger.debug(`trackEvent: tracked instance data=${JSON.stringify(Object.fromEntries(instance.getAllData()))}`);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
logger.error(`trackEvent: Error in tracking events: ${error} hookState=${hookState} testFrameworkState=${testFrameworkState}`);
|
|
77
|
+
}
|
|
78
|
+
args.instance = instance;
|
|
79
|
+
await this.runHooks(instance, testFrameworkState, hookState, args);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Resolve instance for the test framework
|
|
83
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
84
|
+
* @param {HookState} hookState
|
|
85
|
+
* @param {*} args
|
|
86
|
+
* @returns {TestFrameworkInstance}
|
|
87
|
+
*/
|
|
88
|
+
resolveInstance(testFrameworkState, hookState, args = {}) {
|
|
89
|
+
let instance = null;
|
|
90
|
+
logger.info(`resolveInstance: resolving instance for testFrameworkState=${testFrameworkState} hookState=${hookState}`);
|
|
91
|
+
if (testFrameworkState === TestFrameworkState.INIT_TEST || testFrameworkState === TestFrameworkState.NONE) {
|
|
92
|
+
this.trackWdioMochaInstance(testFrameworkState, args);
|
|
93
|
+
}
|
|
94
|
+
instance = TestFramework.getTrackedInstance();
|
|
95
|
+
this.updateInstanceState(instance, testFrameworkState, hookState);
|
|
96
|
+
return instance;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Track WebdriverIO instance
|
|
100
|
+
* @param {TestFrameworkState} testFrameworkState
|
|
101
|
+
* @param {*} args
|
|
102
|
+
*/
|
|
103
|
+
trackWdioMochaInstance(testFrameworkState, args) {
|
|
104
|
+
const target = CLIUtils.getCurrentInstanceName();
|
|
105
|
+
const trackedContext = TrackedInstance.createContext(target);
|
|
106
|
+
let instance = null;
|
|
107
|
+
logger.info(`trackWdioMochaInstance: created instance for target=${target}, state=${testFrameworkState}, args=${args}`);
|
|
108
|
+
instance = new TestFrameworkInstance(trackedContext, this.getTestFrameworks(), this.getTestFrameworksVersions(), testFrameworkState, HookState.NONE);
|
|
109
|
+
const frameworkName = this.getTestFrameworks()[0];
|
|
110
|
+
const instanceEntries = {
|
|
111
|
+
[TestFrameworkConstants.KEY_TEST_FRAMEWORK_NAME]: frameworkName,
|
|
112
|
+
[TestFrameworkConstants.KEY_TEST_FRAMEWORK_VERSION]: this.getTestFrameworksVersions()[frameworkName],
|
|
113
|
+
[TestFrameworkConstants.KEY_TEST_LOGS]: [],
|
|
114
|
+
[TestFrameworkConstants.KEY_HOOKS_FINISHED]: new Map(),
|
|
115
|
+
[TestFrameworkConstants.KEY_HOOKS_STARTED]: new Map(),
|
|
116
|
+
[TestFrameworkConstants.KEY_TEST_UUID]: uuidv4(),
|
|
117
|
+
[TestFrameworkConstants.KEY_TEST_RESULT]: TestFrameworkConstants.DEFAULT_TEST_RESULT,
|
|
118
|
+
// TODO[CLI]: Add customRerunParam
|
|
119
|
+
// [TestFrameworkConstants.KEY_TEST_RERUN_NAME]:
|
|
120
|
+
};
|
|
121
|
+
// Setting test uuid in env variable for A11y and App a11y scans
|
|
122
|
+
process.env[TEST_ANALYTICS_ID] = instanceEntries[TestFrameworkConstants.KEY_TEST_UUID];
|
|
123
|
+
instance.updateMultipleEntries(instanceEntries);
|
|
124
|
+
TestFramework.setTrackedInstance(trackedContext, instance);
|
|
125
|
+
logger.info(`trackWdioMochaInstance: saved instance contextId=${trackedContext.getId()} target=${target}`);
|
|
126
|
+
}
|
|
127
|
+
async getTestData(instance, test) {
|
|
128
|
+
const framework = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_FRAMEWORK_NAME);
|
|
129
|
+
const fullTitle = getUniqueIdentifier(test, framework);
|
|
130
|
+
const gitConfig = await getGitMetaData();
|
|
131
|
+
const filename = test.file; // || this._suiteFile
|
|
132
|
+
const testData = {
|
|
133
|
+
[TestFrameworkConstants.KEY_TEST_ID]: getUniqueIdentifier(test, framework),
|
|
134
|
+
[TestFrameworkConstants.KEY_TEST_NAME]: test.title || test.description,
|
|
135
|
+
[TestFrameworkConstants.KEY_TEST_CODE]: test.body || '',
|
|
136
|
+
[TestFrameworkConstants.KEY_TEST_FILE_PATH]: (gitConfig?.root && filename) ? path.relative(gitConfig.root, filename) : undefined,
|
|
137
|
+
[TestFrameworkConstants.KEY_TEST_LOCATION]: filename ? path.relative(process.cwd(), filename) : undefined,
|
|
138
|
+
[TestFrameworkConstants.KEY_TEST_SCOPE]: fullTitle,
|
|
139
|
+
[TestFrameworkConstants.KEY_TEST_SCOPES]: getMochaTestHierarchy(test),
|
|
140
|
+
};
|
|
141
|
+
return testData;
|
|
142
|
+
}
|
|
143
|
+
loadTestResult(instance, args) {
|
|
144
|
+
const results = args.result;
|
|
145
|
+
const { error, passed } = results;
|
|
146
|
+
let result = 'passed';
|
|
147
|
+
let failure = null;
|
|
148
|
+
let failureReason = null;
|
|
149
|
+
let failureType = null;
|
|
150
|
+
if (!passed) {
|
|
151
|
+
result = (error && error.message && error.message.includes('sync skip; aborting execution')) ? 'ignore' : 'failed';
|
|
152
|
+
if (error && result !== 'skipped') {
|
|
153
|
+
failure = [{ backtrace: [removeAnsiColors(error.message), removeAnsiColors(error.stack || '')] }]; // add all errors here
|
|
154
|
+
failureReason = removeAnsiColors(error.message);
|
|
155
|
+
failureType = isUndefined(error.message) ? null : error.message.toString().match(/AssertionError/) ? 'AssertionError' : 'UnhandledError'; //verify if this is working
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
instance.updateMultipleEntries({
|
|
159
|
+
[TestFrameworkConstants.KEY_TEST_RESULT]: result,
|
|
160
|
+
[TestFrameworkConstants.KEY_TEST_FAILURE]: failure,
|
|
161
|
+
[TestFrameworkConstants.KEY_TEST_FAILURE_REASON]: failureReason,
|
|
162
|
+
[TestFrameworkConstants.KEY_TEST_FAILURE_TYPE]: failureType,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Load log entries into the test framework instance.
|
|
167
|
+
* @param instance TestFrameworkInstance
|
|
168
|
+
* @param testFrameworkState TestFrameworkState
|
|
169
|
+
* @param hookState HookState
|
|
170
|
+
* @param args Additional arguments (level, message, etc.)
|
|
171
|
+
*/
|
|
172
|
+
loadLogEntries(instance, testFrameworkState, hookState, logEntry) {
|
|
173
|
+
const logRecord = {};
|
|
174
|
+
const { level, message, timestamp, kind } = logEntry;
|
|
175
|
+
if (CLIUtils.matchHookRegex(instance.getCurrentTestState().toString())) {
|
|
176
|
+
logRecord[TestFrameworkConstants.KEY_HOOK_ID] = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID);
|
|
177
|
+
}
|
|
178
|
+
// SDK-6277: honor the incoming log kind (e.g. TEST_SCREENSHOT) so screenshots route correctly
|
|
179
|
+
// on the binary side; default to TEST_LOG (KIND_LOG) for ordinary stdout/console logs.
|
|
180
|
+
logRecord.kind = kind ?? TestFrameworkConstants.KIND_LOG;
|
|
181
|
+
logRecord.message = Buffer.from(message);
|
|
182
|
+
logRecord.level = level;
|
|
183
|
+
logRecord.timestamp = timestamp;
|
|
184
|
+
// Attach to the suitable hook
|
|
185
|
+
const lastActiveHook = WdioMochaTestFramework.lastActiveHook(instance, WdioMochaTestFramework.KEY_HOOK_LAST_STARTED);
|
|
186
|
+
if (lastActiveHook) {
|
|
187
|
+
const hookLogs = lastActiveHook[TestFrameworkConstants.KEY_HOOK_LOGS];
|
|
188
|
+
hookLogs.push(logRecord);
|
|
189
|
+
logger.debug(`hooks after update logs ${TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_STARTED)} ${TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_FINISHED)}`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
// Attach to the test instance
|
|
193
|
+
const entries = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_LOGS);
|
|
194
|
+
entries.push(logRecord);
|
|
195
|
+
instance.updateMultipleEntries({
|
|
196
|
+
[TestFrameworkConstants.KEY_TEST_LOGS]: entries,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get the last active hook for the given instance and hook key.
|
|
201
|
+
* @param instance TestFrameworkInstance
|
|
202
|
+
* @param lastHookKey string
|
|
203
|
+
* @returns Record<string, unknown> | null
|
|
204
|
+
*/
|
|
205
|
+
static lastActiveHook(instance, lastHookKey) {
|
|
206
|
+
const hookStore = lastHookKey === WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED
|
|
207
|
+
? TestFrameworkConstants.KEY_HOOKS_FINISHED
|
|
208
|
+
: TestFrameworkConstants.KEY_HOOKS_STARTED;
|
|
209
|
+
const lastActive = TestFramework.getState(instance, lastHookKey);
|
|
210
|
+
let hooksMap = null;
|
|
211
|
+
if (lastActive) {
|
|
212
|
+
hooksMap = TestFramework.getState(instance, hookStore);
|
|
213
|
+
}
|
|
214
|
+
if (hooksMap && lastActive && hooksMap[lastActive]) {
|
|
215
|
+
const lastHooks = hooksMap[lastActive];
|
|
216
|
+
if (lastHooks.length > 0) {
|
|
217
|
+
return lastHooks[lastHooks.length - 1];
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Clear logs for a specific hook.
|
|
224
|
+
* @param instance TestFrameworkInstance
|
|
225
|
+
* @param lastHookKey string
|
|
226
|
+
*/
|
|
227
|
+
static clearHookLogs(instance, lastHookKey) {
|
|
228
|
+
const hook = this.lastActiveHook(instance, lastHookKey);
|
|
229
|
+
if (hook) {
|
|
230
|
+
hook[TestFrameworkConstants.KEY_HOOK_LOGS] = [];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Clear all logs for the given instance, test framework state, and hook state.
|
|
235
|
+
* @param instance TestFrameworkInstance
|
|
236
|
+
* @param testFrameworkState TestFrameworkState
|
|
237
|
+
* @param hookState HookState
|
|
238
|
+
*/
|
|
239
|
+
static clearLogs(instance, testFrameworkState, hookState) {
|
|
240
|
+
const lastHookKey = hookState === HookState.PRE
|
|
241
|
+
? WdioMochaTestFramework.KEY_HOOK_LAST_STARTED
|
|
242
|
+
: WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED;
|
|
243
|
+
WdioMochaTestFramework.clearHookLogs(instance, lastHookKey);
|
|
244
|
+
instance.updateMultipleEntries({
|
|
245
|
+
[TestFrameworkConstants.KEY_TEST_LOGS]: [],
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get all log entries for the given instance, test framework state, and hook state.
|
|
250
|
+
* @param instance TestFrameworkInstance
|
|
251
|
+
* @param testFrameworkState TestFrameworkState
|
|
252
|
+
* @param hookState HookState
|
|
253
|
+
* @returns unknown[]
|
|
254
|
+
*/
|
|
255
|
+
static getLogEntries(instance, testFrameworkState, hookState) {
|
|
256
|
+
const lastHookKey = hookState === HookState.PRE
|
|
257
|
+
? WdioMochaTestFramework.KEY_HOOK_LAST_STARTED
|
|
258
|
+
: WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED;
|
|
259
|
+
const hook = WdioMochaTestFramework.lastActiveHook(instance, lastHookKey);
|
|
260
|
+
const entries = hook ? hook[TestFrameworkConstants.KEY_HOOK_LOGS] : [];
|
|
261
|
+
const testEntries = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_LOGS);
|
|
262
|
+
return [...entries, ...testEntries];
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Track hook events for the test framework.
|
|
266
|
+
* @param instance TestFrameworkInstance
|
|
267
|
+
* @param testFrameworkState TestFrameworkState
|
|
268
|
+
* @param hookState HookState
|
|
269
|
+
* @param args Additional arguments (e.g., test result, test method)
|
|
270
|
+
*/
|
|
271
|
+
async trackHookEvents(instance, testFrameworkState, hookState, args) {
|
|
272
|
+
const testResult = args.result;
|
|
273
|
+
const test = args.test;
|
|
274
|
+
const key = testFrameworkState.toString();
|
|
275
|
+
const hooksStarted = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_STARTED);
|
|
276
|
+
if (!hooksStarted.has(key)) {
|
|
277
|
+
hooksStarted.set(key, []);
|
|
278
|
+
}
|
|
279
|
+
const hooksFinished = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_FINISHED);
|
|
280
|
+
if (!hooksFinished.has(key)) {
|
|
281
|
+
hooksFinished.set(key, []);
|
|
282
|
+
}
|
|
283
|
+
const updates = {
|
|
284
|
+
[TestFrameworkConstants.KEY_HOOKS_STARTED]: hooksStarted,
|
|
285
|
+
[TestFrameworkConstants.KEY_HOOKS_FINISHED]: hooksFinished,
|
|
286
|
+
};
|
|
287
|
+
if (hookState === HookState.PRE) {
|
|
288
|
+
const gitConfig = await getGitMetaData();
|
|
289
|
+
const filename = test.file;
|
|
290
|
+
const hook = {
|
|
291
|
+
key,
|
|
292
|
+
[TestFrameworkConstants.KEY_HOOK_ID]: TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID) || '',
|
|
293
|
+
[TestFrameworkConstants.KEY_HOOK_RESULT]: TestFrameworkConstants.DEFAULT_HOOK_RESULT,
|
|
294
|
+
[TestFrameworkConstants.KEY_EVENT_STARTED_AT]: new Date().toISOString(),
|
|
295
|
+
[TestFrameworkConstants.KEY_HOOK_LOGS]: [],
|
|
296
|
+
[TestFrameworkConstants.KEY_HOOK_NAME]: test.title || test.description,
|
|
297
|
+
[TestFrameworkConstants.KEY_TEST_FILE_PATH]: (gitConfig?.root && filename) ? path.relative(gitConfig.root, filename) : undefined,
|
|
298
|
+
[TestFrameworkConstants.KEY_TEST_LOCATION]: filename ? path.relative(process.cwd(), filename) : undefined,
|
|
299
|
+
};
|
|
300
|
+
hooksStarted.get(key)?.push(hook);
|
|
301
|
+
updates[WdioMochaTestFramework.KEY_HOOK_LAST_STARTED] = key;
|
|
302
|
+
logger.info(`Hook Started in PRE key = ${key} & hook = ${JSON.stringify(hook)}`);
|
|
303
|
+
}
|
|
304
|
+
else if (hookState === HookState.POST) {
|
|
305
|
+
const hooksList = hooksStarted.get(key) || [];
|
|
306
|
+
logger.info(`Hook List in Post ${JSON.stringify(hooksList)}`);
|
|
307
|
+
if (hooksList.length > 0) {
|
|
308
|
+
const hook = hooksList.pop();
|
|
309
|
+
const result = testResult.status;
|
|
310
|
+
if (result !== TestFrameworkConstants.DEFAULT_HOOK_RESULT) {
|
|
311
|
+
hook[TestFrameworkConstants.KEY_HOOK_RESULT] = result;
|
|
312
|
+
}
|
|
313
|
+
hook[TestFrameworkConstants.KEY_EVENT_ENDED_AT] = new Date().toISOString();
|
|
314
|
+
hooksFinished.get(key)?.push(hook);
|
|
315
|
+
updates[WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED] = key;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
instance.updateMultipleEntries(updates);
|
|
319
|
+
logger.info(`trackHookEvents: hook state=${key}.${hookState}, hooks started=${JSON.stringify(hooksStarted)}, hooks finished=${JSON.stringify(hooksFinished)}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=wdioMochaTestFramework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wdioMochaTestFramework.js","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioMochaTestFramework.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { SDKClient } from '../grpc/index.js';
|
|
2
|
+
import type { TestFrameworkEventRequest, TestSessionEventRequest, LogCreatedEventRequest, DriverInitRequest, FetchDriverExecuteParamsEventRequest, ConnectBinSessionResponse, StartBinSessionResponse, TestFrameworkEventResponse, TestSessionEventResponse, LogCreatedEventResponse, DriverInitResponse, FetchDriverExecuteParamsEventResponse } from '../grpc/index.js';
|
|
3
|
+
import { BStackLogger } from './cliLogger.js';
|
|
4
|
+
/**
|
|
5
|
+
* GrpcClient - Singleton class for managing gRPC client connections
|
|
6
|
+
*
|
|
7
|
+
* This class uses the singleton pattern to ensure only one gRPC client instance exists
|
|
8
|
+
* throughout the application lifecycle.
|
|
9
|
+
*/
|
|
10
|
+
export declare class GrpcClient {
|
|
11
|
+
#private;
|
|
12
|
+
binSessionId: string | undefined;
|
|
13
|
+
listenAddress: string | undefined;
|
|
14
|
+
channel: any | null;
|
|
15
|
+
client: SDKClient | null;
|
|
16
|
+
logger: typeof BStackLogger;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Get the singleton instance of GrpcClient
|
|
20
|
+
* @returns {GrpcClient} The singleton instance
|
|
21
|
+
*/
|
|
22
|
+
static getInstance(): GrpcClient;
|
|
23
|
+
/**
|
|
24
|
+
* Helper method to get client worker ID from execution context or current context.
|
|
25
|
+
* This provides a consistent way to extract worker identification across all gRPC calls.
|
|
26
|
+
*
|
|
27
|
+
* @param executionContext - Optional execution context with threadId and processId
|
|
28
|
+
* @returns Worker ID string in format "threadId-processId"
|
|
29
|
+
*/
|
|
30
|
+
private getClientWorkerIdFromContext;
|
|
31
|
+
/**
|
|
32
|
+
* Initialize the gRPC client connection
|
|
33
|
+
* @param {string} host The gRPC server host
|
|
34
|
+
* @param {number} port The gRPC server port
|
|
35
|
+
*/
|
|
36
|
+
init(params: Record<string, string>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Connect to the gRPC server
|
|
39
|
+
* @returns {void}
|
|
40
|
+
*/
|
|
41
|
+
connect(): void;
|
|
42
|
+
startBinSession(wdioConfig: string): Promise<StartBinSessionResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* Connect to the bin session
|
|
45
|
+
* @returns {Promise<Object>} The response from the gRPC call
|
|
46
|
+
*/
|
|
47
|
+
connectBinSession(): Promise<ConnectBinSessionResponse>;
|
|
48
|
+
/**
|
|
49
|
+
* Stop the bin session
|
|
50
|
+
* @returns {Promise<void>}
|
|
51
|
+
* @private
|
|
52
|
+
*/
|
|
53
|
+
stopBinSession(): Promise<unknown>;
|
|
54
|
+
testSessionEvent(data: Omit<TestSessionEventRequest, 'binSessionId'>): Promise<TestSessionEventResponse | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* Send TestFrameworkEvent
|
|
58
|
+
*/
|
|
59
|
+
testFrameworkEvent(data: Omit<TestFrameworkEventRequest, 'binSessionId'>): Promise<TestFrameworkEventResponse | undefined>;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* Send driverInitEvent
|
|
63
|
+
*/
|
|
64
|
+
driverInitEvent(data: Omit<DriverInitRequest, 'binSessionId'>): Promise<DriverInitResponse>;
|
|
65
|
+
logCreatedEvent(data: Omit<LogCreatedEventRequest, 'binSessionId'>): Promise<LogCreatedEventResponse | undefined>;
|
|
66
|
+
fetchDriverExecuteParamsEvent(data: Omit<FetchDriverExecuteParamsEventRequest, 'binSessionId'>): Promise<FetchDriverExecuteParamsEventResponse>;
|
|
67
|
+
/**
|
|
68
|
+
* Send TestOrchestration request to get ordered test files
|
|
69
|
+
* @param {string[]} testFiles - Array of test file paths
|
|
70
|
+
* @param {string} orchestrationStrategy - The orchestration strategy to use
|
|
71
|
+
* @param {string} orchestrationMetadata - Additional metadata for orchestration
|
|
72
|
+
* @returns {Promise<string[]|null>} Array of ordered test files or null if failed
|
|
73
|
+
*/
|
|
74
|
+
testOrchestrationSession(testFiles: string[], orchestrationStrategy: string, orchestrationMetadata: string): Promise<string[] | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Get the gRPC channel
|
|
77
|
+
* @returns {grpc.Channel} The gRPC channel
|
|
78
|
+
*/
|
|
79
|
+
getClient(): SDKClient | null;
|
|
80
|
+
/**
|
|
81
|
+
* Get the gRPC channel
|
|
82
|
+
* @returns {grpc.Channel} The gRPC channel
|
|
83
|
+
*/
|
|
84
|
+
getChannel(): any;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=grpcClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpcClient.d.ts","sourceRoot":"","sources":["../../src/cli/grpcClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,SAAS,EAeZ,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAGR,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,oCAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,qCAAqC,EAGxC,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C;;;;;GAKG;AACH,qBAAa,UAAU;;IAGnB,YAAY,EAAE,MAAM,GAAC,SAAS,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAC,SAAS,CAAA;IAC/B,OAAO,EAAE,GAAG,GAAC,IAAI,CAAO;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,MAAM,sBAAe;;IAIrB;;;OAGG;IACH,MAAM,CAAC,WAAW;IAOlB;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAIpC;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAcnC;;;OAGG;IACH,OAAO;IAsCD,eAAe,CAAC,UAAU,EAAE,MAAM;IAuDxC;;;OAGG;IACG,iBAAiB;IAoCvB;;;;OAIG;IACG,cAAc;IAwCd,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC;IA6D1E;;;OAGG;IAEG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,cAAc,CAAC;IA8D9E;;;OAGG;IAEG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC;IAkC7D,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC;IA8DlE,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,oCAAoC,EAAE,cAAc,CAAC;IAmCpG;;;;;;OAMG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IA4C3I;;;OAGG;IACH,SAAS;IAIT;;;OAGG;IACH,UAAU;CAGb"}
|