@testchimp/playwright 0.1.43 → 0.2.1
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 +11 -14
- package/dist/execution-context.d.ts +28 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +109 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/explorechimp/index.d.ts +6 -2
- package/dist/explorechimp/index.d.ts.map +1 -1
- package/dist/explorechimp/index.js +20 -15
- package/dist/explorechimp/index.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/project-type.d.ts +20 -3
- package/dist/project-type.d.ts.map +1 -1
- package/dist/project-type.js +40 -17
- package/dist/project-type.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 +13 -11
- package/dist/rum-automation-mobile.js.map +1 -1
- package/dist/runtime.d.ts +10 -10
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +69 -55
- package/dist/runtime.js.map +1 -1
- package/dist/testchimp-reporter.d.ts.map +1 -1
- package/dist/testchimp-reporter.js +6 -2
- package/dist/testchimp-reporter.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +10 -4
package/dist/project-type.js
CHANGED
|
@@ -1,26 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
/** Mobilewright exposes `test` / `expect` from `@mobilewright/test`, not the `mobilewright` CLI package. */
|
|
9
|
-
const DEFAULT_MOBILE_RUNTIME_MODULE = '@mobilewright/test';
|
|
10
|
-
function normalizedProjectType() {
|
|
11
|
-
return String(process.env.TESTCHIMP_PROJECT_TYPE ?? '')
|
|
3
|
+
exports.platformFromTestInfo = platformFromTestInfo;
|
|
4
|
+
exports.isMobilePlatform = isMobilePlatform;
|
|
5
|
+
exports.getFixtureKeyForPlatform = getFixtureKeyForPlatform;
|
|
6
|
+
function parsePlatformValue(raw) {
|
|
7
|
+
const p = String(raw ?? '')
|
|
12
8
|
.trim()
|
|
13
9
|
.toLowerCase();
|
|
10
|
+
if (p === 'ios' || p === 'android') {
|
|
11
|
+
return p;
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/** Mobilewright 0.0.36+ pushes `device.platform` on testInfo after device allocation. */
|
|
16
|
+
function platformFromAnnotations(testInfo) {
|
|
17
|
+
for (const a of testInfo.annotations ?? []) {
|
|
18
|
+
if (a.type === 'device.platform') {
|
|
19
|
+
const parsed = parsePlatformValue(a.description ?? '');
|
|
20
|
+
if (parsed) {
|
|
21
|
+
return parsed;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
17
26
|
}
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Read run platform for TrueCoverage / ExploreChimp branching.
|
|
29
|
+
* Primary: Mobilewright `projects[].use.platform`. Fallback: `testInfo.annotations` (`device.platform`).
|
|
30
|
+
* Omitted / unknown => web.
|
|
31
|
+
*/
|
|
32
|
+
function platformFromTestInfo(testInfo) {
|
|
33
|
+
const fromUse = parsePlatformValue(String(testInfo.project?.use?.platform ?? ''));
|
|
34
|
+
if (fromUse) {
|
|
35
|
+
return fromUse;
|
|
36
|
+
}
|
|
37
|
+
const fromAnnotations = platformFromAnnotations(testInfo);
|
|
38
|
+
if (fromAnnotations) {
|
|
39
|
+
return fromAnnotations;
|
|
40
|
+
}
|
|
41
|
+
return 'web';
|
|
20
42
|
}
|
|
21
|
-
function
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
|
|
43
|
+
function isMobilePlatform(platform) {
|
|
44
|
+
return platform === 'ios' || platform === 'android';
|
|
45
|
+
}
|
|
46
|
+
function getFixtureKeyForPlatform(platform) {
|
|
47
|
+
return isMobilePlatform(platform) ? 'screen' : 'page';
|
|
25
48
|
}
|
|
26
49
|
//# sourceMappingURL=project-type.js.map
|
package/dist/project-type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-type.js","sourceRoot":"","sources":["../src/project-type.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"project-type.js","sourceRoot":"","sources":["../src/project-type.ts"],"names":[],"mappings":";;AAqCA,oDAYC;AAED,4CAEC;AAED,4DAEC;AAhDD,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;SACxB,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yFAAyF;AACzF,SAAS,uBAAuB,CAAC,QAAmC;IAClE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAmC;IACtE,MAAM,OAAO,GAAG,kBAAkB,CAChC,MAAM,CAAE,QAAQ,CAAC,OAAO,EAAE,GAAyC,EAAE,QAAQ,IAAI,EAAE,CAAC,CACrF,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,eAAe,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAqB;IACpD,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,CAAC;AACtD,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAqB;IAC5D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type TestInfoForCi } from './ci-test-info';
|
|
2
|
+
/** Optional pause (ms) after the last `set` so the app can process the VIEW intent before the next Playwright step. */
|
|
3
|
+
export declare function resolvePostSetSettleMs(): number;
|
|
2
4
|
export interface MobileRumAutomationUrls {
|
|
3
5
|
setUrlPrefix: string;
|
|
4
6
|
clearUrl: string;
|
|
@@ -46,7 +48,8 @@ export declare function buildAutomationSetOpenUrl(setUrlPrefix: string, ciJson:
|
|
|
46
48
|
/**
|
|
47
49
|
* Wrap Mobilewright `test` so TrueCoverage SET runs in the `device` fixture immediately after
|
|
48
50
|
* Mobilewright's own `launchApp`, before fixtures that depend on `device` (e.g. `screen`).
|
|
49
|
-
*
|
|
51
|
+
* Wired only from {@link installTrueCoverage} when `uiFixture: 'screen'`.
|
|
52
|
+
* No platform gate here (0.1.43 parity): SET runs whenever `device.openUrl` exists.
|
|
50
53
|
*/
|
|
51
54
|
export declare function extendMobileTestWithTrueCoverageDevice(test: any): any;
|
|
52
55
|
/**
|
|
@@ -57,7 +60,7 @@ export declare function resyncTrueCoverageSetForCurrentTest(device: MobileDevice
|
|
|
57
60
|
/**
|
|
58
61
|
* Register `afterEach` (and optionally `afterAll`) on the given Playwright `TestType` for mobile TrueCoverage.
|
|
59
62
|
* **SET + settle + optional `/v1/clear`** run in the extended `device` fixture from {@link extendMobileTestWithTrueCoverageDevice}
|
|
60
|
-
* (wired by `installTrueCoverage` when `
|
|
63
|
+
* (wired by `installTrueCoverage` when `uiFixture: 'screen'`).
|
|
61
64
|
*
|
|
62
65
|
* By default, **`/v1/clear` is not sent** between tests unless `TESTCHIMP_RUM_AUTOMATION_CLEAR_BETWEEN_TESTS=1`
|
|
63
66
|
* (handled in the device fixture). **`afterEach`:** trailing `SET` then `/v1/flush`. **`afterAll`:** only when
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAazE,uHAAuH;AACvH,wBAAgB,sBAAsB,IAAI,MAAM,CAM/C;AAyBD,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;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAepE;AAED;;;;;;GAMG;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;AA0DD;;;;;GAKG;AAEH,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAwBrE;AAED;;;GAGG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAC5C,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;;;;;;;GAQG;AAEH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAyBjE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePostSetSettleMs = resolvePostSetSettleMs;
|
|
3
4
|
exports.transportResyncDisabled = transportResyncDisabled;
|
|
4
5
|
exports.clearBetweenTestsEnabled = clearBetweenTestsEnabled;
|
|
5
6
|
exports.suiteTeardownClearEnabled = suiteTeardownClearEnabled;
|
|
@@ -10,6 +11,7 @@ exports.extendMobileTestWithTrueCoverageDevice = extendMobileTestWithTrueCoverag
|
|
|
10
11
|
exports.resyncTrueCoverageSetForCurrentTest = resyncTrueCoverageSetForCurrentTest;
|
|
11
12
|
exports.attachMobileRumAutomationHooks = attachMobileRumAutomationHooks;
|
|
12
13
|
const ci_test_info_1 = require("./ci-test-info");
|
|
14
|
+
const project_type_1 = require("./project-type");
|
|
13
15
|
const DEFAULT_SET_PREFIX = 'testchimp-rum://truecoverage/v1/set?p=';
|
|
14
16
|
const DEFAULT_CLEAR_URL = 'testchimp-rum://truecoverage/v1/clear';
|
|
15
17
|
const DEFAULT_FLUSH_URL = 'testchimp-rum://truecoverage/v1/flush';
|
|
@@ -146,12 +148,6 @@ async function openUrlAutomationWithRetries(device, url) {
|
|
|
146
148
|
// eslint-disable-next-line no-console
|
|
147
149
|
console.warn(`[TestChimp] TrueCoverage device.openUrl failed after ${SET_OPEN_URL_MAX_ATTEMPTS} attempts (non-fatal): ${msg}`);
|
|
148
150
|
}
|
|
149
|
-
async function pushSetUrlRepeats(device, url, repeats) {
|
|
150
|
-
const total = Math.max(1, repeats);
|
|
151
|
-
for (let i = 0; i < total; i++) {
|
|
152
|
-
await openUrlAutomationWithRetries(device, url);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
151
|
let warnedMobileAutomationOnce = false;
|
|
156
152
|
async function pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix, repeatBurst) {
|
|
157
153
|
const project = testInfo.project;
|
|
@@ -166,13 +162,17 @@ async function pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix,
|
|
|
166
162
|
}
|
|
167
163
|
return false;
|
|
168
164
|
}
|
|
169
|
-
|
|
165
|
+
const total = Math.max(1, repeatBurst);
|
|
166
|
+
for (let i = 0; i < total; i++) {
|
|
167
|
+
await openUrlAutomationWithRetries(device, built);
|
|
168
|
+
}
|
|
170
169
|
return true;
|
|
171
170
|
}
|
|
172
171
|
/**
|
|
173
172
|
* Wrap Mobilewright `test` so TrueCoverage SET runs in the `device` fixture immediately after
|
|
174
173
|
* Mobilewright's own `launchApp`, before fixtures that depend on `device` (e.g. `screen`).
|
|
175
|
-
*
|
|
174
|
+
* Wired only from {@link installTrueCoverage} when `uiFixture: 'screen'`.
|
|
175
|
+
* No platform gate here (0.1.43 parity): SET runs whenever `device.openUrl` exists.
|
|
176
176
|
*/
|
|
177
177
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
178
178
|
function extendMobileTestWithTrueCoverageDevice(test) {
|
|
@@ -207,14 +207,13 @@ async function resyncTrueCoverageSetForCurrentTest(device, testInfo) {
|
|
|
207
207
|
if (!device || typeof device.openUrl !== 'function') {
|
|
208
208
|
return false;
|
|
209
209
|
}
|
|
210
|
-
const d = device;
|
|
211
210
|
const { setUrlPrefix } = getMobileRumAutomationUrls();
|
|
212
|
-
return pushTrueCoverageSetForCurrentTest(
|
|
211
|
+
return pushTrueCoverageSetForCurrentTest(device, testInfo, setUrlPrefix, 1);
|
|
213
212
|
}
|
|
214
213
|
/**
|
|
215
214
|
* Register `afterEach` (and optionally `afterAll`) on the given Playwright `TestType` for mobile TrueCoverage.
|
|
216
215
|
* **SET + settle + optional `/v1/clear`** run in the extended `device` fixture from {@link extendMobileTestWithTrueCoverageDevice}
|
|
217
|
-
* (wired by `installTrueCoverage` when `
|
|
216
|
+
* (wired by `installTrueCoverage` when `uiFixture: 'screen'`).
|
|
218
217
|
*
|
|
219
218
|
* By default, **`/v1/clear` is not sent** between tests unless `TESTCHIMP_RUM_AUTOMATION_CLEAR_BETWEEN_TESTS=1`
|
|
220
219
|
* (handled in the device fixture). **`afterEach`:** trailing `SET` then `/v1/flush`. **`afterAll`:** only when
|
|
@@ -224,6 +223,9 @@ async function resyncTrueCoverageSetForCurrentTest(device, testInfo) {
|
|
|
224
223
|
function attachMobileRumAutomationHooks(testType) {
|
|
225
224
|
const { flushUrl, clearUrl } = getMobileRumAutomationUrls();
|
|
226
225
|
testType.afterEach(async ({ device }, testInfo) => {
|
|
226
|
+
if (!(0, project_type_1.isMobilePlatform)((0, project_type_1.platformFromTestInfo)(testInfo))) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
227
229
|
if (!device || typeof device.openUrl !== 'function') {
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
@@ -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
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
* TestChimp Playwright runtime: TrueCoverage CI metadata (`installTrueCoverage` / `installTestChimp`) and,
|
|
3
3
|
* when `EXPLORECHIMP_ENABLED`, ExploreChimp local analytics (same installs — no separate ExploreChimp install).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* The same `markScreenState` fixture records a runner `test.step` when ExploreChimp is off, and runs ExploreChimp analytics when it is on.
|
|
8
|
-
* Side-effect `import '@testchimp/playwright/runtime'` registers on the active test runtime:
|
|
9
|
-
* default `@playwright/test`, or `@mobilewright/test` when `TESTCHIMP_PROJECT_TYPE=ios|android`.
|
|
10
|
-
*
|
|
11
|
-
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, `installTrueCoverage` extends the Mobilewright **`device`** fixture so **`SET`** runs right after Mobilewright’s `launchApp`, before `screen` (see `extendMobileTestWithTrueCoverageDevice`). **`afterEach`** still sends a trailing `SET` + `v1/flush`. Integrate TestChimpRum URL handling in the app. By default, **`/v1/clear` is not sent** between tests (opt in with `TESTCHIMP_RUM_AUTOMATION_CLEAR_BETWEEN_TESTS=1`, handled in the `device` fixture). Optional **`TESTCHIMP_RUM_AUTOMATION_SUITE_TEARDOWN_CLEAR=1`** registers `afterAll` `clear`+`flush`. When the fixture key is `screen`, `screen` is proxied for transport-failure `SET` resync (`TESTCHIMP_RUM_TRANSPORT_RESYNC=0` to disable).
|
|
5
|
+
* Platform branching uses Mobilewright `projects[].use.platform` (ios/android). When omitted, web behaviour applies.
|
|
6
|
+
* Pass `{ uiFixture: 'screen' }` when wrapping `@mobilewright/test`; default `page` for `@playwright/test`.
|
|
12
7
|
*/
|
|
13
8
|
import { isExploreChimpEnabled } from './explorechimp';
|
|
9
|
+
import { type FixtureKey } from './project-type';
|
|
14
10
|
/** Bound screen/state marker from the `markScreenState` Playwright fixture. */
|
|
15
11
|
export type MarkScreenStateFixture = (screenName: string, stateName?: string) => Promise<void>;
|
|
12
|
+
export type InstallTestChimpOptions = {
|
|
13
|
+
/** `screen` for `@mobilewright/test` barrels; `page` for `@playwright/test` (default). */
|
|
14
|
+
uiFixture?: FixtureKey;
|
|
15
|
+
};
|
|
16
16
|
/**
|
|
17
17
|
* Register TrueCoverage CI metadata injection on the given Playwright `test` object
|
|
18
|
-
* (including `mergeTests(...)` output). When `EXPLORECHIMP_ENABLED`, also applies ExploreChimp
|
|
18
|
+
* (including `mergeTests(...)` output). When `EXPLORECHIMP_ENABLED`, also applies ExploreChimp wiring.
|
|
19
19
|
*/
|
|
20
|
-
export declare function installTrueCoverage(test: any): any;
|
|
21
|
-
/** Same
|
|
20
|
+
export declare function installTrueCoverage(test: any, options?: InstallTestChimpOptions): any;
|
|
21
|
+
/** Same behaviour as {@link installTrueCoverage} — umbrella name for TrueCoverage + ExploreChimp (via env). */
|
|
22
22
|
export declare const installTestChimp: typeof installTrueCoverage;
|
|
23
23
|
export { isExploreChimpEnabled };
|
|
24
24
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAGL,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AASzF,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/F,MAAM,MAAM,uBAAuB,GAAG;IACpC,0FAA0F;IAC1F,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB,CAAC;AAgGF;;;GAGG;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,uBAA4B,GAAG,GAAG,CAyBzF;AAED,+GAA+G;AAC/G,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -3,13 +3,8 @@
|
|
|
3
3
|
* TestChimp Playwright runtime: TrueCoverage CI metadata (`installTrueCoverage` / `installTestChimp`) and,
|
|
4
4
|
* when `EXPLORECHIMP_ENABLED`, ExploreChimp local analytics (same installs — no separate ExploreChimp install).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* The same `markScreenState` fixture records a runner `test.step` when ExploreChimp is off, and runs ExploreChimp analytics when it is on.
|
|
9
|
-
* Side-effect `import '@testchimp/playwright/runtime'` registers on the active test runtime:
|
|
10
|
-
* default `@playwright/test`, or `@mobilewright/test` when `TESTCHIMP_PROJECT_TYPE=ios|android`.
|
|
11
|
-
*
|
|
12
|
-
* Mobile TrueCoverage: when `TESTCHIMP_PROJECT_TYPE` is `ios`/`android`, `installTrueCoverage` extends the Mobilewright **`device`** fixture so **`SET`** runs right after Mobilewright’s `launchApp`, before `screen` (see `extendMobileTestWithTrueCoverageDevice`). **`afterEach`** still sends a trailing `SET` + `v1/flush`. Integrate TestChimpRum URL handling in the app. By default, **`/v1/clear` is not sent** between tests (opt in with `TESTCHIMP_RUM_AUTOMATION_CLEAR_BETWEEN_TESTS=1`, handled in the `device` fixture). Optional **`TESTCHIMP_RUM_AUTOMATION_SUITE_TEARDOWN_CLEAR=1`** registers `afterAll` `clear`+`flush`. When the fixture key is `screen`, `screen` is proxied for transport-failure `SET` resync (`TESTCHIMP_RUM_TRANSPORT_RESYNC=0` to disable).
|
|
6
|
+
* Platform branching uses Mobilewright `projects[].use.platform` (ios/android). When omitted, web behaviour applies.
|
|
7
|
+
* Pass `{ uiFixture: 'screen' }` when wrapping `@mobilewright/test`; default `page` for `@playwright/test`.
|
|
13
8
|
*/
|
|
14
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -55,15 +50,36 @@ Object.defineProperty(exports, "isExploreChimpEnabled", { enumerable: true, get:
|
|
|
55
50
|
const project_type_1 = require("./project-type");
|
|
56
51
|
const mobile_screen_transport_resync_1 = require("./mobile-screen-transport-resync");
|
|
57
52
|
const rum_automation_mobile_1 = require("./rum-automation-mobile");
|
|
58
|
-
/** Resolve test runtime module from the consumer project (web: Playwright, mobile: Mobilewright). */
|
|
59
53
|
const pwRequire = (0, module_1.createRequire)(path.join(process.cwd(), 'package.json'));
|
|
60
|
-
const fixtureKey = (0, project_type_1.getFixtureKey)();
|
|
61
|
-
const mobileProject = (0, project_type_1.isMobileProjectType)();
|
|
62
|
-
const runtimeModuleName = (0, project_type_1.getTestRuntimeModuleName)();
|
|
63
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
function extendWebTrueCoveragePage(test) {
|
|
56
|
+
return test.extend({
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
+
page: async ({ page }, use, testInfo) => {
|
|
59
|
+
if ((0, project_type_1.isMobilePlatform)((0, project_type_1.platformFromTestInfo)(testInfo))) {
|
|
60
|
+
await use(page);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const project = testInfo.project;
|
|
64
|
+
const projectRootDir = project.rootDir ?? process.cwd();
|
|
65
|
+
const jsonString = (0, ci_test_info_1.buildCiTestInfoJson)(testInfo, projectRootDir);
|
|
66
|
+
await page.addInitScript((info) => {
|
|
67
|
+
globalThis.__TC_CI_TEST_INFO = info;
|
|
68
|
+
}, jsonString);
|
|
69
|
+
try {
|
|
70
|
+
await page.evaluate((info) => {
|
|
71
|
+
globalThis.__TC_CI_TEST_INFO = info;
|
|
72
|
+
}, jsonString);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Ignore: page may be closed or not ready yet.
|
|
76
|
+
}
|
|
77
|
+
await use(page);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
82
|
+
function addMarkScreenStateFixture(test, uiFixture) {
|
|
67
83
|
const buildMarkFn = (fixtureTarget) => {
|
|
68
84
|
return async (screenName, stateName) => {
|
|
69
85
|
if ((0, explorechimp_1.isExploreChimpEnabled)()) {
|
|
@@ -87,63 +103,64 @@ function addMarkScreenStateFixture(test) {
|
|
|
87
103
|
}
|
|
88
104
|
};
|
|
89
105
|
};
|
|
90
|
-
if (
|
|
106
|
+
if (uiFixture === 'screen') {
|
|
91
107
|
return test.extend({
|
|
92
108
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
|
-
markScreenState: async ({ screen }, use) => {
|
|
109
|
+
markScreenState: async ({ screen }, use, testInfo) => {
|
|
110
|
+
const platform = (0, project_type_1.platformFromTestInfo)(testInfo);
|
|
111
|
+
if (!(0, project_type_1.isMobilePlatform)(platform)) {
|
|
112
|
+
await use(buildMarkFn(undefined));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (screen === undefined) {
|
|
116
|
+
throw new Error('[TestChimp] Missing "screen" fixture. Use @mobilewright/test in fixtures/index.js and set projects[].use.platform to ios or android on mobile UI projects.');
|
|
117
|
+
}
|
|
94
118
|
await use(buildMarkFn(screen));
|
|
95
119
|
},
|
|
96
120
|
});
|
|
97
121
|
}
|
|
98
122
|
return test.extend({
|
|
99
123
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
|
-
markScreenState: async ({ page }, use) => {
|
|
124
|
+
markScreenState: async ({ page }, use, testInfo) => {
|
|
125
|
+
const platform = (0, project_type_1.platformFromTestInfo)(testInfo);
|
|
126
|
+
if ((0, project_type_1.isMobilePlatform)(platform)) {
|
|
127
|
+
await use(buildMarkFn(undefined));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (page === undefined) {
|
|
131
|
+
throw new Error('[TestChimp] Missing "page" fixture. Use @playwright/test in fixtures/index.js for web and API specs.');
|
|
132
|
+
}
|
|
101
133
|
await use(buildMarkFn(page));
|
|
102
134
|
},
|
|
103
135
|
});
|
|
104
136
|
}
|
|
105
137
|
/**
|
|
106
138
|
* Register TrueCoverage CI metadata injection on the given Playwright `test` object
|
|
107
|
-
* (including `mergeTests(...)` output). When `EXPLORECHIMP_ENABLED`, also applies ExploreChimp
|
|
139
|
+
* (including `mergeTests(...)` output). When `EXPLORECHIMP_ENABLED`, also applies ExploreChimp wiring.
|
|
108
140
|
*/
|
|
109
141
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
-
function installTrueCoverage(test) {
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
try {
|
|
123
|
-
await page.evaluate((info) => {
|
|
124
|
-
globalThis.__TC_CI_TEST_INFO = info;
|
|
125
|
-
}, jsonString);
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
// Ignore: page may be closed or not ready yet.
|
|
129
|
-
}
|
|
130
|
-
await use(page);
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
const withMark = addMarkScreenStateFixture(withCi);
|
|
134
|
-
let chain = withMark;
|
|
142
|
+
function installTrueCoverage(test, options = {}) {
|
|
143
|
+
const uiFixture = options.uiFixture ?? 'page';
|
|
144
|
+
// Web (@playwright/test): only extend `page` + optional ExploreChimp — never touch `device` / mobile hooks.
|
|
145
|
+
let chain = test;
|
|
146
|
+
if (uiFixture === 'screen') {
|
|
147
|
+
chain = (0, rum_automation_mobile_1.extendMobileTestWithTrueCoverageDevice)(chain);
|
|
148
|
+
}
|
|
149
|
+
if (uiFixture === 'page') {
|
|
150
|
+
chain = extendWebTrueCoveragePage(chain);
|
|
151
|
+
}
|
|
152
|
+
const withMark = addMarkScreenStateFixture(chain, uiFixture);
|
|
153
|
+
let result = withMark;
|
|
135
154
|
if ((0, explorechimp_1.isExploreChimpEnabled)()) {
|
|
136
|
-
|
|
155
|
+
result = (0, explorechimp_1.applyExploreChimpFixture)(withMark, uiFixture);
|
|
137
156
|
}
|
|
138
|
-
if (
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
chain = (0, mobile_screen_transport_resync_1.attachMobileScreenTransportResync)(chain);
|
|
142
|
-
}
|
|
157
|
+
if (uiFixture === 'screen') {
|
|
158
|
+
result = (0, rum_automation_mobile_1.attachMobileRumAutomationHooks)(result);
|
|
159
|
+
result = (0, mobile_screen_transport_resync_1.attachMobileScreenTransportResync)(result);
|
|
143
160
|
}
|
|
144
|
-
return
|
|
161
|
+
return result;
|
|
145
162
|
}
|
|
146
|
-
/** Same
|
|
163
|
+
/** Same behaviour as {@link installTrueCoverage} — umbrella name for TrueCoverage + ExploreChimp (via env). */
|
|
147
164
|
exports.installTestChimp = installTrueCoverage;
|
|
148
165
|
const DEFAULT_SCREEN_STATE = 'default';
|
|
149
166
|
/** Trace-only marker: Playwright `test.step` + console (ExploreChimp-off path for the fixture). */
|
|
@@ -157,13 +174,10 @@ async function runTraceOnlyMarkScreenState(screenName, stateName) {
|
|
|
157
174
|
: DEFAULT_SCREEN_STATE;
|
|
158
175
|
const title = `ScreenState: ${screen} | ${state}`;
|
|
159
176
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
|
-
const { test } = pwRequire(
|
|
177
|
+
const { test } = pwRequire('@playwright/test');
|
|
161
178
|
await test.step(title, async () => {
|
|
162
179
|
// eslint-disable-next-line no-console
|
|
163
180
|
console.log(`reached ${screen} | ${state}`);
|
|
164
181
|
});
|
|
165
182
|
}
|
|
166
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
167
|
-
const { test: rootTest } = pwRequire(runtimeModuleName);
|
|
168
|
-
installTrueCoverage(rootTest);
|
|
169
183
|
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testchimp-reporter.d.ts","sourceRoot":"","sources":["../src/testchimp-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EAEX,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,wBAAwB,EAQzB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"testchimp-reporter.d.ts","sourceRoot":"","sources":["../src/testchimp-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const sharp_1 = __importDefault(require("sharp"));
|
|
9
9
|
const api_client_1 = require("./api-client");
|
|
10
10
|
const types_1 = require("./types");
|
|
11
|
+
const execution_context_1 = require("./execution-context");
|
|
11
12
|
const utils_1 = require("./utils");
|
|
12
13
|
const index_1 = require("./explorechimp/index");
|
|
13
14
|
const analytics_step_screen_state_registry_1 = require("./explorechimp/analytics-step-screen-state-registry");
|
|
@@ -773,6 +774,7 @@ class TestChimpReporter {
|
|
|
773
774
|
const branchIdValid = branchId !== undefined && !Number.isNaN(branchId) ? branchId : undefined;
|
|
774
775
|
// Map Playwright status to SmartTestExecutionStatus
|
|
775
776
|
const status = this.mapStatus(result.status);
|
|
777
|
+
const executionContext = (0, execution_context_1.buildExecutionDeviceContext)(test);
|
|
776
778
|
const report = {
|
|
777
779
|
folderPath: paths.folderPath,
|
|
778
780
|
fileName: paths.fileName,
|
|
@@ -787,12 +789,14 @@ class TestChimpReporter {
|
|
|
787
789
|
status,
|
|
788
790
|
error: result.error?.message,
|
|
789
791
|
pwError: this.toPlaywrightError(result.error),
|
|
790
|
-
scenarioCoverageResults: [] // Backend will populate if empty
|
|
792
|
+
scenarioCoverageResults: [], // Backend will populate if empty
|
|
793
|
+
executionContext,
|
|
791
794
|
},
|
|
792
795
|
startedAtMillis: execution.startedAt,
|
|
793
796
|
completedAtMillis: Date.now(),
|
|
794
797
|
branchName,
|
|
795
|
-
branchId: branchIdValid
|
|
798
|
+
branchId: branchIdValid,
|
|
799
|
+
executionContext,
|
|
796
800
|
};
|
|
797
801
|
const exploreChimpJobId = this.exploreChimpJourneyExecutionJobId(test, result, paths);
|
|
798
802
|
if (exploreChimpJobId) {
|