@wdio/browserstack-service 8.6.8 → 8.7.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.
@@ -9,8 +9,10 @@ export default class InsightsHandler {
9
9
  private _platformMeta;
10
10
  private _commands;
11
11
  private _gitConfigPath?;
12
+ private _suiteFile?;
12
13
  private _requestQueueHandler;
13
14
  constructor(_browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, isAppAutomate?: boolean, _framework?: string | undefined);
15
+ setSuiteFile(filename: string): void;
14
16
  before(): Promise<void>;
15
17
  beforeHook(test: Frameworks.Test, context: any): Promise<void>;
16
18
  afterHook(test: Frameworks.Test, result: Frameworks.TestResult): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"insights-handler.d.ts","sourceRoot":"","sources":["../src/insights-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOzE,MAAM,CAAC,OAAO,OAAO,eAAe;IAQnB,OAAO,CAAC,QAAQ;IAAiF,OAAO,CAAC,UAAU,CAAC;IAPjI,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAA2D;IAC5E,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,OAAO,CAAC,oBAAoB,CAAoC;gBAE3C,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAE,OAAO,EAAU,UAAU,CAAC,oBAAQ;IAenI,MAAM;IAiBN,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;IAa/C,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IAc/D,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IASjC,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IASrE;;QAEI;IAEE,cAAc,CAAE,KAAK,EAAE,sBAAsB;IA4B7C,aAAa,CAAE,KAAK,EAAE,sBAAsB;IAI5C,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM;IAkBzD,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY;IA0BzF,aAAa,CACf,WAAW,SAA2C,EACtD,YAAY,SAA4C,GACzD,OAAO,CAAC,OAAO,CAAC;IASb,QAAQ;IAId;;OAEG;IACG,cAAc,CAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,sBAAsB;IA2DtI,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,YAAY;YAYN,gBAAgB;YAsEhB,2BAA2B;IAmFzC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,aAAa;CAMxB"}
1
+ {"version":3,"file":"insights-handler.d.ts","sourceRoot":"","sources":["../src/insights-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOzE,MAAM,CAAC,OAAO,OAAO,eAAe;IASnB,OAAO,CAAC,QAAQ;IAAiF,OAAO,CAAC,UAAU,CAAC;IARjI,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAA2D;IAC5E,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,oBAAoB,CAAoC;gBAE3C,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAE,OAAO,EAAU,UAAU,CAAC,oBAAQ;IAezI,YAAY,CAAC,QAAQ,EAAE,MAAM;IAIvB,MAAM;IAiBN,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;IAgB/C,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IAgB/D,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IASjC,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IASrE;;QAEI;IAEE,cAAc,CAAE,KAAK,EAAE,sBAAsB;IA4B7C,aAAa,CAAE,KAAK,EAAE,sBAAsB;IAI5C,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM;IAkBzD,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY;IA0BzF,aAAa,CACf,WAAW,SAA2C,EACtD,YAAY,SAA4C,GACzD,OAAO,CAAC,OAAO,CAAC;IASb,QAAQ;IAId;;OAEG;IACG,cAAc,CAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,sBAAsB;IA2DtI,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,YAAY;YAgBN,gBAAgB;YAwEhB,2BAA2B;IAmFzC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,aAAa;CAMxB"}
@@ -1,6 +1,6 @@
1
1
  import path from 'node:path';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
- import { getCloudProvider, getGitMetaData, getHookType, getScenarioExamples, getUniqueIdentifier, getUniqueIdentifierForCucumber, isBrowserstackSession, isScreenshotCommand, removeAnsiColors, sleep, uploadEventData } from './util.js';
3
+ import { frameworkSupportsHook, getCloudProvider, getGitMetaData, getHookType, getScenarioExamples, getUniqueIdentifier, getUniqueIdentifierForCucumber, isBrowserstackSession, isScreenshotCommand, removeAnsiColors, sleep, uploadEventData } from './util.js';
4
4
  import RequestQueueHandler from './request-handler.js';
5
5
  import { DATA_SCREENSHOT_ENDPOINT, DEFAULT_WAIT_INTERVAL_FOR_PENDING_UPLOADS, DEFAULT_WAIT_TIMEOUT_FOR_PENDING_UPLOADS } from './constants.js';
6
6
  export default class InsightsHandler {
@@ -11,6 +11,7 @@ export default class InsightsHandler {
11
11
  _platformMeta;
12
12
  _commands = {};
13
13
  _gitConfigPath;
14
+ _suiteFile;
14
15
  _requestQueueHandler = RequestQueueHandler.getInstance();
15
16
  constructor(_browser, isAppAutomate, _framework) {
16
17
  this._browser = _browser;
@@ -27,6 +28,9 @@ export default class InsightsHandler {
27
28
  product: isAppAutomate ? 'app-automate' : 'automate'
28
29
  };
29
30
  }
31
+ setSuiteFile(filename) {
32
+ this._suiteFile = filename;
33
+ }
30
34
  async before() {
31
35
  if (isBrowserstackSession(this._browser)) {
32
36
  await this._browser.execute(`browserstack_executor: ${JSON.stringify({
@@ -43,33 +47,35 @@ export default class InsightsHandler {
43
47
  }
44
48
  }
45
49
  async beforeHook(test, context) {
46
- if (this._framework === 'mocha') {
47
- const fullTitle = `${test.parent} - ${test.title}`;
48
- const hookId = uuidv4();
49
- this._tests[fullTitle] = {
50
- uuid: hookId,
51
- startedAt: (new Date()).toISOString()
52
- };
53
- this.attachHookData(context, hookId);
54
- await this.sendTestRunEvent(test, 'HookRunStarted');
50
+ if (!frameworkSupportsHook('before', this._framework)) {
51
+ return;
55
52
  }
53
+ const fullTitle = getUniqueIdentifier(test, this._framework);
54
+ const hookId = uuidv4();
55
+ this._tests[fullTitle] = {
56
+ uuid: hookId,
57
+ startedAt: (new Date()).toISOString()
58
+ };
59
+ this.attachHookData(context, hookId);
60
+ await this.sendTestRunEvent(test, 'HookRunStarted');
56
61
  }
57
62
  async afterHook(test, result) {
58
- if (this._framework === 'mocha') {
59
- const fullTitle = getUniqueIdentifier(test);
60
- if (this._tests[fullTitle]) {
61
- this._tests[fullTitle].finishedAt = (new Date()).toISOString();
62
- }
63
- else {
64
- this._tests[fullTitle] = {
65
- finishedAt: (new Date()).toISOString()
66
- };
67
- }
68
- await this.sendTestRunEvent(test, 'HookRunFinished', result);
63
+ if (!frameworkSupportsHook('after', this._framework)) {
64
+ return;
65
+ }
66
+ const fullTitle = getUniqueIdentifier(test, this._framework);
67
+ if (this._tests[fullTitle]) {
68
+ this._tests[fullTitle].finishedAt = (new Date()).toISOString();
69
+ }
70
+ else {
71
+ this._tests[fullTitle] = {
72
+ finishedAt: (new Date()).toISOString()
73
+ };
69
74
  }
75
+ await this.sendTestRunEvent(test, 'HookRunFinished', result);
70
76
  }
71
77
  async beforeTest(test) {
72
- const fullTitle = getUniqueIdentifier(test);
78
+ const fullTitle = getUniqueIdentifier(test, this._framework);
73
79
  this._tests[fullTitle] = {
74
80
  uuid: uuidv4(),
75
81
  startedAt: (new Date()).toISOString()
@@ -77,7 +83,7 @@ export default class InsightsHandler {
77
83
  await this.sendTestRunEvent(test, 'TestRunStarted');
78
84
  }
79
85
  async afterTest(test, result) {
80
- const fullTitle = getUniqueIdentifier(test);
86
+ const fullTitle = getUniqueIdentifier(test, this._framework);
81
87
  this._tests[fullTitle] = {
82
88
  ...(this._tests[fullTitle] || {}),
83
89
  finishedAt: (new Date()).toISOString()
@@ -237,15 +243,21 @@ export default class InsightsHandler {
237
243
  parent = parent.parent;
238
244
  }
239
245
  }
246
+ else if (test.description && test.fullName) {
247
+ // for Jasmine
248
+ value.push(test.description);
249
+ value.push(test.fullName.replace(new RegExp(' ' + test.description + '$'), ''));
250
+ }
240
251
  return value.reverse();
241
252
  }
242
253
  async sendTestRunEvent(test, eventType, results) {
243
- const fullTitle = getUniqueIdentifier(test);
254
+ const fullTitle = getUniqueIdentifier(test, this._framework);
244
255
  const testMetaData = this._tests[fullTitle];
256
+ const filename = test.file || this._suiteFile;
245
257
  const testData = {
246
258
  uuid: testMetaData.uuid,
247
- type: test.type,
248
- name: test.title,
259
+ type: test.type || 'test',
260
+ name: test.title || test.description,
249
261
  body: {
250
262
  lang: 'webdriverio',
251
263
  code: test.body
@@ -253,9 +265,9 @@ export default class InsightsHandler {
253
265
  scope: fullTitle,
254
266
  scopes: this.getHierarchy(test),
255
267
  identifier: fullTitle,
256
- file_name: test.file,
257
- location: test.file,
258
- vc_filepath: (this._gitConfigPath && test.file) ? path.relative(this._gitConfigPath, test.file) : undefined,
268
+ file_name: filename,
269
+ location: filename,
270
+ vc_filepath: (this._gitConfigPath && filename) ? path.relative(this._gitConfigPath, filename) : undefined,
259
271
  started_at: testMetaData.startedAt,
260
272
  finished_at: testMetaData.finishedAt,
261
273
  result: 'pending',
@@ -391,6 +403,6 @@ export default class InsightsHandler {
391
403
  if ('pickle' in test) {
392
404
  return getUniqueIdentifierForCucumber(test);
393
405
  }
394
- return getUniqueIdentifier(test);
406
+ return getUniqueIdentifier(test, this._framework);
395
407
  }
396
408
  }
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AASvF,KAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAQ5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IATnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAQ;gBAGrB,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAwDjC,SAAS,CAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IA0GtF,UAAU;IA2CV,UAAU,CAAC,GAAG,EAAC,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBrD;;;OAGG;IACG,YAAY,CAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyBhE,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM;IAoF3F,sBAAsB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyCrE;;;OAGG;IACH,oBAAoB;IA6BpB,sBAAsB,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,EAAC,MAAM,EAAE,eAAe,CAAC,EAAC,MAAM;CAQtF"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAevF,KAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAQ5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IATnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAQ;gBAGrB,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IA+DjC,SAAS,CAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IA0GtF,UAAU;IA2CV,UAAU,CAAC,GAAG,EAAC,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBrD;;;OAGG;IACG,YAAY,CAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyBhE,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM;IAoF3F,sBAAsB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyCrE;;;OAGG;IACH,oBAAoB;IA6BpB,sBAAsB,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,EAAC,MAAM,EAAE,eAAe,CAAC,EAAC,MAAM;CAQtF"}
package/build/launcher.js CHANGED
@@ -10,7 +10,7 @@ import os from 'node:os';
10
10
  import * as BrowserstackLocalLauncher from 'browserstack-local';
11
11
  import logger from '@wdio/logger';
12
12
  import { VALID_APP_EXTENSION } from './constants.js';
13
- import { launchTestSession, shouldAddServiceVersion, stopBuildUpstream, getCiInfo } from './util.js';
13
+ import { launchTestSession, shouldAddServiceVersion, stopBuildUpstream, getCiInfo, isBStackSession } from './util.js';
14
14
  const require = createRequire(import.meta.url);
15
15
  const { version: bstackServiceVersion } = require('../package.json');
16
16
  const log = logger('@wdio/browserstack-service');
@@ -30,13 +30,17 @@ export default class BrowserstackLauncherService {
30
30
  if (Array.isArray(capabilities)) {
31
31
  capabilities.forEach((capability) => {
32
32
  if (!capability['bstack:options']) {
33
- const extensionCaps = Object.keys(capability).filter((cap) => cap.includes(':'));
34
- if (extensionCaps.length) {
35
- capability['bstack:options'] = { wdioService: bstackServiceVersion };
36
- }
37
- else if (shouldAddServiceVersion(this._config, this._options.testObservability)) {
38
- capability['browserstack.wdioService'] = bstackServiceVersion;
33
+ // Skipping adding of service version if session is not of browserstack
34
+ if (isBStackSession(this._config)) {
35
+ const extensionCaps = Object.keys(capability).filter((cap) => cap.includes(':'));
36
+ if (extensionCaps.length) {
37
+ capability['bstack:options'] = { wdioService: bstackServiceVersion };
38
+ }
39
+ else if (shouldAddServiceVersion(this._config, this._options.testObservability)) {
40
+ capability['browserstack.wdioService'] = bstackServiceVersion;
41
+ }
39
42
  }
43
+ // Need this details for sending data to Observability
40
44
  this._buildIdentifier = capability['browserstack.buildIdentifier']?.toString();
41
45
  this._buildName = capability.build?.toString();
42
46
  }
@@ -52,12 +56,14 @@ export default class BrowserstackLauncherService {
52
56
  else if (typeof capabilities === 'object') {
53
57
  Object.entries(capabilities).forEach(([, caps]) => {
54
58
  if (!caps.capabilities['bstack:options']) {
55
- const extensionCaps = Object.keys(caps.capabilities).filter((cap) => cap.includes(':'));
56
- if (extensionCaps.length) {
57
- caps.capabilities['bstack:options'] = { wdioService: bstackServiceVersion };
58
- }
59
- else if (shouldAddServiceVersion(this._config, this._options.testObservability)) {
60
- caps.capabilities['browserstack.wdioService'] = bstackServiceVersion;
59
+ if (isBStackSession(this._config)) {
60
+ const extensionCaps = Object.keys(caps.capabilities).filter((cap) => cap.includes(':'));
61
+ if (extensionCaps.length) {
62
+ caps.capabilities['bstack:options'] = { wdioService: bstackServiceVersion };
63
+ }
64
+ else if (shouldAddServiceVersion(this._config, this._options.testObservability)) {
65
+ caps.capabilities['browserstack.wdioService'] = bstackServiceVersion;
66
+ }
61
67
  }
62
68
  this._buildIdentifier = caps.capabilities['browserstack.buildIdentifier'];
63
69
  }
@@ -10,6 +10,7 @@ export default class BrowserstackService implements Services.ServiceInstance {
10
10
  private _failureStatuses;
11
11
  private _browser?;
12
12
  private _suiteTitle?;
13
+ private _suiteFile?;
13
14
  private _fullTitle?;
14
15
  private _options;
15
16
  private _specsRan;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOlF,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,QAAQ,CAAC,eAAe;IAgBpE,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAhBnB,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,gBAAgB,CAA4D;IACpF,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAA;IACtB,OAAO,CAAC,YAAY,CAAC,CAA0C;IAC/D,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAGtC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACxC,KAAK,EAAE,YAAY,CAAC,gBAAgB,EACpC,OAAO,EAAE,OAAO,CAAC,UAAU;IAkBvC,WAAW,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,mBAAmB,KAAK,IAAI;IAU7F,aAAa,CAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC;IAezD,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO;IAyC/F;;;;;;OAMG;IACG,WAAW,CAAE,KAAK,EAAE,UAAU,CAAC,KAAK;IAQpC,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;IAO/C,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IAIjF,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAoBjC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU;IAS/E,KAAK,CAAE,MAAM,EAAE,MAAM;IAqB3B;;OAEG;IAEG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAMjD;;;OAGG;IACG,cAAc,CAAE,KAAK,EAAE,sBAAsB;IAO7C,aAAa,CAAE,KAAK,EAAE,sBAAsB;IAsB5C,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM;IAKzD,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY;IAIzF,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAgCzD,cAAc,IAAI,OAAO;IAOzB,UAAU,CAAE,WAAW,EAAE,GAAG;IAU5B,kBAAkB,CAAE,MAAM,EAAE,iBAAiB;IAqB7C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG;IAarC,gBAAgB;YAuBR,eAAe;IA0B7B,OAAO,CAAC,cAAc;YAIR,eAAe;CAqBhC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOlF,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,QAAQ,CAAC,eAAe;IAiBpE,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAjBnB,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,gBAAgB,CAA4D;IACpF,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAA;IACtB,OAAO,CAAC,YAAY,CAAC,CAA0C;IAC/D,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAGtC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACxC,KAAK,EAAE,YAAY,CAAC,gBAAgB,EACpC,OAAO,EAAE,OAAO,CAAC,UAAU;IAkBvC,WAAW,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,mBAAmB,KAAK,IAAI;IAU7F,aAAa,CAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC;IAgBzD,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO;IAyC/F;;;;;;OAMG;IACG,WAAW,CAAE,KAAK,EAAE,UAAU,CAAC,KAAK;IASpC,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;IAO/C,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;IAIjF,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAoBjC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU;IAS/E,KAAK,CAAE,MAAM,EAAE,MAAM;IAqB3B;;OAEG;IAEG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAMjD;;;OAGG;IACG,cAAc,CAAE,KAAK,EAAE,sBAAsB;IAO7C,aAAa,CAAE,KAAK,EAAE,sBAAsB;IAsB5C,UAAU,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM;IAKzD,SAAS,CAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY;IAIzF,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAiCzD,cAAc,IAAI,OAAO;IAOzB,UAAU,CAAE,WAAW,EAAE,GAAG;IAU5B,kBAAkB,CAAE,MAAM,EAAE,iBAAiB;IAqB7C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG;IAarC,gBAAgB;YAuBR,eAAe;IA0B7B,OAAO,CAAC,cAAc;YAIR,eAAe;CAqBhC"}
package/build/service.js CHANGED
@@ -14,6 +14,7 @@ export default class BrowserstackService {
14
14
  _failureStatuses = ['failed', 'ambiguous', 'undefined', 'unknown'];
15
15
  _browser;
16
16
  _suiteTitle;
17
+ _suiteFile;
17
18
  _fullTitle;
18
19
  _options;
19
20
  _specsRan = false;
@@ -48,10 +49,11 @@ export default class BrowserstackService {
48
49
  // if no user and key is specified even though a browserstack service was
49
50
  // provided set user and key with values so that the session request
50
51
  // will fail
51
- if (!config.user) {
52
+ const testObservabilityOptions = this._options.testObservabilityOptions;
53
+ if (!config.user && !(testObservabilityOptions && testObservabilityOptions.user)) {
52
54
  config.user = 'NotSetUser';
53
55
  }
54
- if (!config.key) {
56
+ if (!config.key && !(testObservabilityOptions && testObservabilityOptions.key)) {
55
57
  config.key = 'NotSetKey';
56
58
  }
57
59
  this._config.user = config.user;
@@ -88,6 +90,7 @@ export default class BrowserstackService {
88
90
  */
89
91
  async beforeSuite(suite) {
90
92
  this._suiteTitle = suite.title;
93
+ this._insightsHandler?.setSuiteFile(suite.file);
91
94
  if (suite.title && suite.title !== 'Jasmine__TopLevel__Suite') {
92
95
  await this._setSessionName(suite.title);
93
96
  }
@@ -209,6 +212,7 @@ export default class BrowserstackService {
209
212
  this._scenariosThatRan = [];
210
213
  delete this._suiteTitle;
211
214
  delete this._fullTitle;
215
+ delete this._suiteFile;
212
216
  this._failReasons = [];
213
217
  await this._printSessionURL();
214
218
  }
package/build/util.d.ts CHANGED
@@ -62,7 +62,7 @@ export declare function getGitMetaData(): Promise<{
62
62
  url: any;
63
63
  }[];
64
64
  } | undefined>;
65
- export declare function getUniqueIdentifier(test: Frameworks.Test): string;
65
+ export declare function getUniqueIdentifier(test: Frameworks.Test, framework?: string): string;
66
66
  export declare function getUniqueIdentifierForCucumber(world: ITestCaseHookParameter): string;
67
67
  export declare function getCloudProvider(browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser): string;
68
68
  export declare function isBrowserstackSession(browser?: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser): boolean | undefined;
@@ -76,6 +76,7 @@ export declare function uploadEventData(eventData: UploadType | Array<UploadType
76
76
  export declare function getHierarchy(fullTitle?: string): string[];
77
77
  export declare function getHookType(hookName: string): string;
78
78
  export declare function isScreenshotCommand(args: BeforeCommandArgs & AfterCommandArgs): boolean | "" | undefined;
79
+ export declare function isBStackSession(config: Options.Testrunner): boolean;
79
80
  export declare function shouldAddServiceVersion(config: Options.Testrunner, testObservability?: boolean): boolean;
80
81
  export declare function batchAndPostEvents(eventUrl: string, kind: string, data: UploadType[]): Promise<void>;
81
82
  export declare function getObservabilityUser(options: BrowserstackConfig & Options.Testrunner, config: Options.Testrunner): string | undefined;
@@ -83,5 +84,6 @@ export declare function getObservabilityKey(options: BrowserstackConfig & Option
83
84
  export declare function getObservabilityProject(options: BrowserstackConfig & Options.Testrunner, bstackProjectName?: string): string | undefined;
84
85
  export declare function getObservabilityBuild(options: BrowserstackConfig & Options.Testrunner, bstackBuildName?: string): string;
85
86
  export declare function getObservabilityBuildTags(options: BrowserstackConfig & Options.Testrunner, bstackBuildTag?: string): string[];
87
+ export declare function frameworkSupportsHook(hook: string, framework?: string): boolean;
86
88
  export declare const sleep: (ms?: number) => Promise<unknown>;
87
89
  //# 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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"}
package/build/util.js CHANGED
@@ -302,7 +302,10 @@ export async function getGitMetaData() {
302
302
  remotes: remotes
303
303
  };
304
304
  }
305
- export function getUniqueIdentifier(test) {
305
+ export function getUniqueIdentifier(test, framework) {
306
+ if (framework === 'jasmine') {
307
+ return test.fullName;
308
+ }
306
309
  return `${test.parent} - ${test.title}`;
307
310
  }
308
311
  export function getUniqueIdentifierForCucumber(world) {
@@ -434,6 +437,12 @@ export function getHookType(hookName) {
434
437
  export function isScreenshotCommand(args) {
435
438
  return args.endpoint && args.endpoint.includes('/screenshot');
436
439
  }
440
+ export function isBStackSession(config) {
441
+ if (typeof config.user === 'string' && typeof config.key === 'string' && config.key.length === 20) {
442
+ return true;
443
+ }
444
+ return false;
445
+ }
437
446
  export function shouldAddServiceVersion(config, testObservability) {
438
447
  if (config.services && config.services.toString().includes('chromedriver') && testObservability !== false) {
439
448
  return false;
@@ -508,4 +517,13 @@ export function getObservabilityBuildTags(options, bstackBuildTag) {
508
517
  }
509
518
  return [];
510
519
  }
520
+ export function frameworkSupportsHook(hook, framework) {
521
+ if (framework === 'mocha' && (hook === 'before' || hook === 'after' || hook === 'beforeEach' || hook === 'afterEach')) {
522
+ return true;
523
+ }
524
+ if (framework === 'jasmine' && (hook === 'beforeEach' || hook === 'afterEach')) {
525
+ return true;
526
+ }
527
+ return false;
528
+ }
511
529
  export const sleep = (ms = 100) => new Promise((resolve) => setTimeout(resolve, ms));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/browserstack-service",
3
- "version": "8.6.8",
3
+ "version": "8.7.0",
4
4
  "description": "WebdriverIO service for better Browserstack integration",
5
5
  "author": "Adam Bjerstedt <abjerstedt@gmail.com>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-browserstack-service",
@@ -32,15 +32,15 @@
32
32
  "dependencies": {
33
33
  "@types/gitconfiglocal": "^2.0.1",
34
34
  "@wdio/logger": "8.6.6",
35
- "@wdio/reporter": "8.6.8",
36
- "@wdio/types": "8.6.8",
35
+ "@wdio/reporter": "8.7.0",
36
+ "@wdio/types": "8.7.0",
37
37
  "browserstack-local": "^1.5.1",
38
38
  "form-data": "^4.0.0",
39
39
  "git-repo-info": "^2.1.1",
40
40
  "gitconfiglocal": "^2.1.0",
41
41
  "got": "^12.1.0",
42
42
  "uuid": "^8.3.2",
43
- "webdriverio": "8.6.8"
43
+ "webdriverio": "8.7.0"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@wdio/cli": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -51,5 +51,5 @@
51
51
  "publishConfig": {
52
52
  "access": "public"
53
53
  },
54
- "gitHead": "d93cd057937fc77935a4855dedf74323183652dd"
54
+ "gitHead": "2615d963dc561aed0920c519ed5c27720e1a636c"
55
55
  }