@tvlabs/wdio-service 0.1.8 → 0.1.9

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 CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  ## Introduction
12
12
 
13
+ [![npm](https://img.shields.io/npm/v/@tvlabs/wdio-service)](https://www.npmjs.com/package/@tvlabs/wdio-service)
14
+
13
15
  The `@tvlabs/wdio-service` package uses a websocket to connect to the TV Labs platform before an Appium session begins, logging events relating to build upload and session creation as they occur. This offloads the responsibility of creating the TV Labs session from the `POST /session` Webdriver endpoint, leading to more reliable session requests and creation.
14
16
 
15
17
  If a build path is provided, the service first makes a build upload request to the TV Labs platform, and then sets the `tvlabs:build` capability to the newly created build ID.
@@ -74,7 +76,10 @@ async function run() {
74
76
  apiKey: process.env.TVLABS_API_TOKEN,
75
77
  }
76
78
 
77
- const service = new TVLabsService(serviceOpts, capabilities, {})
79
+ // NOTE: it is important to make sure that
80
+ // the wdOpts passed here are the same reference
81
+ // as the one passed to remote()
82
+ const service = new TVLabsService(serviceOpts, capabilities, wdOpts)
78
83
 
79
84
  // The TV Labs service does not use specs or a cid, pass default values.
80
85
  const cid = ""
@@ -141,3 +146,34 @@ run();
141
146
  - **Required:** No
142
147
  - **Default:** `false`
143
148
  - **Description:** Whether to continue the session request if any step fails. When `true`, the session request will still be made with the original provided capabilities. When `false`, the service will exit with a non-zero code.
149
+
150
+ ## Methods
151
+
152
+ ### `lastRequestId()`
153
+
154
+ - **Returns:** `string | undefined`
155
+ - **Description:** Returns the last request ID that was attached to a request made to the TV Labs platform. This is useful for correlating client-side logs with server-side logs. Returns `undefined` if no request has been made yet or if `attachRequestId` is set to `false`.
156
+
157
+ #### Example
158
+
159
+ ```javascript
160
+ import { remote } from 'webdriverio';
161
+ import { TVLabsService } from '@tvlabs/wdio-service';
162
+
163
+ const capabilities = { ... };
164
+ const wdOpts = { ... };
165
+
166
+ const service = new TVLabsService(
167
+ { apiKey: process.env.TVLABS_API_KEY },
168
+ capabilities,
169
+ wdOpts
170
+ );
171
+
172
+ await service.beforeSession(wdOpts, capabilities, [], '');
173
+
174
+ const driver = await remote(wdOpts);
175
+
176
+ // Get the last request ID
177
+ const requestId = service.lastRequestId();
178
+ console.log(`Last request ID: ${requestId}`);
179
+ ```
package/cjs/index.js CHANGED
@@ -136,7 +136,7 @@ class Logger {
136
136
  }
137
137
 
138
138
  var name = "@tvlabs/wdio-service";
139
- var version = "0.1.8";
139
+ var version = "0.1.9";
140
140
  var packageJson = {
141
141
  name: name,
142
142
  version: version};
@@ -453,6 +453,7 @@ class TVLabsService {
453
453
  _capabilities;
454
454
  _config;
455
455
  log;
456
+ requestId;
456
457
  constructor(_options, _capabilities, _config) {
457
458
  this._options = _options;
458
459
  this._capabilities = _capabilities;
@@ -462,6 +463,9 @@ class TVLabsService {
462
463
  this.setupRequestId();
463
464
  }
464
465
  }
466
+ lastRequestId() {
467
+ return this.requestId;
468
+ }
465
469
  onPrepare(_config, param) {
466
470
  try {
467
471
  if (!Array.isArray(param)) {
@@ -507,7 +511,8 @@ class TVLabsService {
507
511
  originalRequestOptions.headers = {};
508
512
  }
509
513
  this.setRequestHeader(originalRequestOptions.headers, 'x-request-id', requestId);
510
- this.log.info('ATTACHED REQUEST ID', requestId);
514
+ this.log.debug('ATTACHED REQUEST ID', requestId);
515
+ this.setRequestId(requestId);
511
516
  return originalRequestOptions;
512
517
  };
513
518
  }
@@ -524,6 +529,9 @@ class TVLabsService {
524
529
  }
525
530
  }
526
531
  }
532
+ setRequestId(id) {
533
+ this.requestId = id;
534
+ }
527
535
  continueOnError() {
528
536
  return this._options.continueOnError ?? false;
529
537
  }
package/cjs/service.d.ts CHANGED
@@ -5,11 +5,14 @@ export default class TVLabsService implements Services.ServiceInstance {
5
5
  private _capabilities;
6
6
  private _config;
7
7
  private log;
8
+ private requestId;
8
9
  constructor(_options: TVLabsServiceOptions, _capabilities: Capabilities.ResolvedTestrunnerCapabilities, _config: Options.WebdriverIO);
10
+ lastRequestId(): string | undefined;
9
11
  onPrepare(_config: Options.Testrunner, param: Capabilities.TestrunnerCapabilities): void;
10
12
  beforeSession(_config: Omit<Options.Testrunner, 'capabilities'>, capabilities: TVLabsCapabilities, _specs: string[], _cid: string): Promise<void>;
11
13
  private setupRequestId;
12
14
  private setRequestHeader;
15
+ private setRequestId;
13
16
  private continueOnError;
14
17
  private buildPath;
15
18
  private appSlug;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ,CAAC,eAAe;IAIlE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,GAAG,CAAS;gBAGV,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,EAAE,YAAY,CAAC,8BAA8B,EAC1D,OAAO,EAAE,OAAO,CAAC,WAAW;IAQtC,SAAS,CACP,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,KAAK,EAAE,YAAY,CAAC,sBAAsB;IAiBtC,aAAa,CACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EACjD,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM;IA+Cd,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ,CAAC,eAAe;IAKlE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAqB;gBAG5B,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,EAAE,YAAY,CAAC,8BAA8B,EAC1D,OAAO,EAAE,OAAO,CAAC,WAAW;IAQtC,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,SAAS,CACP,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,KAAK,EAAE,YAAY,CAAC,sBAAsB;IAiBtC,aAAa,CACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EACjD,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM;IA+Cd,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;CAGzB"}
package/esm/index.js CHANGED
@@ -110,7 +110,7 @@ class Logger {
110
110
  }
111
111
 
112
112
  var name = "@tvlabs/wdio-service";
113
- var version = "0.1.8";
113
+ var version = "0.1.9";
114
114
  var packageJson = {
115
115
  name: name,
116
116
  version: version};
@@ -427,6 +427,7 @@ class TVLabsService {
427
427
  _capabilities;
428
428
  _config;
429
429
  log;
430
+ requestId;
430
431
  constructor(_options, _capabilities, _config) {
431
432
  this._options = _options;
432
433
  this._capabilities = _capabilities;
@@ -436,6 +437,9 @@ class TVLabsService {
436
437
  this.setupRequestId();
437
438
  }
438
439
  }
440
+ lastRequestId() {
441
+ return this.requestId;
442
+ }
439
443
  onPrepare(_config, param) {
440
444
  try {
441
445
  if (!Array.isArray(param)) {
@@ -481,7 +485,8 @@ class TVLabsService {
481
485
  originalRequestOptions.headers = {};
482
486
  }
483
487
  this.setRequestHeader(originalRequestOptions.headers, 'x-request-id', requestId);
484
- this.log.info('ATTACHED REQUEST ID', requestId);
488
+ this.log.debug('ATTACHED REQUEST ID', requestId);
489
+ this.setRequestId(requestId);
485
490
  return originalRequestOptions;
486
491
  };
487
492
  }
@@ -498,6 +503,9 @@ class TVLabsService {
498
503
  }
499
504
  }
500
505
  }
506
+ setRequestId(id) {
507
+ this.requestId = id;
508
+ }
501
509
  continueOnError() {
502
510
  return this._options.continueOnError ?? false;
503
511
  }
package/esm/service.d.ts CHANGED
@@ -5,11 +5,14 @@ export default class TVLabsService implements Services.ServiceInstance {
5
5
  private _capabilities;
6
6
  private _config;
7
7
  private log;
8
+ private requestId;
8
9
  constructor(_options: TVLabsServiceOptions, _capabilities: Capabilities.ResolvedTestrunnerCapabilities, _config: Options.WebdriverIO);
10
+ lastRequestId(): string | undefined;
9
11
  onPrepare(_config: Options.Testrunner, param: Capabilities.TestrunnerCapabilities): void;
10
12
  beforeSession(_config: Omit<Options.Testrunner, 'capabilities'>, capabilities: TVLabsCapabilities, _specs: string[], _cid: string): Promise<void>;
11
13
  private setupRequestId;
12
14
  private setRequestHeader;
15
+ private setRequestId;
13
16
  private continueOnError;
14
17
  private buildPath;
15
18
  private appSlug;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ,CAAC,eAAe;IAIlE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,GAAG,CAAS;gBAGV,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,EAAE,YAAY,CAAC,8BAA8B,EAC1D,OAAO,EAAE,OAAO,CAAC,WAAW;IAQtC,SAAS,CACP,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,KAAK,EAAE,YAAY,CAAC,sBAAsB;IAiBtC,aAAa,CACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EACjD,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM;IA+Cd,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ,CAAC,eAAe;IAKlE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAqB;gBAG5B,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,EAAE,YAAY,CAAC,8BAA8B,EAC1D,OAAO,EAAE,OAAO,CAAC,WAAW;IAQtC,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,SAAS,CACP,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,KAAK,EAAE,YAAY,CAAC,sBAAsB;IAiBtC,aAAa,CACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EACjD,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM;IA+Cd,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;CAGzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tvlabs/wdio-service",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "WebdriverIO service that provides a better integration into TV Labs",
5
5
  "author": "Regan Karlewicz <regan@tvlabs.ai>",
6
6
  "license": "Apache-2.0",
package/src/service.ts CHANGED
@@ -14,6 +14,7 @@ import type {
14
14
 
15
15
  export default class TVLabsService implements Services.ServiceInstance {
16
16
  private log: Logger;
17
+ private requestId: string | undefined;
17
18
 
18
19
  constructor(
19
20
  private _options: TVLabsServiceOptions,
@@ -26,6 +27,10 @@ export default class TVLabsService implements Services.ServiceInstance {
26
27
  }
27
28
  }
28
29
 
30
+ lastRequestId(): string | undefined {
31
+ return this.requestId;
32
+ }
33
+
29
34
  onPrepare(
30
35
  _config: Options.Testrunner,
31
36
  param: Capabilities.TestrunnerCapabilities,
@@ -116,7 +121,9 @@ export default class TVLabsService implements Services.ServiceInstance {
116
121
  requestId,
117
122
  );
118
123
 
119
- this.log.info('ATTACHED REQUEST ID', requestId);
124
+ this.log.debug('ATTACHED REQUEST ID', requestId);
125
+
126
+ this.setRequestId(requestId);
120
127
 
121
128
  return originalRequestOptions;
122
129
  };
@@ -138,6 +145,10 @@ export default class TVLabsService implements Services.ServiceInstance {
138
145
  }
139
146
  }
140
147
 
148
+ private setRequestId(id: string) {
149
+ this.requestId = id;
150
+ }
151
+
141
152
  private continueOnError(): boolean {
142
153
  return this._options.continueOnError ?? false;
143
154
  }