@testchimp/playwright 0.1.36 → 0.1.38
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 +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/rum-automation-mobile.d.ts +5 -2
- package/dist/rum-automation-mobile.d.ts.map +1 -1
- package/dist/rum-automation-mobile.js +44 -16
- package/dist/rum-automation-mobile.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -183,8 +183,8 @@ Retries are tracked; with `reportOnlyFinalAttempt: true` only the last attempt i
|
|
|
183
183
|
|
|
184
184
|
- **RUM events not linked to tests / missing `ci_test_info` (mobile)**
|
|
185
185
|
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
|
-
**Android SDK:** use **testchimp-rum-android ≥ 0.1.
|
|
187
|
-
**Runner:** **`@testchimp/playwright` ≥ 0.1.
|
|
186
|
+
**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.38** sends `set` bursts after `launchApp`, settle delay, **`afterEach` `set` + `v1/flush`** so short tests still upload RUM before the next test’s `clear`. 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
188
|
|
|
189
189
|
- **RUM events not linked to tests (web)**
|
|
190
190
|
Same `installTestChimp` barrel; web uses `__TC_CI_TEST_INFO` on `page` for `@testchimp/rum-js`.
|
package/dist/index.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ 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, } from './rum-automation-mobile';
|
|
40
|
+
export { attachMobileRumAutomationHooks, buildAutomationSetOpenUrl, getMobileRumAutomationUrls, type MobileRumAutomationUrls, } from './rum-automation-mobile';
|
|
41
41
|
/** ExploreChimp / agents.proto JSON mirrors (camelCase). */
|
|
42
42
|
export type * from './explorechimp/agents-explorechimp-json';
|
|
43
43
|
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,
|
|
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"}
|
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,iEAKiC;AAJ/B,uIAAA,8BAA8B,OAAA;AAC9B,kIAAA,yBAAyB,OAAA;AACzB,mIAAA,0BAA0B,OAAA;AAK5B,oFAAyE;AAAhE,0HAAA,cAAc,OAAA;AAEvB,uDAAuD;AACvD,6DAAyD;AACzD,kBAAe,sCAAiB,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export interface MobileRumAutomationUrls {
|
|
2
2
|
setUrlPrefix: string;
|
|
3
3
|
clearUrl: string;
|
|
4
|
+
flushUrl: string;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
7
|
* URL prefix and clear URL for Mobilewright TrueCoverage (`device.openUrl`).
|
|
7
|
-
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL
|
|
8
|
+
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL`,
|
|
9
|
+
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL`, `TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS` (per `openUrl`/`launchApp` call, default 25000, clamp 100–120000).
|
|
8
10
|
*/
|
|
9
11
|
export declare function getMobileRumAutomationUrls(): MobileRumAutomationUrls;
|
|
10
12
|
export declare function buildAutomationSetOpenUrl(setUrlPrefix: string, ciJson: string): string | {
|
|
@@ -16,7 +18,8 @@ export declare function buildAutomationSetOpenUrl(setUrlPrefix: string, ciJson:
|
|
|
16
18
|
*
|
|
17
19
|
* Each test's `beforeEach` clears prior CI, optionally `launchApp`, then sends one or more `set` URLs and
|
|
18
20
|
* a short settle delay so the app can apply CI before steps run. `afterEach` sends one more `set` for the
|
|
19
|
-
* same test (helps late emits / async tails
|
|
21
|
+
* same test (helps late emits / async tails), then `testchimp-rum://truecoverage/v1/flush` so buffered RUM
|
|
22
|
+
* uploads before the next test's `clear` (short runs vs the SDK timer flush).
|
|
20
23
|
*/
|
|
21
24
|
export declare function attachMobileRumAutomationHooks(testType: any): any;
|
|
22
25
|
//# sourceMappingURL=rum-automation-mobile.d.ts.map
|
|
@@ -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":"AA+CA,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD;;;;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;;;;;;;;GAQG;AAEH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAwCjE"}
|
|
@@ -6,6 +6,7 @@ exports.attachMobileRumAutomationHooks = attachMobileRumAutomationHooks;
|
|
|
6
6
|
const ci_test_info_1 = require("./ci-test-info");
|
|
7
7
|
const DEFAULT_SET_PREFIX = 'testchimp-rum://truecoverage/v1/set?p=';
|
|
8
8
|
const DEFAULT_CLEAR_URL = 'testchimp-rum://truecoverage/v1/clear';
|
|
9
|
+
const DEFAULT_FLUSH_URL = 'testchimp-rum://truecoverage/v1/flush';
|
|
9
10
|
/** Max length for the full openUrl string (conservative for iOS). */
|
|
10
11
|
const MAX_OPEN_URL_CHARS = 8000;
|
|
11
12
|
const SET_OPEN_URL_MAX_ATTEMPTS = 3;
|
|
@@ -23,14 +24,41 @@ function resolvePostSetSettleMs() {
|
|
|
23
24
|
return 100;
|
|
24
25
|
return Math.max(0, Math.min(500, n));
|
|
25
26
|
}
|
|
27
|
+
/** Per-call cap for `device.openUrl` / `device.launchApp` so a wedged driver does not burn the whole test timeout. */
|
|
28
|
+
function resolveOpenUrlTimeoutMs() {
|
|
29
|
+
const raw = process.env.TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS;
|
|
30
|
+
if (raw === undefined || raw === '')
|
|
31
|
+
return 25000;
|
|
32
|
+
const n = parseInt(raw, 10);
|
|
33
|
+
if (Number.isNaN(n))
|
|
34
|
+
return 25000;
|
|
35
|
+
return Math.max(100, Math.min(120000, n));
|
|
36
|
+
}
|
|
37
|
+
async function withTimeout(promise, ms, operation) {
|
|
38
|
+
let timer;
|
|
39
|
+
try {
|
|
40
|
+
return await Promise.race([
|
|
41
|
+
promise,
|
|
42
|
+
new Promise((_, reject) => {
|
|
43
|
+
timer = setTimeout(() => reject(new Error(`${operation} timed out after ${ms}ms`)), ms);
|
|
44
|
+
}),
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
if (timer !== undefined)
|
|
49
|
+
clearTimeout(timer);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
26
52
|
/**
|
|
27
53
|
* URL prefix and clear URL for Mobilewright TrueCoverage (`device.openUrl`).
|
|
28
|
-
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL
|
|
54
|
+
* Optional overrides: `TESTCHIMP_RUM_AUTOMATION_SET_PREFIX`, `TESTCHIMP_RUM_AUTOMATION_CLEAR_URL`,
|
|
55
|
+
* `TESTCHIMP_RUM_AUTOMATION_FLUSH_URL`, `TESTCHIMP_RUM_AUTOMATION_OPEN_URL_TIMEOUT_MS` (per `openUrl`/`launchApp` call, default 25000, clamp 100–120000).
|
|
29
56
|
*/
|
|
30
57
|
function getMobileRumAutomationUrls() {
|
|
31
58
|
return {
|
|
32
59
|
setUrlPrefix: process.env.TESTCHIMP_RUM_AUTOMATION_SET_PREFIX?.trim() || DEFAULT_SET_PREFIX,
|
|
33
60
|
clearUrl: process.env.TESTCHIMP_RUM_AUTOMATION_CLEAR_URL?.trim() || DEFAULT_CLEAR_URL,
|
|
61
|
+
flushUrl: process.env.TESTCHIMP_RUM_AUTOMATION_FLUSH_URL?.trim() || DEFAULT_FLUSH_URL,
|
|
34
62
|
};
|
|
35
63
|
}
|
|
36
64
|
function buildAutomationSetOpenUrl(setUrlPrefix, ciJson) {
|
|
@@ -46,11 +74,15 @@ function buildAutomationSetOpenUrl(setUrlPrefix, ciJson) {
|
|
|
46
74
|
async function sleep(ms) {
|
|
47
75
|
await new Promise((r) => setTimeout(r, ms));
|
|
48
76
|
}
|
|
49
|
-
async function
|
|
77
|
+
async function openUrlOnce(device, url) {
|
|
78
|
+
const ms = resolveOpenUrlTimeoutMs();
|
|
79
|
+
await withTimeout(device.openUrl(url), ms, 'TrueCoverage device.openUrl');
|
|
80
|
+
}
|
|
81
|
+
async function openUrlAutomationWithRetries(device, url) {
|
|
50
82
|
let lastErr;
|
|
51
83
|
for (let attempt = 0; attempt < SET_OPEN_URL_MAX_ATTEMPTS; attempt++) {
|
|
52
84
|
try {
|
|
53
|
-
await device
|
|
85
|
+
await openUrlOnce(device, url);
|
|
54
86
|
return;
|
|
55
87
|
}
|
|
56
88
|
catch (err) {
|
|
@@ -62,12 +94,12 @@ async function openUrlSetWithRetries(device, url) {
|
|
|
62
94
|
}
|
|
63
95
|
const msg = lastErr instanceof Error ? lastErr.message : String(lastErr);
|
|
64
96
|
// eslint-disable-next-line no-console
|
|
65
|
-
console.warn(`[TestChimp] TrueCoverage device.openUrl
|
|
97
|
+
console.warn(`[TestChimp] TrueCoverage device.openUrl failed after ${SET_OPEN_URL_MAX_ATTEMPTS} attempts (non-fatal): ${msg}`);
|
|
66
98
|
}
|
|
67
99
|
async function pushSetUrlWithPostLaunchRepeat(device, url, repeats) {
|
|
68
100
|
const total = Math.max(1, repeats);
|
|
69
101
|
for (let i = 0; i < total; i++) {
|
|
70
|
-
await
|
|
102
|
+
await openUrlAutomationWithRetries(device, url);
|
|
71
103
|
if (i < total - 1) {
|
|
72
104
|
await sleep(SET_AFTER_LAUNCH_REPEAT_DELAY_MS);
|
|
73
105
|
}
|
|
@@ -96,28 +128,23 @@ async function pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix,
|
|
|
96
128
|
*
|
|
97
129
|
* Each test's `beforeEach` clears prior CI, optionally `launchApp`, then sends one or more `set` URLs and
|
|
98
130
|
* a short settle delay so the app can apply CI before steps run. `afterEach` sends one more `set` for the
|
|
99
|
-
* same test (helps late emits / async tails
|
|
131
|
+
* same test (helps late emits / async tails), then `testchimp-rum://truecoverage/v1/flush` so buffered RUM
|
|
132
|
+
* uploads before the next test's `clear` (short runs vs the SDK timer flush).
|
|
100
133
|
*/
|
|
101
134
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
135
|
function attachMobileRumAutomationHooks(testType) {
|
|
103
|
-
const { setUrlPrefix, clearUrl } = getMobileRumAutomationUrls();
|
|
136
|
+
const { setUrlPrefix, clearUrl, flushUrl } = getMobileRumAutomationUrls();
|
|
104
137
|
testType.beforeEach(async ({ device, bundleId }, testInfo) => {
|
|
105
138
|
if (!device || typeof device.openUrl !== 'function') {
|
|
106
139
|
return;
|
|
107
140
|
}
|
|
108
|
-
|
|
109
|
-
await device.openUrl(clearUrl);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
113
|
-
// eslint-disable-next-line no-console
|
|
114
|
-
console.warn(`[TestChimp] TrueCoverage device.openUrl(clear-before-set) failed (non-fatal): ${msg}`);
|
|
115
|
-
}
|
|
141
|
+
await openUrlAutomationWithRetries(device, clearUrl);
|
|
116
142
|
let launchedApp = false;
|
|
117
143
|
const bid = typeof bundleId === 'string' && bundleId.trim() !== '' ? bundleId.trim() : undefined;
|
|
118
144
|
if (bid != null && typeof device.launchApp === 'function') {
|
|
119
145
|
try {
|
|
120
|
-
|
|
146
|
+
const ms = resolveOpenUrlTimeoutMs();
|
|
147
|
+
await withTimeout(device.launchApp(bid), ms, 'TrueCoverage device.launchApp');
|
|
121
148
|
launchedApp = true;
|
|
122
149
|
}
|
|
123
150
|
catch (err) {
|
|
@@ -140,6 +167,7 @@ function attachMobileRumAutomationHooks(testType) {
|
|
|
140
167
|
return;
|
|
141
168
|
}
|
|
142
169
|
await pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix, 1);
|
|
170
|
+
await openUrlAutomationWithRetries(device, flushUrl);
|
|
143
171
|
});
|
|
144
172
|
return testType;
|
|
145
173
|
}
|
|
@@ -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.
|
|
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`.
|
|
12
12
|
*/
|
|
13
13
|
import { isExploreChimpEnabled } from './explorechimp';
|
|
14
14
|
/** Bound screen/state marker from the `markScreenState` Playwright fixture. */
|
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.
|
|
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`.
|
|
13
13
|
*/
|
|
14
14
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
15
|
if (k2 === undefined) k2 = k;
|
package/package.json
CHANGED