@wdio/browserstack-service 7.20.9 → 8.0.0-alpha.213
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/README.md +1 -1
- package/build/constants.js +1 -4
- package/build/index.d.ts +3 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -25
- package/build/launcher.d.ts +1 -1
- package/build/launcher.d.ts.map +1 -1
- package/build/launcher.js +21 -50
- package/build/service.d.ts +1 -1
- package/build/service.d.ts.map +1 -1
- package/build/service.js +16 -24
- package/build/types.js +1 -2
- package/build/util.js +6 -13
- package/package.json +12 -10
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ WebdriverIO Browserstack Service
|
|
|
6
6
|
## Installation
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
The easiest way is to keep `@wdio/browserstack-service` as a devDependency in your `package.json`, via:
|
|
9
|
+
The easiest way is to keep `@wdio/browserstack-service` as a devDependency in your `package.json`, via:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
12
|
npm install @wdio/browserstack-service --save-dev
|
package/build/constants.js
CHANGED
package/build/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import BrowserstackLauncher from './launcher';
|
|
2
|
-
import BrowserstackService from './service';
|
|
1
|
+
import BrowserstackLauncher from './launcher.js';
|
|
2
|
+
import BrowserstackService from './service.js';
|
|
3
3
|
import type { BrowserstackConfig } from './types';
|
|
4
4
|
export default BrowserstackService;
|
|
5
5
|
export declare const launcher: typeof BrowserstackLauncher;
|
|
6
|
-
export * from './types';
|
|
6
|
+
export * from './types.js';
|
|
7
7
|
declare global {
|
|
8
8
|
namespace WebdriverIO {
|
|
9
9
|
interface ServiceOption extends BrowserstackConfig {
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,MAAM,eAAe,CAAA;AAChD,OAAO,mBAAmB,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAe,mBAAmB,CAAA;AAClC,eAAO,MAAM,QAAQ,6BAAuB,CAAA;AAC5C,cAAc,YAAY,CAAA;AAE1B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACxD;CACJ"}
|
package/build/index.js
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* istanbul ignore file */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
-
};
|
|
20
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.launcher = void 0;
|
|
22
|
-
const launcher_1 = __importDefault(require("./launcher"));
|
|
23
|
-
const service_1 = __importDefault(require("./service"));
|
|
24
|
-
exports.default = service_1.default;
|
|
25
|
-
exports.launcher = launcher_1.default;
|
|
26
|
-
__exportStar(require("./types"), exports);
|
|
2
|
+
import BrowserstackLauncher from './launcher.js';
|
|
3
|
+
import BrowserstackService from './service.js';
|
|
4
|
+
export default BrowserstackService;
|
|
5
|
+
export const launcher = BrowserstackLauncher;
|
|
6
|
+
export * from './types.js';
|
package/build/launcher.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as BrowserstackLocalLauncher from 'browserstack-local';
|
|
2
2
|
import type { Capabilities, Services, Options } from '@wdio/types';
|
|
3
|
-
import { BrowserstackConfig } from './types';
|
|
3
|
+
import type { BrowserstackConfig } from './types';
|
|
4
4
|
declare type BrowserstackLocal = BrowserstackLocalLauncher.Local & {
|
|
5
5
|
pid?: number;
|
|
6
6
|
stop(callback: (err?: any) => void): void;
|
package/build/launcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAIA,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,MAAM,SAAS,CAAA;AAOjD,aAAK,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;IAI5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IALnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;gBAGzB,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAiCvC,SAAS,CAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyEtF,UAAU;CAkCb"}
|
package/build/launcher.js
CHANGED
|
@@ -1,39 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const util_1 = require("util");
|
|
30
|
-
const perf_hooks_1 = require("perf_hooks");
|
|
31
|
-
const BrowserstackLocalLauncher = __importStar(require("browserstack-local"));
|
|
32
|
-
const logger_1 = __importDefault(require("@wdio/logger"));
|
|
33
|
-
// @ts-ignore
|
|
34
|
-
const package_json_1 = require("../package.json");
|
|
35
|
-
const log = (0, logger_1.default)('@wdio/browserstack-service');
|
|
36
|
-
class BrowserstackLauncherService {
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { performance, PerformanceObserver } from 'node:perf_hooks';
|
|
4
|
+
import * as BrowserstackLocalLauncher from 'browserstack-local';
|
|
5
|
+
import logger from '@wdio/logger';
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const { version: bstackServiceVersion } = require('../package.json');
|
|
8
|
+
const log = logger('@wdio/browserstack-service');
|
|
9
|
+
export default class BrowserstackLauncherService {
|
|
37
10
|
constructor(_options, capabilities, _config) {
|
|
38
11
|
this._options = _options;
|
|
39
12
|
this._config = _config;
|
|
@@ -44,14 +17,14 @@ class BrowserstackLauncherService {
|
|
|
44
17
|
if (!capability['bstack:options']) {
|
|
45
18
|
const extensionCaps = Object.keys(capability).filter((cap) => cap.includes(':'));
|
|
46
19
|
if (extensionCaps.length) {
|
|
47
|
-
capability['bstack:options'] = { wdioService:
|
|
20
|
+
capability['bstack:options'] = { wdioService: bstackServiceVersion };
|
|
48
21
|
}
|
|
49
22
|
else {
|
|
50
|
-
capability['browserstack.wdioService'] =
|
|
23
|
+
capability['browserstack.wdioService'] = bstackServiceVersion;
|
|
51
24
|
}
|
|
52
25
|
}
|
|
53
26
|
else {
|
|
54
|
-
capability['bstack:options'].wdioService =
|
|
27
|
+
capability['bstack:options'].wdioService = bstackServiceVersion;
|
|
55
28
|
}
|
|
56
29
|
});
|
|
57
30
|
}
|
|
@@ -60,14 +33,14 @@ class BrowserstackLauncherService {
|
|
|
60
33
|
if (!caps.capabilities['bstack:options']) {
|
|
61
34
|
const extensionCaps = Object.keys(caps.capabilities).filter((cap) => cap.includes(':'));
|
|
62
35
|
if (extensionCaps.length) {
|
|
63
|
-
caps.capabilities['bstack:options'] = { wdioService:
|
|
36
|
+
caps.capabilities['bstack:options'] = { wdioService: bstackServiceVersion };
|
|
64
37
|
}
|
|
65
38
|
else {
|
|
66
|
-
caps.capabilities['browserstack.wdioService'] =
|
|
39
|
+
caps.capabilities['browserstack.wdioService'] = bstackServiceVersion;
|
|
67
40
|
}
|
|
68
41
|
}
|
|
69
42
|
else {
|
|
70
|
-
caps.capabilities['bstack:options'].wdioService =
|
|
43
|
+
caps.capabilities['bstack:options'].wdioService = bstackServiceVersion;
|
|
71
44
|
}
|
|
72
45
|
});
|
|
73
46
|
}
|
|
@@ -119,15 +92,15 @@ class BrowserstackLauncherService {
|
|
|
119
92
|
/**
|
|
120
93
|
* measure TestingBot tunnel boot time
|
|
121
94
|
*/
|
|
122
|
-
const obs = new
|
|
95
|
+
const obs = new PerformanceObserver((list) => {
|
|
123
96
|
const entry = list.getEntries()[0];
|
|
124
97
|
log.info(`Browserstack Local successfully started after ${entry.duration}ms`);
|
|
125
98
|
});
|
|
126
99
|
obs.observe({ entryTypes: ['measure'] });
|
|
127
100
|
let timer;
|
|
128
|
-
|
|
101
|
+
performance.mark('tbTunnelStart');
|
|
129
102
|
return Promise.race([
|
|
130
|
-
|
|
103
|
+
promisify(this.browserstackLocal.start.bind(this.browserstackLocal))(opts),
|
|
131
104
|
new Promise((resolve, reject) => {
|
|
132
105
|
/* istanbul ignore next */
|
|
133
106
|
timer = setTimeout(function () {
|
|
@@ -136,8 +109,8 @@ class BrowserstackLauncherService {
|
|
|
136
109
|
})
|
|
137
110
|
]).then(function (result) {
|
|
138
111
|
clearTimeout(timer);
|
|
139
|
-
|
|
140
|
-
|
|
112
|
+
performance.mark('tbTunnelEnd');
|
|
113
|
+
performance.measure('bootTime', 'tbTunnelStart', 'tbTunnelEnd');
|
|
141
114
|
return Promise.resolve(result);
|
|
142
115
|
}, function (err) {
|
|
143
116
|
clearTimeout(timer);
|
|
@@ -154,8 +127,7 @@ class BrowserstackLauncherService {
|
|
|
154
127
|
let timer;
|
|
155
128
|
return Promise.race([
|
|
156
129
|
new Promise((resolve, reject) => {
|
|
157
|
-
|
|
158
|
-
(_a = this.browserstackLocal) === null || _a === void 0 ? void 0 : _a.stop((err) => {
|
|
130
|
+
this.browserstackLocal?.stop((err) => {
|
|
159
131
|
if (err) {
|
|
160
132
|
return reject(err);
|
|
161
133
|
}
|
|
@@ -175,4 +147,3 @@ class BrowserstackLauncherService {
|
|
|
175
147
|
});
|
|
176
148
|
}
|
|
177
149
|
}
|
|
178
|
-
exports.default = BrowserstackLauncherService;
|
package/build/service.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Services, Capabilities, Options, Frameworks } from '@wdio/types';
|
|
2
2
|
import type { Browser, MultiRemoteBrowser } from 'webdriverio';
|
|
3
|
-
import { BrowserstackConfig, MultiRemoteAction } from './types';
|
|
3
|
+
import type { BrowserstackConfig, MultiRemoteAction } from './types';
|
|
4
4
|
export default class BrowserstackService implements Services.ServiceInstance {
|
|
5
5
|
private _options;
|
|
6
6
|
private _caps;
|
package/build/service.d.ts.map
CHANGED
|
@@ -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;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG9D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAmB,MAAM,SAAS,CAAA;
|
|
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;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAmB,MAAM,SAAS,CAAA;AAIrF,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,QAAQ,CAAC,eAAe;IASpE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAVnB,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,gBAAgB,CAA4D;IACpF,OAAO,CAAC,QAAQ,CAAC,CAAgD;IACjE,OAAO,CAAC,UAAU,CAAC,CAAQ;gBAGf,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EACjD,KAAK,EAAE,YAAY,CAAC,gBAAgB,EACpC,OAAO,EAAE,OAAO,CAAC,UAAU;IAYvC,WAAW,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,mBAAmB,KAAK,IAAI;IAU7F;;;;OAIG;IACH,aAAa,CAAE,MAAM,EAAE,OAAO,CAAC,UAAU;IAYzC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAepH,WAAW,CAAE,KAAK,EAAE,UAAU,CAAC,KAAK;IAIpC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAKrD,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU;IAqB/E,KAAK,CAAE,MAAM,EAAE,MAAM;IAgBrB;;OAEG;IACH,aAAa,CAAE,KAAK,EAAE,UAAU,CAAC,KAAK;IAmBhC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IA2BzD,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;IAUrC,gBAAgB;CAsBzB"}
|
package/build/service.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const logger_1 = __importDefault(require("@wdio/logger"));
|
|
7
|
-
const got_1 = __importDefault(require("got"));
|
|
8
|
-
const util_1 = require("./util");
|
|
9
|
-
const log = (0, logger_1.default)('@wdio/browserstack-service');
|
|
10
|
-
class BrowserstackService {
|
|
1
|
+
import logger from '@wdio/logger';
|
|
2
|
+
import got from 'got';
|
|
3
|
+
import { getBrowserDescription, getBrowserCapabilities, isBrowserstackCapability, getParentSuiteName } from './util.js';
|
|
4
|
+
const log = logger('@wdio/browserstack-service');
|
|
5
|
+
export default class BrowserstackService {
|
|
11
6
|
constructor(_options, _caps, _config) {
|
|
12
7
|
this._options = _options;
|
|
13
8
|
this._caps = _caps;
|
|
@@ -73,7 +68,7 @@ class BrowserstackService {
|
|
|
73
68
|
this._fullTitle = testSuiteName;
|
|
74
69
|
}
|
|
75
70
|
else if (this._fullTitle) {
|
|
76
|
-
this._fullTitle =
|
|
71
|
+
this._fullTitle = getParentSuiteName(this._fullTitle, testSuiteName);
|
|
77
72
|
}
|
|
78
73
|
}
|
|
79
74
|
else {
|
|
@@ -101,8 +96,7 @@ class BrowserstackService {
|
|
|
101
96
|
* For CucumberJS
|
|
102
97
|
*/
|
|
103
98
|
afterScenario(world) {
|
|
104
|
-
|
|
105
|
-
const status = (_a = world.result) === null || _a === void 0 ? void 0 : _a.status.toLowerCase();
|
|
99
|
+
const status = world.result?.status.toLowerCase();
|
|
106
100
|
if (status !== 'skipped') {
|
|
107
101
|
this._scenariosThatRan.push(world.pickle.name || 'unknown pickle name');
|
|
108
102
|
}
|
|
@@ -138,9 +132,8 @@ class BrowserstackService {
|
|
|
138
132
|
await this._printSessionURL();
|
|
139
133
|
}
|
|
140
134
|
_isAppAutomate() {
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
const desiredCapabilities = ((_c = this._caps) !== null && _c !== void 0 ? _c : {});
|
|
135
|
+
const browserDesiredCapabilities = (this._browser?.capabilities ?? {});
|
|
136
|
+
const desiredCapabilities = (this._caps ?? {});
|
|
144
137
|
return !!browserDesiredCapabilities['appium:app'] || !!desiredCapabilities['appium:app'] || !!browserDesiredCapabilities.app || !!desiredCapabilities.app;
|
|
145
138
|
}
|
|
146
139
|
_updateJob(requestBody) {
|
|
@@ -160,16 +153,16 @@ class BrowserstackService {
|
|
|
160
153
|
return action(_browser.sessionId);
|
|
161
154
|
}
|
|
162
155
|
return Promise.all(_browser.instances
|
|
163
|
-
.filter(browserName => {
|
|
164
|
-
const cap =
|
|
165
|
-
return
|
|
156
|
+
.filter((browserName) => {
|
|
157
|
+
const cap = getBrowserCapabilities(_browser, this._caps, browserName);
|
|
158
|
+
return isBrowserstackCapability(cap);
|
|
166
159
|
})
|
|
167
160
|
.map((browserName) => (action(_browser[browserName].sessionId, browserName))));
|
|
168
161
|
}
|
|
169
162
|
_update(sessionId, requestBody) {
|
|
170
163
|
const sessionUrl = `${this._sessionBaseUrl}/${sessionId}.json`;
|
|
171
164
|
log.debug(`Updating Browserstack session at ${sessionUrl} with request body: `, requestBody);
|
|
172
|
-
return
|
|
165
|
+
return got.put(sessionUrl, {
|
|
173
166
|
json: requestBody,
|
|
174
167
|
username: this._config.user,
|
|
175
168
|
password: this._config.key
|
|
@@ -182,7 +175,7 @@ class BrowserstackService {
|
|
|
182
175
|
await this._multiRemoteAction(async (sessionId, browserName) => {
|
|
183
176
|
const sessionUrl = `${this._sessionBaseUrl}/${sessionId}.json`;
|
|
184
177
|
log.debug(`Requesting Browserstack session URL at ${sessionUrl}`);
|
|
185
|
-
const response = await (
|
|
178
|
+
const response = await got(sessionUrl, {
|
|
186
179
|
username: this._config.user,
|
|
187
180
|
password: this._config.key,
|
|
188
181
|
responseType: 'json'
|
|
@@ -190,10 +183,9 @@ class BrowserstackService {
|
|
|
190
183
|
if (!this._browser) {
|
|
191
184
|
return;
|
|
192
185
|
}
|
|
193
|
-
const capabilities =
|
|
194
|
-
const browserString =
|
|
186
|
+
const capabilities = getBrowserCapabilities(this._browser, this._caps, browserName);
|
|
187
|
+
const browserString = getBrowserDescription(capabilities);
|
|
195
188
|
log.info(`${browserString} session: ${response.body.automation_session.browser_url}`);
|
|
196
189
|
});
|
|
197
190
|
}
|
|
198
191
|
}
|
|
199
|
-
exports.default = BrowserstackService;
|
package/build/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
package/build/util.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getParentSuiteName = exports.isBrowserstackCapability = exports.getBrowserCapabilities = exports.getBrowserDescription = void 0;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
1
|
+
import { BROWSER_DESCRIPTION } from './constants.js';
|
|
5
2
|
/**
|
|
6
3
|
* get browser description for Browserstack service
|
|
7
4
|
* @param cap browser capablities
|
|
8
5
|
*/
|
|
9
|
-
function getBrowserDescription(cap) {
|
|
6
|
+
export function getBrowserDescription(cap) {
|
|
10
7
|
cap = cap || {};
|
|
11
8
|
if (cap['bstack:options']) {
|
|
12
9
|
cap = { ...cap, ...cap['bstack:options'] };
|
|
@@ -14,19 +11,18 @@ function getBrowserDescription(cap) {
|
|
|
14
11
|
/**
|
|
15
12
|
* These keys describe the browser the test was run on
|
|
16
13
|
*/
|
|
17
|
-
return
|
|
14
|
+
return BROWSER_DESCRIPTION
|
|
18
15
|
.map((k) => cap[k])
|
|
19
16
|
.filter(Boolean)
|
|
20
17
|
.join(' ');
|
|
21
18
|
}
|
|
22
|
-
exports.getBrowserDescription = getBrowserDescription;
|
|
23
19
|
/**
|
|
24
20
|
* get correct browser capabilities object in both multiremote and normal setups
|
|
25
21
|
* @param browser browser object
|
|
26
22
|
* @param caps browser capbilities object. In case of multiremote, the object itself should have a property named 'capabilities'
|
|
27
23
|
* @param browserName browser name in case of multiremote
|
|
28
24
|
*/
|
|
29
|
-
function getBrowserCapabilities(browser, caps, browserName) {
|
|
25
|
+
export function getBrowserCapabilities(browser, caps, browserName) {
|
|
30
26
|
if (!browser.isMultiremote) {
|
|
31
27
|
return { ...browser.capabilities, ...caps };
|
|
32
28
|
}
|
|
@@ -35,12 +31,11 @@ function getBrowserCapabilities(browser, caps, browserName) {
|
|
|
35
31
|
const cap = browserName && multiCaps[browserName] ? multiCaps[browserName].capabilities : {};
|
|
36
32
|
return { ...globalCap, ...cap };
|
|
37
33
|
}
|
|
38
|
-
exports.getBrowserCapabilities = getBrowserCapabilities;
|
|
39
34
|
/**
|
|
40
35
|
* check for browserstack W3C capabilities. Does not support legacy capabilities
|
|
41
36
|
* @param cap browser capabilities
|
|
42
37
|
*/
|
|
43
|
-
function isBrowserstackCapability(cap) {
|
|
38
|
+
export function isBrowserstackCapability(cap) {
|
|
44
39
|
return Boolean(cap &&
|
|
45
40
|
cap['bstack:options'] &&
|
|
46
41
|
// return false if the only cap in bstack:options is wdioService,
|
|
@@ -48,8 +43,7 @@ function isBrowserstackCapability(cap) {
|
|
|
48
43
|
!(Object.keys(cap['bstack:options']).length === 1 &&
|
|
49
44
|
cap['bstack:options'].wdioService));
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
function getParentSuiteName(fullTitle, testSuiteTitle) {
|
|
46
|
+
export function getParentSuiteName(fullTitle, testSuiteTitle) {
|
|
53
47
|
const fullTitleWords = fullTitle.split(' ');
|
|
54
48
|
const testSuiteTitleWords = testSuiteTitle.split(' ');
|
|
55
49
|
const shortestLength = Math.min(fullTitleWords.length, testSuiteTitleWords.length);
|
|
@@ -60,4 +54,3 @@ function getParentSuiteName(fullTitle, testSuiteTitle) {
|
|
|
60
54
|
}
|
|
61
55
|
return parentSuiteName.trim();
|
|
62
56
|
}
|
|
63
|
-
exports.getParentSuiteName = getParentSuiteName;
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/browserstack-service",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0-alpha.213+c5fb6d57e",
|
|
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",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"main": "./build",
|
|
9
8
|
"engines": {
|
|
10
|
-
"node": ">=
|
|
9
|
+
"node": "^16.13 || >=18"
|
|
11
10
|
},
|
|
12
11
|
"repository": {
|
|
13
12
|
"type": "git",
|
|
@@ -22,13 +21,17 @@
|
|
|
22
21
|
"bugs": {
|
|
23
22
|
"url": "https://github.com/webdriverio/webdriverio/issues"
|
|
24
23
|
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"exports": "./build/index.js",
|
|
26
|
+
"types": "./build/index.d.ts",
|
|
27
|
+
"typeScriptVersion": "3.8.3",
|
|
25
28
|
"dependencies": {
|
|
26
29
|
"@types/node": "^18.0.0",
|
|
27
|
-
"@wdio/logger": "
|
|
28
|
-
"@wdio/types": "
|
|
29
|
-
"browserstack-local": "^1.
|
|
30
|
-
"got": "^
|
|
31
|
-
"webdriverio": "
|
|
30
|
+
"@wdio/logger": "8.0.0-alpha.213+c5fb6d57e",
|
|
31
|
+
"@wdio/types": "8.0.0-alpha.213+c5fb6d57e",
|
|
32
|
+
"browserstack-local": "^1.5.1",
|
|
33
|
+
"got": "^12.1.0",
|
|
34
|
+
"webdriverio": "8.0.0-alpha.213+c5fb6d57e"
|
|
32
35
|
},
|
|
33
36
|
"peerDependencies": {
|
|
34
37
|
"@wdio/cli": "^5.0.0 || ^6.0.0 || ^7.0.0"
|
|
@@ -36,6 +39,5 @@
|
|
|
36
39
|
"publishConfig": {
|
|
37
40
|
"access": "public"
|
|
38
41
|
},
|
|
39
|
-
"
|
|
40
|
-
"gitHead": "4de5ffd553e64ac129980cbb0a374d061f884fa7"
|
|
42
|
+
"gitHead": "c5fb6d57e168d8bf939a5aa5c2ada5abaceec5eb"
|
|
41
43
|
}
|