@testingbot/mobilewright-driver 0.5.0 → 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-info.d.ts","sourceRoot":"","sources":["../src/test-info.ts"],"names":[],"mappings":"AAMA,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IACtE,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IAC7E,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/B,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,IAAI,eAAe,CAAA;KAAE,CAAA;CAAE,CAAC;AA4B5D,8EAA8E;AAC9E,wBAAgB,eAAe,IAAI,eAAe,GAAG,SAAS,CAM7D;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,MAAM,CAGhG;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS,CAahF;AAQD,yEAAyE;AACzE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAE1F"}
@@ -0,0 +1,71 @@
1
+ import { createRequire } from 'node:module';
2
+ import { join } from 'node:path';
3
+ import createDebug from 'debug';
4
+ const debug = createDebug('testingbot:test-info');
5
+ let playwrightTest;
6
+ /**
7
+ * Load the `@playwright/test` copy the user's tests actually run on:
8
+ * `test.info()` reads state held by that module instance, so it is resolved
9
+ * the way `@mobilewright/test` resolves it, falling back to the project's own.
10
+ */
11
+ function loadPlaywrightTest() {
12
+ if (playwrightTest !== undefined)
13
+ return playwrightTest;
14
+ const fromProject = createRequire(join(process.cwd(), 'package.json'));
15
+ const origins = [
16
+ () => createRequire(fromProject.resolve('@mobilewright/test')),
17
+ () => fromProject,
18
+ ];
19
+ for (const origin of origins) {
20
+ try {
21
+ playwrightTest = origin()('@playwright/test');
22
+ return playwrightTest;
23
+ }
24
+ catch {
25
+ // try the next origin
26
+ }
27
+ }
28
+ debug('@playwright/test not resolvable — per-test reporting falls back to the run observer');
29
+ playwrightTest = null;
30
+ return null;
31
+ }
32
+ /** The test running in this worker right now, or undefined outside a test. */
33
+ export function currentTestInfo() {
34
+ try {
35
+ return loadPlaywrightTest()?.test.info();
36
+ }
37
+ catch {
38
+ return undefined; // test.info() throws outside a running test
39
+ }
40
+ }
41
+ /** Dashboard name for a test attempt: describe › title, marked when retried. */
42
+ export function attemptName(info) {
43
+ const path = info.titlePath.length > 1 ? info.titlePath.slice(1) : [info.title];
44
+ return path.join(' › ') + (info.retry > 0 ? ` (retry ${info.retry})` : '');
45
+ }
46
+ /** The attempt's outcome, valid once the test body has finished (fixture teardown). */
47
+ export function attemptOutcome(info) {
48
+ if (!info.status)
49
+ return undefined;
50
+ const status = info.status === 'skipped'
51
+ ? 'skipped'
52
+ : info.status === info.expectedStatus ? 'passed' : 'failed';
53
+ const message = info.errors.find((e) => e.message)?.message;
54
+ return {
55
+ id: info.testId,
56
+ title: attemptName(info),
57
+ retry: info.retry,
58
+ status,
59
+ ...(status === 'failed' ? { error: firstLine(message) ?? info.status } : {}),
60
+ };
61
+ }
62
+ function firstLine(message) {
63
+ // Playwright error messages carry ANSI colour codes.
64
+ // eslint-disable-next-line no-control-regex
65
+ return message?.replace(/\u001b\[[0-9;]*m/g, '').split('\n').find((l) => l.trim())?.trim().slice(0, 200);
66
+ }
67
+ /** Test seam: replace the resolver (undefined restores the real one). */
68
+ export function setPlaywrightTestForTesting(value) {
69
+ playwrightTest = value;
70
+ }
71
+ //# sourceMappingURL=test-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-info.js","sourceRoot":"","sources":["../src/test-info.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testingbot/mobilewright-driver",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "TestingBot driver for Mobilewright — run mobilewright tests on TestingBot's device cloud",
5
5
  "homepage": "https://testingbot.com",
6
6
  "license": "Apache-2.0",