@testchimp/playwright 0.1.37 → 0.1.39
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 +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/mobile-screen-transport-resync.d.ts +15 -0
- package/dist/mobile-screen-transport-resync.d.ts.map +1 -0
- package/dist/mobile-screen-transport-resync.js +73 -0
- package/dist/mobile-screen-transport-resync.js.map +1 -0
- package/dist/rum-automation-mobile.d.ts +22 -1
- package/dist/rum-automation-mobile.d.ts.map +1 -1
- package/dist/rum-automation-mobile.js +76 -12
- package/dist/rum-automation-mobile.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +5 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,6 +106,7 @@ Set these so the reporter can talk to TestChimp (env vars override programmatic
|
|
|
106
106
|
| `TESTCHIMP_PROJECT_TYPE` | No | Fixture/runtime switch: `web` (default) or mobile (`ios`/`android`). Mobile mode always pushes CI JSON via `device.openUrl` (TrueCoverage). |
|
|
107
107
|
| `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX` | No | Override set-URL prefix (default `testchimp-rum://truecoverage/v1/set?p=` + base64url JSON). |
|
|
108
108
|
| `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL` | No | Override clear URL (default `testchimp-rum://truecoverage/v1/clear`). |
|
|
109
|
+
| `TESTCHIMP_RUM_TRANSPORT_RESYNC` | No | Mobile `screen` fixture: set to `0` to disable automatic TrueCoverage `v1/set` after likely WebSocket/mobilecli transport failures (default: enabled). |
|
|
109
110
|
|
|
110
111
|
If `TESTCHIMP_API_KEY` is missing, the reporter logs a warning and disables reporting (no request is sent).
|
|
111
112
|
|
|
@@ -166,7 +167,7 @@ Retries are tracked; with `reportOnlyFinalAttempt: true` only the last attempt i
|
|
|
166
167
|
- **Subpath**: `@testchimp/playwright/runtime` — use `installTestChimp(test)` on your runner’s `test` object (see Quick start).
|
|
167
168
|
- **Web:** extends `page` to set `__TC_CI_TEST_INFO` for `@testchimp/rum-js`.
|
|
168
169
|
- **Mobile:** when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, registers hooks that call `device.openUrl` for the iOS Swift SDK and Android Kotlin SDK (same URL contract).
|
|
169
|
-
- **Named**: `buildCiTestInfoJson`, `attachMobileRumAutomationHooks`, etc., for advanced wiring.
|
|
170
|
+
- **Named**: `buildCiTestInfoJson`, `attachMobileRumAutomationHooks`, `resyncTrueCoverageSetForCurrentTest`, `isLikelyMobileTransportFailure`, etc., for advanced wiring.
|
|
170
171
|
|
|
171
172
|
---
|
|
172
173
|
|
|
@@ -184,7 +185,7 @@ Retries are tracked; with `reportOnlyFinalAttempt: true` only the last attempt i
|
|
|
184
185
|
- **RUM events not linked to tests / missing `ci_test_info` (mobile)**
|
|
185
186
|
Use `export const test = installTestChimp(...)` from a fixtures barrel and import `test` from there. Set `TESTCHIMP_PROJECT_TYPE=android|ios` and handle `testchimp-rum://truecoverage/...` in the app (`TestChimpRum.handleAutomationURL` on iOS, `TestChimpRum.handleAutomationUri` on Android).
|
|
186
187
|
**Android SDK:** use **testchimp-rum-android ≥ 0.1.7** (automation **`/v1/set`** on caller thread; **`/v1/flush`** drains buffered events when the runner opens that URL).
|
|
187
|
-
**Runner:** **`@testchimp/playwright` ≥ 0.1.
|
|
188
|
+
**Runner:** **`@testchimp/playwright` ≥ 0.1.39** sends `set` bursts after `launchApp`, settle delay, **`afterEach` `set` + `v1/flush`**, and **re-sends `set` after likely transport failures** on `screen` API calls (WebSocket **1006**, connection closed, etc.) so the next RUM emit can recover `ci_test_info`. Disable with **`TESTCHIMP_RUM_TRANSPORT_RESYNC=0`**. Tune **`TESTCHIMP_RUM_AUTOMATION_POST_SET_SETTLE_MS`** (0–500, default **100** ms) on slow devices. Optional URL overrides: **`TESTCHIMP_RUM_AUTOMATION_FLUSH_URL`**. If **`device.openUrl`** wedges (mobilecli), set **`TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS`** (default **25000**, clamp **100–120000**) so hooks fail fast instead of consuming the full test timeout.
|
|
188
189
|
|
|
189
190
|
- **RUM events not linked to tests (web)**
|
|
190
191
|
Same `installTestChimp` barrel; web uses `__TC_CI_TEST_INFO` on `page` for `@testchimp/rum-js`.
|
package/dist/index.d.ts
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* Runtime (`@testchimp/playwright/runtime`): use `installTrueCoverage` or `installTestChimp` (same behavior).
|
|
29
29
|
* Fixture/runtime switching: default web mode uses `page`; set `TESTCHIMP_PROJECT_TYPE=ios|android`
|
|
30
30
|
* (case-insensitive) to switch runtime fixture wiring to `screen`.
|
|
31
|
-
* Mobile TrueCoverage: `TESTCHIMP_PROJECT_TYPE=ios|android` + TestChimpRum URL handler; see README.
|
|
31
|
+
* Mobile TrueCoverage: `TESTCHIMP_PROJECT_TYPE=ios|android` + TestChimpRum URL handler; see README. Optional **`TESTCHIMP_RUM_TRANSPORT_RESYNC=0`** disables automatic `v1/set` after likely transport failures on mobile `screen` calls.
|
|
32
32
|
* ExploreChimp: set `EXPLORECHIMP_ENABLED=true`, use `test('…', async ({ markScreenState }) => …)`; `TESTCHIMP_BATCH_INVOCATION_ID`, sources/regex envs as documented in the runtime module. Set **`TESTCHIMP_BRANCH_NAME`** (or `TESTCHIMP_BRANCH`) locally so analyze requests send `branchName` and the server can persist `branch_id`.
|
|
33
33
|
* Suite batch id: the reporter writes `.testchimp-batch-invocation-id` under the Playwright project root at run start (when unset, generates a UUID) and removes it at run end so ExploreChimp fixtures and CI stay aligned.
|
|
34
34
|
*/
|
|
@@ -37,7 +37,8 @@ export { TestChimpApiClient } from './api-client';
|
|
|
37
37
|
export * from './types';
|
|
38
38
|
export * from './utils';
|
|
39
39
|
export { buildCiTestInfoJson, buildCiTestInfoObject, type CiTestInfo, type TestInfoForCi } from './ci-test-info';
|
|
40
|
-
export { attachMobileRumAutomationHooks, buildAutomationSetOpenUrl, getMobileRumAutomationUrls, type MobileRumAutomationUrls, } from './rum-automation-mobile';
|
|
40
|
+
export { attachMobileRumAutomationHooks, buildAutomationSetOpenUrl, getMobileRumAutomationUrls, isLikelyMobileTransportFailure, resyncTrueCoverageSetForCurrentTest, transportResyncDisabled, type MobileDeviceWorkerFixtures, type MobileRumAutomationUrls, } from './rum-automation-mobile';
|
|
41
|
+
export { attachMobileScreenTransportResync, wrapScreenForTransportResync, } from './mobile-screen-transport-resync';
|
|
41
42
|
/** ExploreChimp / agents.proto JSON mirrors (camelCase). */
|
|
42
43
|
export type * from './explorechimp/agents-explorechimp-json';
|
|
43
44
|
export { DataSourceEnum } from './explorechimp/agents-explorechimp-json';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,4DAA4D;AAC5D,mBAAmB,yCAAyC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,eAAe,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,mCAAmC,EACnC,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,4DAA4D;AAC5D,mBAAmB,yCAAyC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,eAAe,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* Runtime (`@testchimp/playwright/runtime`): use `installTrueCoverage` or `installTestChimp` (same behavior).
|
|
30
30
|
* Fixture/runtime switching: default web mode uses `page`; set `TESTCHIMP_PROJECT_TYPE=ios|android`
|
|
31
31
|
* (case-insensitive) to switch runtime fixture wiring to `screen`.
|
|
32
|
-
* Mobile TrueCoverage: `TESTCHIMP_PROJECT_TYPE=ios|android` + TestChimpRum URL handler; see README.
|
|
32
|
+
* Mobile TrueCoverage: `TESTCHIMP_PROJECT_TYPE=ios|android` + TestChimpRum URL handler; see README. Optional **`TESTCHIMP_RUM_TRANSPORT_RESYNC=0`** disables automatic `v1/set` after likely transport failures on mobile `screen` calls.
|
|
33
33
|
* ExploreChimp: set `EXPLORECHIMP_ENABLED=true`, use `test('…', async ({ markScreenState }) => …)`; `TESTCHIMP_BATCH_INVOCATION_ID`, sources/regex envs as documented in the runtime module. Set **`TESTCHIMP_BRANCH_NAME`** (or `TESTCHIMP_BRANCH`) locally so analyze requests send `branchName` and the server can persist `branch_id`.
|
|
34
34
|
* Suite batch id: the reporter writes `.testchimp-batch-invocation-id` under the Playwright project root at run start (when unset, generates a UUID) and removes it at run end so ExploreChimp fixtures and CI stay aligned.
|
|
35
35
|
*/
|
|
@@ -48,7 +48,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
48
48
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
49
49
|
};
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.DataSourceEnum = exports.getMobileRumAutomationUrls = exports.buildAutomationSetOpenUrl = exports.attachMobileRumAutomationHooks = exports.buildCiTestInfoObject = exports.buildCiTestInfoJson = exports.TestChimpApiClient = exports.TestChimpReporter = void 0;
|
|
51
|
+
exports.DataSourceEnum = exports.wrapScreenForTransportResync = exports.attachMobileScreenTransportResync = exports.transportResyncDisabled = exports.resyncTrueCoverageSetForCurrentTest = exports.isLikelyMobileTransportFailure = exports.getMobileRumAutomationUrls = exports.buildAutomationSetOpenUrl = exports.attachMobileRumAutomationHooks = exports.buildCiTestInfoObject = exports.buildCiTestInfoJson = exports.TestChimpApiClient = exports.TestChimpReporter = void 0;
|
|
52
52
|
var testchimp_reporter_1 = require("./testchimp-reporter");
|
|
53
53
|
Object.defineProperty(exports, "TestChimpReporter", { enumerable: true, get: function () { return testchimp_reporter_1.TestChimpReporter; } });
|
|
54
54
|
var api_client_1 = require("./api-client");
|
|
@@ -62,6 +62,12 @@ var rum_automation_mobile_1 = require("./rum-automation-mobile");
|
|
|
62
62
|
Object.defineProperty(exports, "attachMobileRumAutomationHooks", { enumerable: true, get: function () { return rum_automation_mobile_1.attachMobileRumAutomationHooks; } });
|
|
63
63
|
Object.defineProperty(exports, "buildAutomationSetOpenUrl", { enumerable: true, get: function () { return rum_automation_mobile_1.buildAutomationSetOpenUrl; } });
|
|
64
64
|
Object.defineProperty(exports, "getMobileRumAutomationUrls", { enumerable: true, get: function () { return rum_automation_mobile_1.getMobileRumAutomationUrls; } });
|
|
65
|
+
Object.defineProperty(exports, "isLikelyMobileTransportFailure", { enumerable: true, get: function () { return rum_automation_mobile_1.isLikelyMobileTransportFailure; } });
|
|
66
|
+
Object.defineProperty(exports, "resyncTrueCoverageSetForCurrentTest", { enumerable: true, get: function () { return rum_automation_mobile_1.resyncTrueCoverageSetForCurrentTest; } });
|
|
67
|
+
Object.defineProperty(exports, "transportResyncDisabled", { enumerable: true, get: function () { return rum_automation_mobile_1.transportResyncDisabled; } });
|
|
68
|
+
var mobile_screen_transport_resync_1 = require("./mobile-screen-transport-resync");
|
|
69
|
+
Object.defineProperty(exports, "attachMobileScreenTransportResync", { enumerable: true, get: function () { return mobile_screen_transport_resync_1.attachMobileScreenTransportResync; } });
|
|
70
|
+
Object.defineProperty(exports, "wrapScreenForTransportResync", { enumerable: true, get: function () { return mobile_screen_transport_resync_1.wrapScreenForTransportResync; } });
|
|
65
71
|
var agents_explorechimp_json_1 = require("./explorechimp/agents-explorechimp-json");
|
|
66
72
|
Object.defineProperty(exports, "DataSourceEnum", { enumerable: true, get: function () { return agents_explorechimp_json_1.DataSourceEnum; } });
|
|
67
73
|
// Default export for Playwright reporter configuration
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;;;;;;;;;;;;;;;;;AAEH,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,0CAAwB;AACxB,0CAAwB;AACxB,+CAAiH;AAAxG,mHAAA,mBAAmB,OAAA;AAAE,qHAAA,qBAAqB,OAAA;AACnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;;;;;;;;;;;;;;;;;AAEH,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,0CAAwB;AACxB,0CAAwB;AACxB,+CAAiH;AAAxG,mHAAA,mBAAmB,OAAA;AAAE,qHAAA,qBAAqB,OAAA;AACnD,iEASiC;AAR/B,uIAAA,8BAA8B,OAAA;AAC9B,kIAAA,yBAAyB,OAAA;AACzB,mIAAA,0BAA0B,OAAA;AAC1B,uIAAA,8BAA8B,OAAA;AAC9B,4IAAA,mCAAmC,OAAA;AACnC,gIAAA,uBAAuB,OAAA;AAIzB,mFAG0C;AAFxC,mJAAA,iCAAiC,OAAA;AACjC,8IAAA,4BAA4B,OAAA;AAI9B,oFAAyE;AAAhE,0HAAA,cAAc,OAAA;AAEvB,uDAAuD;AACvD,6DAAyD;AACzD,kBAAe,sCAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TestInfoForCi } from './ci-test-info';
|
|
2
|
+
type ScreenTransportCtx = {
|
|
3
|
+
device: unknown;
|
|
4
|
+
testInfo: TestInfoForCi;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Wrap a Mobilewright `screen` so async method failures that look like transport drops trigger a TrueCoverage SET resync before the error propagates.
|
|
8
|
+
*/
|
|
9
|
+
export declare function wrapScreenForTransportResync(screen: unknown, ctx: ScreenTransportCtx): unknown;
|
|
10
|
+
/**
|
|
11
|
+
* Extend the test type with a `screen` fixture that proxies callable screen APIs for transport-failure resync.
|
|
12
|
+
*/
|
|
13
|
+
export declare function attachMobileScreenTransportResync(testType: any): any;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=mobile-screen-transport-resync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-screen-transport-resync.d.ts","sourceRoot":"","sources":["../src/mobile-screen-transport-resync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAmCF;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAmB9F;AAED;;GAEG;AAEH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAWpE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapScreenForTransportResync = wrapScreenForTransportResync;
|
|
4
|
+
exports.attachMobileScreenTransportResync = attachMobileScreenTransportResync;
|
|
5
|
+
const rum_automation_mobile_1 = require("./rum-automation-mobile");
|
|
6
|
+
function isThenable(v) {
|
|
7
|
+
return v != null && typeof v.then === 'function';
|
|
8
|
+
}
|
|
9
|
+
async function runWithTransportResync(fn, ctx) {
|
|
10
|
+
try {
|
|
11
|
+
return await fn();
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
if (!(0, rum_automation_mobile_1.isLikelyMobileTransportFailure)(err)) {
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
17
|
+
const dev = ctx.device;
|
|
18
|
+
if (!dev || typeof dev.openUrl !== 'function') {
|
|
19
|
+
throw err;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
await (0, rum_automation_mobile_1.resyncTrueCoverageSetForCurrentTest)(dev, ctx.testInfo);
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.warn('[TestChimp] TrueCoverage: re-sent SET after a likely transport failure so the next RUM emit can carry ci_test_info again.');
|
|
25
|
+
}
|
|
26
|
+
catch (resyncErr) {
|
|
27
|
+
const m = resyncErr instanceof Error ? resyncErr.message : String(resyncErr);
|
|
28
|
+
// eslint-disable-next-line no-console
|
|
29
|
+
console.warn(`[TestChimp] TrueCoverage: SET resync failed (non-fatal): ${m}`);
|
|
30
|
+
}
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Wrap a Mobilewright `screen` so async method failures that look like transport drops trigger a TrueCoverage SET resync before the error propagates.
|
|
36
|
+
*/
|
|
37
|
+
function wrapScreenForTransportResync(screen, ctx) {
|
|
38
|
+
if ((0, rum_automation_mobile_1.transportResyncDisabled)() || screen == null || typeof screen !== 'object') {
|
|
39
|
+
return screen;
|
|
40
|
+
}
|
|
41
|
+
return new Proxy(screen, {
|
|
42
|
+
get(_target, prop, receiver) {
|
|
43
|
+
const v = Reflect.get(screen, prop, receiver);
|
|
44
|
+
if (typeof v !== 'function') {
|
|
45
|
+
return v;
|
|
46
|
+
}
|
|
47
|
+
return (...args) => {
|
|
48
|
+
const out = Reflect.apply(v, screen, args);
|
|
49
|
+
if (isThenable(out)) {
|
|
50
|
+
return runWithTransportResync(() => out, ctx);
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Extend the test type with a `screen` fixture that proxies callable screen APIs for transport-failure resync.
|
|
59
|
+
*/
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
function attachMobileScreenTransportResync(testType) {
|
|
62
|
+
if ((0, rum_automation_mobile_1.transportResyncDisabled)()) {
|
|
63
|
+
return testType;
|
|
64
|
+
}
|
|
65
|
+
return testType.extend({
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
screen: async ({ screen, device }, use, testInfo) => {
|
|
68
|
+
const ctx = { device, testInfo };
|
|
69
|
+
await use(wrapScreenForTransportResync(screen, ctx));
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=mobile-screen-transport-resync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-screen-transport-resync.js","sourceRoot":"","sources":["../src/mobile-screen-transport-resync.ts"],"names":[],"mappings":";;AAiDA,oEAmBC;AAMD,8EAWC;AApFD,mEAKiC;AAOjC,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,IAAI,IAAI,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAI,EAAoB,EAAE,GAAuB;IACpF,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAA,sDAA8B,EAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAyE,CAAC;QAC1F,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAA,2DAAmC,EACvC,GAAwD,EACxD,GAAG,CAAC,QAAQ,CACb,CAAC;YACF,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,2HAA2H,CAC5H,CAAC;QACJ,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7E,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,MAAe,EAAE,GAAuB;IACnF,IAAI,IAAA,+CAAuB,GAAE,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,MAAgB,EAAE;QACjC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;YACzB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC5B,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAiC,EAAE,MAAgB,EAAE,IAAI,CAAC,CAAC;gBACrF,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAuB,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,8DAA8D;AAC9D,SAAgB,iCAAiC,CAAC,QAAa;IAC7D,IAAI,IAAA,+CAAuB,GAAE,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB,8DAA8D;QAC9D,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAyC,EAAE,GAAQ,EAAE,QAAuB,EAAE,EAAE;YAC7G,MAAM,GAAG,GAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrD,MAAM,GAAG,CAAC,4BAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
|
+
import { type TestInfoForCi } from './ci-test-info';
|
|
1
2
|
export interface MobileRumAutomationUrls {
|
|
2
3
|
setUrlPrefix: string;
|
|
3
4
|
clearUrl: string;
|
|
4
5
|
flushUrl: string;
|
|
5
6
|
}
|
|
7
|
+
/** Mobilewright worker fixtures used by TrueCoverage hooks (`device` absent in non-mobile projects, e.g. setup). */
|
|
8
|
+
export type MobileDeviceWorkerFixtures = {
|
|
9
|
+
device?: {
|
|
10
|
+
openUrl: (url: string) => Promise<void>;
|
|
11
|
+
launchApp?: (bundleId: string) => Promise<void>;
|
|
12
|
+
} | null;
|
|
13
|
+
bundleId?: string;
|
|
14
|
+
};
|
|
15
|
+
/** Disable automatic TrueCoverage SET after mobilecli/WebSocket transport errors (`TESTCHIMP_RUM_TRANSPORT_RESYNC=0`). */
|
|
16
|
+
export declare function transportResyncDisabled(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Heuristic: mobilecli / WebSocket abnormal close or connection drop (e.g. code 1006).
|
|
19
|
+
* Used to re-send TrueCoverage `SET` so the next RUM emit can carry `ci_test_info` again.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isLikelyMobileTransportFailure(err: unknown): boolean;
|
|
6
22
|
/**
|
|
7
23
|
* URL prefix and clear URL for Mobilewright TrueCoverage (`device.openUrl`).
|
|
8
24
|
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL`,
|
|
9
|
-
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL
|
|
25
|
+
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL`, `TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS` (per `openUrl`/`launchApp` call, default 25000, clamp 100–120000).
|
|
10
26
|
*/
|
|
11
27
|
export declare function getMobileRumAutomationUrls(): MobileRumAutomationUrls;
|
|
12
28
|
export declare function buildAutomationSetOpenUrl(setUrlPrefix: string, ciJson: string): string | {
|
|
13
29
|
error: string;
|
|
14
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Re-send a single TrueCoverage `v1/set` for the current test (e.g. after a mobilecli/WebSocket transport drop)
|
|
33
|
+
* so the next RUM emit can attach `ci_test_info` again.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resyncTrueCoverageSetForCurrentTest(device: MobileDeviceWorkerFixtures['device'], testInfo: TestInfoForCi): Promise<boolean>;
|
|
15
36
|
/**
|
|
16
37
|
* Register `beforeEach` / `afterEach` on the given Playwright `TestType` to push CI JSON into the app via
|
|
17
38
|
* `device.openUrl` (mobilecli `device.url`). Used when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rum-automation-mobile.d.ts","sourceRoot":"","sources":["../src/rum-automation-mobile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rum-automation-mobile.d.ts","sourceRoot":"","sources":["../src/rum-automation-mobile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA+CzE,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oHAAoH;AACpH,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACjD,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF,0HAA0H;AAC1H,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAepE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAMpE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS1G;AAqED;;;GAGG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAC5C,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;;;;;;GAQG;AAEH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAwCjE"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transportResyncDisabled = transportResyncDisabled;
|
|
4
|
+
exports.isLikelyMobileTransportFailure = isLikelyMobileTransportFailure;
|
|
3
5
|
exports.getMobileRumAutomationUrls = getMobileRumAutomationUrls;
|
|
4
6
|
exports.buildAutomationSetOpenUrl = buildAutomationSetOpenUrl;
|
|
7
|
+
exports.resyncTrueCoverageSetForCurrentTest = resyncTrueCoverageSetForCurrentTest;
|
|
5
8
|
exports.attachMobileRumAutomationHooks = attachMobileRumAutomationHooks;
|
|
6
9
|
const ci_test_info_1 = require("./ci-test-info");
|
|
7
10
|
const DEFAULT_SET_PREFIX = 'testchimp-rum://truecoverage/v1/set?p=';
|
|
@@ -24,10 +27,61 @@ function resolvePostSetSettleMs() {
|
|
|
24
27
|
return 100;
|
|
25
28
|
return Math.max(0, Math.min(500, n));
|
|
26
29
|
}
|
|
30
|
+
/** Per-call cap for `device.openUrl` / `device.launchApp` so a wedged driver does not burn the whole test timeout. */
|
|
31
|
+
function resolveOpenUrlTimeoutMs() {
|
|
32
|
+
const raw = process.env.TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS;
|
|
33
|
+
if (raw === undefined || raw === '')
|
|
34
|
+
return 25000;
|
|
35
|
+
const n = parseInt(raw, 10);
|
|
36
|
+
if (Number.isNaN(n))
|
|
37
|
+
return 25000;
|
|
38
|
+
return Math.max(100, Math.min(120000, n));
|
|
39
|
+
}
|
|
40
|
+
async function withTimeout(promise, ms, operation) {
|
|
41
|
+
let timer;
|
|
42
|
+
try {
|
|
43
|
+
return await Promise.race([
|
|
44
|
+
promise,
|
|
45
|
+
new Promise((_, reject) => {
|
|
46
|
+
timer = setTimeout(() => reject(new Error(`${operation} timed out after ${ms}ms`)), ms);
|
|
47
|
+
}),
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
if (timer !== undefined)
|
|
52
|
+
clearTimeout(timer);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Disable automatic TrueCoverage SET after mobilecli/WebSocket transport errors (`TESTCHIMP_RUM_TRANSPORT_RESYNC=0`). */
|
|
56
|
+
function transportResyncDisabled() {
|
|
57
|
+
return process.env.TESTCHIMP_RUM_TRANSPORT_RESYNC?.trim() === '0';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Heuristic: mobilecli / WebSocket abnormal close or connection drop (e.g. code 1006).
|
|
61
|
+
* Used to re-send TrueCoverage `SET` so the next RUM emit can carry `ci_test_info` again.
|
|
62
|
+
*/
|
|
63
|
+
function isLikelyMobileTransportFailure(err) {
|
|
64
|
+
if (transportResyncDisabled())
|
|
65
|
+
return false;
|
|
66
|
+
const m = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
67
|
+
if (m.length === 0)
|
|
68
|
+
return false;
|
|
69
|
+
const needles = [
|
|
70
|
+
'1006',
|
|
71
|
+
'websocket',
|
|
72
|
+
'connection closed',
|
|
73
|
+
'econnreset',
|
|
74
|
+
'socket hang up',
|
|
75
|
+
'network connection lost',
|
|
76
|
+
'rpc',
|
|
77
|
+
'mobilecli',
|
|
78
|
+
];
|
|
79
|
+
return needles.some((n) => m.includes(n));
|
|
80
|
+
}
|
|
27
81
|
/**
|
|
28
82
|
* URL prefix and clear URL for Mobilewright TrueCoverage (`device.openUrl`).
|
|
29
83
|
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL`,
|
|
30
|
-
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL
|
|
84
|
+
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL`, `TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS` (per `openUrl`/`launchApp` call, default 25000, clamp 100–120000).
|
|
31
85
|
*/
|
|
32
86
|
function getMobileRumAutomationUrls() {
|
|
33
87
|
return {
|
|
@@ -49,11 +103,15 @@ function buildAutomationSetOpenUrl(setUrlPrefix, ciJson) {
|
|
|
49
103
|
async function sleep(ms) {
|
|
50
104
|
await new Promise((r) => setTimeout(r, ms));
|
|
51
105
|
}
|
|
106
|
+
async function openUrlOnce(device, url) {
|
|
107
|
+
const ms = resolveOpenUrlTimeoutMs();
|
|
108
|
+
await withTimeout(device.openUrl(url), ms, 'TrueCoverage device.openUrl');
|
|
109
|
+
}
|
|
52
110
|
async function openUrlAutomationWithRetries(device, url) {
|
|
53
111
|
let lastErr;
|
|
54
112
|
for (let attempt = 0; attempt < SET_OPEN_URL_MAX_ATTEMPTS; attempt++) {
|
|
55
113
|
try {
|
|
56
|
-
await device
|
|
114
|
+
await openUrlOnce(device, url);
|
|
57
115
|
return;
|
|
58
116
|
}
|
|
59
117
|
catch (err) {
|
|
@@ -93,6 +151,18 @@ async function pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix,
|
|
|
93
151
|
await pushSetUrlWithPostLaunchRepeat(device, built, Math.max(1, repeatBurst));
|
|
94
152
|
return true;
|
|
95
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Re-send a single TrueCoverage `v1/set` for the current test (e.g. after a mobilecli/WebSocket transport drop)
|
|
156
|
+
* so the next RUM emit can attach `ci_test_info` again.
|
|
157
|
+
*/
|
|
158
|
+
async function resyncTrueCoverageSetForCurrentTest(device, testInfo) {
|
|
159
|
+
if (!device || typeof device.openUrl !== 'function') {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
const d = device;
|
|
163
|
+
const { setUrlPrefix } = getMobileRumAutomationUrls();
|
|
164
|
+
return pushTrueCoverageSetForCurrentTest(d, testInfo, setUrlPrefix, 1);
|
|
165
|
+
}
|
|
96
166
|
/**
|
|
97
167
|
* Register `beforeEach` / `afterEach` on the given Playwright `TestType` to push CI JSON into the app via
|
|
98
168
|
* `device.openUrl` (mobilecli `device.url`). Used when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`.
|
|
@@ -109,19 +179,13 @@ function attachMobileRumAutomationHooks(testType) {
|
|
|
109
179
|
if (!device || typeof device.openUrl !== 'function') {
|
|
110
180
|
return;
|
|
111
181
|
}
|
|
112
|
-
|
|
113
|
-
await device.openUrl(clearUrl);
|
|
114
|
-
}
|
|
115
|
-
catch (err) {
|
|
116
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
117
|
-
// eslint-disable-next-line no-console
|
|
118
|
-
console.warn(`[TestChimp] TrueCoverage device.openUrl(clear-before-set) failed (non-fatal): ${msg}`);
|
|
119
|
-
}
|
|
182
|
+
await openUrlAutomationWithRetries(device, clearUrl);
|
|
120
183
|
let launchedApp = false;
|
|
121
184
|
const bid = typeof bundleId === 'string' && bundleId.trim() !== '' ? bundleId.trim() : undefined;
|
|
122
185
|
if (bid != null && typeof device.launchApp === 'function') {
|
|
123
186
|
try {
|
|
124
|
-
|
|
187
|
+
const ms = resolveOpenUrlTimeoutMs();
|
|
188
|
+
await withTimeout(device.launchApp(bid), ms, 'TrueCoverage device.launchApp');
|
|
125
189
|
launchedApp = true;
|
|
126
190
|
}
|
|
127
191
|
catch (err) {
|
|
@@ -143,7 +207,7 @@ function attachMobileRumAutomationHooks(testType) {
|
|
|
143
207
|
if (!device || typeof device.openUrl !== 'function') {
|
|
144
208
|
return;
|
|
145
209
|
}
|
|
146
|
-
await
|
|
210
|
+
await resyncTrueCoverageSetForCurrentTest(device, testInfo);
|
|
147
211
|
await openUrlAutomationWithRetries(device, flushUrl);
|
|
148
212
|
});
|
|
149
213
|
return testType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rum-automation-mobile.js","sourceRoot":"","sources":["../src/rum-automation-mobile.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rum-automation-mobile.js","sourceRoot":"","sources":["../src/rum-automation-mobile.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Side-effect `import '@testchimp/playwright/runtime'` registers on the active test runtime:
|
|
9
9
|
* default `@playwright/test`, or `@mobilewright/test` when `TESTCHIMP_PROJECT_TYPE=ios|android`.
|
|
10
10
|
*
|
|
11
|
-
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, hooks call `device.openUrl` to push CI JSON; integrate TestChimpRum (iOS/Android) URL handling in the app. End-of-test `v1/flush` uploads buffered RUM before the next test's `clear`.
|
|
11
|
+
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, hooks call `device.openUrl` to push CI JSON; integrate TestChimpRum (iOS/Android) URL handling in the app. End-of-test `v1/flush` uploads buffered RUM before the next test's `clear`. When the fixture key is `screen`, the `screen` object is proxied so likely WebSocket/mobilecli transport failures trigger an extra `v1/set` resync (disable with `TESTCHIMP_RUM_TRANSPORT_RESYNC=0`).
|
|
12
12
|
*/
|
|
13
13
|
import { isExploreChimpEnabled } from './explorechimp';
|
|
14
14
|
/** Bound screen/state marker from the `markScreenState` Playwright fixture. */
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAGL,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAGL,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAWxB,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C/F;;;GAGG;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAyClD;AAED,8GAA8G;AAC9G,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Side-effect `import '@testchimp/playwright/runtime'` registers on the active test runtime:
|
|
10
10
|
* default `@playwright/test`, or `@mobilewright/test` when `TESTCHIMP_PROJECT_TYPE=ios|android`.
|
|
11
11
|
*
|
|
12
|
-
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, hooks call `device.openUrl` to push CI JSON; integrate TestChimpRum (iOS/Android) URL handling in the app. End-of-test `v1/flush` uploads buffered RUM before the next test's `clear`.
|
|
12
|
+
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, hooks call `device.openUrl` to push CI JSON; integrate TestChimpRum (iOS/Android) URL handling in the app. End-of-test `v1/flush` uploads buffered RUM before the next test's `clear`. When the fixture key is `screen`, the `screen` object is proxied so likely WebSocket/mobilecli transport failures trigger an extra `v1/set` resync (disable with `TESTCHIMP_RUM_TRANSPORT_RESYNC=0`).
|
|
13
13
|
*/
|
|
14
14
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
15
|
if (k2 === undefined) k2 = k;
|
|
@@ -53,6 +53,7 @@ const ci_test_info_1 = require("./ci-test-info");
|
|
|
53
53
|
const explorechimp_1 = require("./explorechimp");
|
|
54
54
|
Object.defineProperty(exports, "isExploreChimpEnabled", { enumerable: true, get: function () { return explorechimp_1.isExploreChimpEnabled; } });
|
|
55
55
|
const project_type_1 = require("./project-type");
|
|
56
|
+
const mobile_screen_transport_resync_1 = require("./mobile-screen-transport-resync");
|
|
56
57
|
const rum_automation_mobile_1 = require("./rum-automation-mobile");
|
|
57
58
|
/** Resolve test runtime module from the consumer project (web: Playwright, mobile: Mobilewright). */
|
|
58
59
|
const pwRequire = (0, module_1.createRequire)(path.join(process.cwd(), 'package.json'));
|
|
@@ -136,6 +137,9 @@ function installTrueCoverage(test) {
|
|
|
136
137
|
}
|
|
137
138
|
if (mobileProject) {
|
|
138
139
|
chain = (0, rum_automation_mobile_1.attachMobileRumAutomationHooks)(chain);
|
|
140
|
+
if (fixtureKey === 'screen') {
|
|
141
|
+
chain = (0, mobile_screen_transport_resync_1.attachMobileScreenTransportResync)(chain);
|
|
142
|
+
}
|
|
139
143
|
}
|
|
140
144
|
return chain;
|
|
141
145
|
}
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEH,kDAyCC;AA7GD,2CAA6B;AAC7B,mCAAuC;AACvC,iDAAqD;AACrD,iDAIwB;AA2Gf,sGA5GP,oCAAqB,OA4GO;AA1G9B,iDAA8F;AAC9F,qFAAqF;AACrF,mEAAyE;AAEzE,qGAAqG;AACrG,MAAM,SAAS,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,MAAM,UAAU,GAAG,IAAA,4BAAa,GAAE,CAAC;AACnC,MAAM,aAAa,GAAG,IAAA,kCAAmB,GAAE,CAAC;AAC5C,MAAM,iBAAiB,GAAG,IAAA,uCAAwB,GAAE,CAAC;AAKrD,8DAA8D;AAC9D,SAAS,yBAAyB,CAAC,IAAS;IAC1C,6FAA6F;IAC7F,gEAAgE;IAChE,MAAM,WAAW,GAAG,CAAC,aAAsB,EAA0B,EAAE;QACrE,OAAO,KAAK,EAAE,UAAkB,EAAE,SAAkB,EAAE,EAAE;YACtD,IAAI,IAAA,oCAAqB,GAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAA,6CAA8B,EAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC7E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CAAC,gEAAgE,GAAG,EAAE,CAAC,CAAC;oBACpF,IAAI,CAAC;wBACH,MAAM,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBAC3D,CAAC;oBAAC,MAAM,CAAC;wBACP,gEAAgE;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,8DAA8D;YAC9D,eAAe,EAAE,KAAK,EAAE,EAAE,MAAM,EAAuB,EAAE,GAAQ,EAAE,EAAE;gBACnE,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;QACjB,8DAA8D;QAC9D,eAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAqB,EAAE,GAAQ,EAAE,EAAE;YAC/D,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,SAAgB,mBAAmB,CAAC,IAAS;IAC3C,MAAM,MAAM,GAAG,aAAa;QAC1B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACV,8DAA8D;YAC9D,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAiB,EAAE,GAAQ,EAAE,QAAa,EAAE,EAAE;gBAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA+B,CAAC;gBACzD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACxD,MAAM,UAAU,GAAG,IAAA,kCAAmB,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAEjE,MAAM,IAAI,CAAC,aAAa,CACtB,CAAC,IAAY,EAAE,EAAE;oBACd,UAAwD,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBACrF,CAAC,EACD,UAAU,CACX,CAAC;gBAEF,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAY,EAAE,EAAE;wBAClC,UAAwD,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBACrF,CAAC,EAAE,UAAU,CAAC,CAAC;gBACjB,CAAC;gBAAC,MAAM,CAAC;oBACP,+CAA+C;gBACjD,CAAC;gBAED,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,KAAK,GAAoB,QAAQ,CAAC;IACtC,IAAI,IAAA,oCAAqB,GAAE,EAAE,CAAC;QAC5B,KAAK,GAAG,IAAA,uCAAwB,EAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,GAAG,IAAA,sDAA8B,EAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,IAAA,kEAAiC,EAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8GAA8G;AACjG,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AAIpD,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,mGAAmG;AACnG,KAAK,UAAU,2BAA2B,CAAC,UAAkB,EAAE,SAAkB;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GACT,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;QAC1B,CAAC,CAAC,oBAAoB,CAAC;IAC3B,MAAM,KAAK,GAAG,gBAAgB,MAAM,MAAM,KAAK,EAAE,CAAC;IAClD,8DAA8D;IAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,iBAAiB,CAAQ,CAAC;IACrD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAChC,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,iBAAiB,CAAQ,CAAC;AAE/D,mBAAmB,CAAC,QAAQ,CAAC,CAAC"}
|
package/package.json
CHANGED