@wdio/browserstack-service 7.30.3 → 7.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/reporter.js CHANGED
@@ -3,52 +3,160 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_path_1 = __importDefault(require("node:path"));
7
+ const node_url_1 = __importDefault(require("node:url"));
6
8
  const reporter_1 = __importDefault(require("@wdio/reporter"));
7
9
  const uuid_1 = require("uuid");
10
+ const logger_1 = __importDefault(require("@wdio/logger"));
8
11
  const util_1 = require("./util");
9
12
  const request_handler_1 = __importDefault(require("./request-handler"));
10
- class TestReporter extends reporter_1.default {
13
+ const log = (0, logger_1.default)('@wdio/browserstack-service');
14
+ class _TestReporter extends reporter_1.default {
11
15
  constructor() {
12
16
  super(...arguments);
13
17
  this._capabilities = {};
14
18
  this._observability = true;
15
19
  this._requestQueueHandler = request_handler_1.default.getInstance();
20
+ this._suites = [];
21
+ this._gitConfigured = false;
16
22
  }
17
- onRunnerStart(runnerStats) {
23
+ async onRunnerStart(runnerStats) {
18
24
  this._capabilities = runnerStats.capabilities;
19
25
  this._config = runnerStats.config;
20
26
  this._sessionId = runnerStats.sessionId;
21
27
  if (typeof this._config.testObservability !== 'undefined')
22
28
  this._observability = this._config.testObservability;
29
+ await this.configureGit();
30
+ }
31
+ async configureGit() {
32
+ if (this._gitConfigured) {
33
+ return;
34
+ }
35
+ const gitMeta = await (0, util_1.getGitMetaData)();
36
+ if (gitMeta) {
37
+ this._gitConfigPath = gitMeta.root;
38
+ }
39
+ this._gitConfigured = true;
40
+ }
41
+ static getTests() {
42
+ return _TestReporter._tests;
23
43
  }
24
44
  onSuiteStart(suiteStats) {
25
- this._suiteName = suiteStats.file;
45
+ var _a;
46
+ let filename = suiteStats.file;
47
+ if (((_a = this._config) === null || _a === void 0 ? void 0 : _a.framework) == 'jasmine') {
48
+ try {
49
+ if (suiteStats.file.startsWith('file://')) {
50
+ filename = node_url_1.default.fileURLToPath(suiteStats.file);
51
+ }
52
+ if (filename === 'unknown spec file') {
53
+ // Sometimes in cases where a file has two suites. Then the file name be unknown for second suite, so getting the filename from first suite
54
+ filename = this._suiteName || suiteStats.file;
55
+ }
56
+ }
57
+ catch (e) {
58
+ log.debug('Error in decoding file name of suite');
59
+ }
60
+ }
61
+ this._suiteName = filename;
62
+ this._suites.push(suiteStats);
26
63
  }
27
- async onTestSkip(testStats) {
28
- var _a, _b, _c, _d, _e;
29
- // cucumber steps call this method. We don't want step skipped state so skip for cucumber
30
- const framework = (_a = this._config) === null || _a === void 0 ? void 0 : _a.framework;
31
- if (this._observability && framework !== 'cucumber') {
32
- let testData = {
33
- uuid: (0, uuid_1.v4)(),
34
- type: testStats.type,
35
- name: testStats.title,
36
- body: {
37
- lang: 'webdriverio',
38
- code: null
39
- },
40
- scope: testStats.fullTitle,
41
- scopes: (0, util_1.getHierarchy)(testStats.fullTitle),
42
- identifier: testStats.fullTitle,
43
- file_name: this._suiteName,
44
- location: this._suiteName,
45
- started_at: (new Date()).toISOString(),
46
- framework: framework,
47
- finished_at: (new Date()).toISOString(),
48
- duration_in_ms: testStats._duration,
49
- retries: { limit: 0, attempts: 0 },
50
- result: testStats.state,
64
+ onSuiteEnd() {
65
+ this._suites.pop();
66
+ }
67
+ needToSendData(testType, event) {
68
+ var _a;
69
+ if (!this._observability)
70
+ return false;
71
+ switch ((_a = this._config) === null || _a === void 0 ? void 0 : _a.framework) {
72
+ case 'mocha':
73
+ return event === 'skip';
74
+ case 'cucumber':
75
+ return false;
76
+ case 'jasmine':
77
+ return event !== 'skip';
78
+ default:
79
+ return false;
80
+ }
81
+ }
82
+ async onTestEnd(testStats) {
83
+ if (!this.needToSendData('test', 'end'))
84
+ return;
85
+ if (testStats.fullTitle === '<unknown test>')
86
+ return;
87
+ testStats.end || (testStats.end = new Date());
88
+ await this.sendTestRunEvent(testStats, 'TestRunFinished');
89
+ }
90
+ async onTestStart(testStats) {
91
+ if (!this.needToSendData('test', 'start'))
92
+ return;
93
+ if (testStats.fullTitle === '<unknown test>')
94
+ return;
95
+ _TestReporter._tests[testStats.fullTitle] = {
96
+ uuid: (0, uuid_1.v4)(),
97
+ };
98
+ await this.sendTestRunEvent(testStats, 'TestRunStarted');
99
+ }
100
+ async onHookStart(hookStats) {
101
+ if (!this.needToSendData('hook', 'start')) {
102
+ return;
103
+ }
104
+ const identifier = this.getHookIdentifier(hookStats);
105
+ const hookId = (0, uuid_1.v4)();
106
+ _TestReporter._tests[identifier] = {
107
+ uuid: hookId,
108
+ startedAt: (new Date()).toISOString()
109
+ };
110
+ await this.sendTestRunEvent(hookStats, 'HookRunStarted');
111
+ }
112
+ async onHookEnd(hookStats) {
113
+ const identifier = this.getHookIdentifier(hookStats);
114
+ if (_TestReporter._tests[identifier]) {
115
+ _TestReporter._tests[identifier].finishedAt = (new Date()).toISOString();
116
+ }
117
+ else {
118
+ _TestReporter._tests[identifier] = {
119
+ finishedAt: (new Date()).toISOString()
51
120
  };
121
+ }
122
+ await this.sendTestRunEvent(hookStats, 'HookRunFinished');
123
+ }
124
+ getHookIdentifier(hookStats) {
125
+ var _a;
126
+ return `${hookStats.title} for ${(_a = this._suites.at(-1)) === null || _a === void 0 ? void 0 : _a.title}`;
127
+ }
128
+ async sendTestRunEvent(testStats, eventType) {
129
+ var _a, _b, _c, _d, _e, _f;
130
+ const framework = (_a = this._config) === null || _a === void 0 ? void 0 : _a.framework;
131
+ const scopes = this._suites.map(s => s.title);
132
+ const identifier = testStats.type === 'test' ? testStats.fullTitle : this.getHookIdentifier(testStats);
133
+ const testMetaData = _TestReporter._tests[identifier];
134
+ const scope = testStats.type === 'test' ? testStats.fullTitle : `${this._suites[0].title} - ${testStats.title}`;
135
+ await this.configureGit();
136
+ let testData = {
137
+ uuid: testMetaData ? testMetaData.uuid : (0, uuid_1.v4)(),
138
+ type: testStats.type,
139
+ name: testStats.title,
140
+ body: {
141
+ lang: 'webdriverio',
142
+ code: null
143
+ },
144
+ scope: scope,
145
+ scopes: scopes,
146
+ identifier: identifier,
147
+ file_name: this._suiteName ? node_path_1.default.relative(process.cwd(), this._suiteName) : undefined,
148
+ location: this._suiteName ? node_path_1.default.relative(process.cwd(), this._suiteName) : undefined,
149
+ vc_filepath: (this._gitConfigPath && this._suiteName) ? node_path_1.default.relative(this._gitConfigPath, this._suiteName) : undefined,
150
+ started_at: testStats.start && testStats.start.toISOString(),
151
+ finished_at: testStats.end && testStats.end.toISOString(),
152
+ framework: framework,
153
+ duration_in_ms: testStats._duration,
154
+ result: testStats.state,
155
+ };
156
+ if (testStats.type === 'test') {
157
+ testData.retries = { limit: testStats.retries || 0, attempts: testStats.retries || 0 };
158
+ }
159
+ if (eventType.startsWith('TestRun')) {
52
160
  /* istanbul ignore next */
53
161
  const cloudProvider = (0, util_1.getCloudProvider)({ options: { hostname: (_b = this._config) === null || _b === void 0 ? void 0 : _b.hostname } });
54
162
  testData.integrations = {};
@@ -60,15 +168,47 @@ class TestReporter extends reporter_1.default {
60
168
  browser_version: (_d = this._capabilities) === null || _d === void 0 ? void 0 : _d.browserVersion,
61
169
  platform: (_e = this._capabilities) === null || _e === void 0 ? void 0 : _e.platformName,
62
170
  };
63
- const uploadData = {
64
- event_type: 'TestRunFinished',
65
- test_run: testData
66
- };
67
- const req = this._requestQueueHandler.add(uploadData);
68
- if (req.proceed && req.data) {
69
- await (0, util_1.uploadEventData)(req.data, req.url);
171
+ }
172
+ if (eventType == 'TestRunFinished' || eventType == 'HookRunFinished') {
173
+ const { error } = testStats;
174
+ const failed = testStats.state == 'failed';
175
+ if (failed) {
176
+ testData.result = (error && error.message && error.message.includes('sync skip; aborting execution')) ? 'ignore' : 'failed';
177
+ if (error && testData.result != 'skipped') {
178
+ testData.failure = [{ backtrace: [(0, util_1.removeAnsiColors)(error.message)] }]; // add all errors here
179
+ testData.failure_reason = (0, util_1.removeAnsiColors)(error.message);
180
+ testData.failure_type = error.message == null ? null : error.message.toString().match(/AssertionError/) ? 'AssertionError' : 'UnhandledError'; //verify if this is working
181
+ }
70
182
  }
71
183
  }
184
+ if (eventType == 'TestRunSkipped') {
185
+ eventType = 'TestRunFinished';
186
+ }
187
+ const uploadData = {
188
+ event_type: eventType,
189
+ };
190
+ if (eventType.match(/HookRun/)) {
191
+ testData.hook_type = ((_f = testData.name) === null || _f === void 0 ? void 0 : _f.toLowerCase()) ? (0, util_1.getHookType)(testData.name.toLowerCase()) : 'undefined';
192
+ uploadData.hook_run = testData;
193
+ }
194
+ else {
195
+ uploadData.test_run = testData;
196
+ }
197
+ const req = this._requestQueueHandler.add(uploadData);
198
+ if (req.proceed && req.data) {
199
+ await (0, util_1.uploadEventData)(req.data, req.url);
200
+ }
201
+ }
202
+ async onTestSkip(testStats) {
203
+ // cucumber steps call this method. We don't want step skipped state so skip for cucumber
204
+ if (!this.needToSendData('test', 'skip'))
205
+ return;
206
+ testStats.start || (testStats.start = new Date());
207
+ testStats.end || (testStats.end = new Date());
208
+ await this.sendTestRunEvent(testStats, 'TestRunSkipped');
72
209
  }
73
210
  }
211
+ _TestReporter._tests = {};
212
+ // https://github.com/microsoft/TypeScript/issues/6543
213
+ const TestReporter = (0, util_1.o11yClassErrorHandler)(_TestReporter);
74
214
  exports.default = TestReporter;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/build/service.js CHANGED
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const logger_1 = __importDefault(require("@wdio/logger"));
7
+ const crash_reporter_1 = __importDefault(require("./crash-reporter"));
7
8
  const constants_1 = require("./constants");
8
9
  const got_1 = __importDefault(require("got"));
9
10
  const insights_handler_1 = __importDefault(require("./insights-handler"));
10
11
  const util_1 = require("./util");
11
12
  const reporter_1 = __importDefault(require("./reporter"));
13
+ const performance_tester_1 = __importDefault(require("./performance-tester"));
12
14
  const log = (0, logger_1.default)('@wdio/browserstack-service');
13
15
  class BrowserstackService {
14
16
  constructor(options, _caps, _config) {
@@ -26,6 +28,9 @@ class BrowserstackService {
26
28
  this._observability = this._options.testObservability;
27
29
  if (this._observability) {
28
30
  (_a = this._config.reporters) === null || _a === void 0 ? void 0 : _a.push(reporter_1.default);
31
+ if (process.env.BROWSERSTACK_O11Y_PERF_MEASUREMENT) {
32
+ performance_tester_1.default.startMonitoring('performance-report-service.csv');
33
+ }
29
34
  }
30
35
  // Cucumber specific
31
36
  const strict = Boolean(this._config.cucumberOpts && this._config.cucumberOpts.strict);
@@ -45,10 +50,11 @@ class BrowserstackService {
45
50
  // if no user and key is specified even though a browserstack service was
46
51
  // provided set user and key with values so that the session request
47
52
  // will fail
48
- if (!config.user) {
53
+ const testObservabilityOptions = this._options.testObservabilityOptions;
54
+ if (!config.user && !(testObservabilityOptions && testObservabilityOptions.user)) {
49
55
  config.user = 'NotSetUser';
50
56
  }
51
- if (!config.key) {
57
+ if (!config.key && !(testObservabilityOptions && testObservabilityOptions.key)) {
52
58
  config.key = 'NotSetKey';
53
59
  }
54
60
  this._config.user = config.user;
@@ -63,22 +69,28 @@ class BrowserstackService {
63
69
  }
64
70
  this._scenariosThatRan = [];
65
71
  if (this._observability && this._browser) {
66
- this._insightsHandler = new insights_handler_1.default(this._browser, this._browser.capabilities, this._isAppAutomate(), this._browser.sessionId, this._config.framework);
67
- await this._insightsHandler.before();
68
- /**
69
- * register command event
70
- */
71
- this._browser.on('command', async (command) => {
72
- var _a, _b;
73
- return await ((_a = this._insightsHandler) === null || _a === void 0 ? void 0 : _a.browserCommand('client:beforeCommand', Object.assign(command, { sessionId: (_b = this._browser) === null || _b === void 0 ? void 0 : _b.sessionId }), this._currentTest));
74
- });
75
- /**
76
- * register result event
77
- */
78
- this._browser.on('result', async (result) => {
79
- var _a, _b;
80
- return await ((_a = this._insightsHandler) === null || _a === void 0 ? void 0 : _a.browserCommand('client:afterCommand', Object.assign(result, { sessionId: (_b = this._browser) === null || _b === void 0 ? void 0 : _b.sessionId }), this._currentTest));
81
- });
72
+ try {
73
+ this._insightsHandler = new insights_handler_1.default(this._browser, this._browser.capabilities, this._isAppAutomate(), this._browser.sessionId, this._config.framework);
74
+ await this._insightsHandler.before();
75
+ /**
76
+ * register command event
77
+ */
78
+ this._browser.on('command', async (command) => {
79
+ var _a, _b;
80
+ return await ((_a = this._insightsHandler) === null || _a === void 0 ? void 0 : _a.browserCommand('client:beforeCommand', Object.assign(command, { sessionId: (_b = this._browser) === null || _b === void 0 ? void 0 : _b.sessionId }), this._currentTest));
81
+ });
82
+ /**
83
+ * register result event
84
+ */
85
+ this._browser.on('result', async (result) => {
86
+ var _a, _b;
87
+ return await ((_a = this._insightsHandler) === null || _a === void 0 ? void 0 : _a.browserCommand('client:afterCommand', Object.assign(result, { sessionId: (_b = this._browser) === null || _b === void 0 ? void 0 : _b.sessionId }), this._currentTest));
88
+ });
89
+ }
90
+ catch (err) {
91
+ log.error(`Error in service class before function: ${err}`);
92
+ crash_reporter_1.default.uploadCrashReport(`Error in service class before function: ${err}`, err && err.stack);
93
+ }
82
94
  }
83
95
  return await this._printSessionURL();
84
96
  }
@@ -151,6 +163,15 @@ class BrowserstackService {
151
163
  }
152
164
  await ((_a = this._insightsHandler) === null || _a === void 0 ? void 0 : _a.uploadPending());
153
165
  await ((_b = this._insightsHandler) === null || _b === void 0 ? void 0 : _b.teardown());
166
+ if (process.env.BROWSERSTACK_O11Y_PERF_MEASUREMENT) {
167
+ await performance_tester_1.default.stopAndGenerate('performance-service.html');
168
+ performance_tester_1.default.calculateTimes([
169
+ 'onRunnerStart', 'onSuiteStart', 'onSuiteEnd',
170
+ 'onTestStart', 'onTestEnd', 'onTestSkip', 'before',
171
+ 'beforeHook', 'afterHook', 'beforeTest', 'afterTest',
172
+ 'uploadPending', 'teardown', 'browserCommand'
173
+ ]);
174
+ }
154
175
  }
155
176
  /**
156
177
  * For CucumberJS
@@ -218,7 +239,6 @@ class BrowserstackService {
218
239
  });
219
240
  }
220
241
  this._scenariosThatRan = [];
221
- delete this._suiteTitle;
222
242
  delete this._fullTitle;
223
243
  this._failReasons = [];
224
244
  await this._printSessionURL();
package/build/types.d.ts CHANGED
@@ -185,6 +185,20 @@ export interface LaunchResponse {
185
185
  build_hashed_id: string;
186
186
  allow_screenshots?: boolean;
187
187
  }
188
+ export interface UserConfigforReporting {
189
+ framework?: string;
190
+ services?: any[];
191
+ capabilities?: Capabilities.RemoteCapability;
192
+ env?: {
193
+ 'BROWSERSTACK_BUILD': string | undefined;
194
+ 'BROWSERSTACK_BUILD_NAME': string | undefined;
195
+ 'BUILD_TAG': string | undefined;
196
+ };
197
+ }
198
+ export interface CredentialsForCrashReportUpload {
199
+ username?: string;
200
+ password?: string;
201
+ }
188
202
  interface IntegrationObject {
189
203
  capabilities?: Capabilities.Capabilities;
190
204
  session_id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/build/util.d.ts CHANGED
@@ -1,8 +1,22 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import http from 'http';
4
+ import https from 'https';
1
5
  import type { Browser, MultiRemoteBrowser } from 'webdriverio';
2
6
  import type { Capabilities, Frameworks, Options } from '@wdio/types';
3
7
  import { BeforeCommandArgs, AfterCommandArgs } from '@wdio/reporter';
4
8
  import type { ITestCaseHookParameter } from './cucumber-types';
5
- import { UserConfig, UploadType, BrowserstackConfig } from './types';
9
+ import { UploadType, BrowserstackConfig } from './types';
10
+ export declare const DEFAULT_REQUEST_CONFIG: {
11
+ agent: {
12
+ http: http.Agent;
13
+ https: https.Agent;
14
+ };
15
+ headers: {
16
+ 'Content-Type': string;
17
+ 'X-BSTACK-OBS': string;
18
+ };
19
+ };
6
20
  /**
7
21
  * get browser description for Browserstack service
8
22
  * @param cap browser capablities
@@ -21,11 +35,13 @@ export declare function getBrowserCapabilities(browser: Browser<'async'> | Multi
21
35
  */
22
36
  export declare function isBrowserstackCapability(cap?: Capabilities.Capabilities): boolean;
23
37
  export declare function getParentSuiteName(fullTitle: string, testSuiteTitle: string): string;
24
- export declare function launchTestSession(options: BrowserstackConfig & Options.Testrunner, config: Options.Testrunner, bsConfig: UserConfig): Promise<void>;
25
- export declare function stopBuildUpstream(): Promise<{
26
- status: string;
27
- message: any;
28
- } | undefined>;
38
+ export declare function o11yErrorHandler(fn: Function): (...args: any) => any;
39
+ type ClassType = {
40
+ new (...args: any[]): any;
41
+ };
42
+ export declare function o11yClassErrorHandler<T extends ClassType>(errorClass: T): T;
43
+ export declare const launchTestSession: (...args: any) => any;
44
+ export declare const stopBuildUpstream: (...args: any) => any;
29
45
  export declare function getCiInfo(): {
30
46
  name: string;
31
47
  build_url: string | undefined;
@@ -80,7 +96,7 @@ export declare function getGitMetaData(): Promise<{
80
96
  url: any;
81
97
  }[];
82
98
  }>;
83
- export declare function getUniqueIdentifier(test: Frameworks.Test): string;
99
+ export declare function getUniqueIdentifier(test: Frameworks.Test, framework?: string): string;
84
100
  export declare function getUniqueIdentifierForCucumber(world: ITestCaseHookParameter): string;
85
101
  export declare function getCloudProvider(browser: Browser<'async'> | MultiRemoteBrowser<'async'>): string;
86
102
  export declare function isBrowserstackSession(browser?: Browser<'async'> | MultiRemoteBrowser<'async'>): boolean;
@@ -94,6 +110,7 @@ export declare function uploadEventData(eventData: UploadType | Array<UploadType
94
110
  export declare function getHierarchy(fullTitle?: string): string[];
95
111
  export declare function getHookType(hookName: string): string;
96
112
  export declare function isScreenshotCommand(args: BeforeCommandArgs & AfterCommandArgs): boolean | "" | undefined;
113
+ export declare function isBStackSession(config: Options.Testrunner): boolean;
97
114
  export declare function shouldAddServiceVersion(config: Options.Testrunner, testObservability?: boolean): boolean;
98
115
  export declare function batchAndPostEvents(eventUrl: string, kind: string, data: UploadType[]): Promise<void>;
99
116
  export declare function getObservabilityUser(options: BrowserstackConfig & Options.Testrunner, config: Options.Testrunner): string | undefined;
@@ -101,5 +118,7 @@ export declare function getObservabilityKey(options: BrowserstackConfig & Option
101
118
  export declare function getObservabilityProject(options: BrowserstackConfig & Options.Testrunner, bstackProjectName?: string): string | undefined;
102
119
  export declare function getObservabilityBuild(options: BrowserstackConfig & Options.Testrunner, bstackBuildName?: string): string;
103
120
  export declare function getObservabilityBuildTags(options: BrowserstackConfig & Options.Testrunner, bstackBuildTag?: string): string[];
121
+ export declare function frameworkSupportsHook(hook: string, framework?: string): boolean;
104
122
  export declare const sleep: (ms?: number) => Promise<unknown>;
123
+ export {};
105
124
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}