@testchimp/playwright 0.2.4 → 0.2.5

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
@@ -84,7 +84,7 @@ export const test = installTestChimp(base); // default uiFixture: 'page'
84
84
 
85
85
  A side-effect-only `import '@testchimp/playwright/runtime'` does not apply extended fixtures or mobile hooks; the returned `TestType` from `installTestChimp` must be what your specs import.
86
86
 
87
- **Web:** the runtime injects `__TC_CI_TEST_INFO` on the `page` fixture for `@testchimp/rum-js`, then in **`afterEach`** calls `globalThis.__TC_RUM_FLUSH` and waits for `POST /rum/events` so fast tests ingest before the context closes. Requires `@testchimp/rum-js` **≥ 0.1.3** (hook only; production `emit` batching unchanged). Optional: `TESTCHIMP_RUM_WEB_FLUSH_TIMEOUT_MS` (default **5000**, clamp **100–30000**).
87
+ **Web:** the runtime injects `__TC_CI_TEST_INFO` on the `page` fixture for `@testchimp/rum-js`, then in **`afterEach`** awaits `globalThis.__TC_RUM_FLUSH()` (async in rum-js **≥ 0.1.6**) so the keepalive `POST /rum/events` finishes before the context closes. Requires `@testchimp/playwright` **≥ 0.2.5**. Optional: `TESTCHIMP_RUM_WEB_FLUSH_TIMEOUT_MS` (default **5000**, clamp **100–30000**).
88
88
 
89
89
  **Mobile (iOS/Android):** set `use.platform` to `ios` or `android` on Mobilewright UI projects and use `installTestChimp(base, { uiFixture: 'screen' })`. The runtime extends the Mobilewright **`device`** fixture so **`SET`** runs right after Mobilewright’s **`launchApp`** (via `device.openUrl`), before **`screen`** and the test body; **`afterEach`** still sends a trailing **`SET`** + **`v1/flush`**. By default **no** `/v1/clear` between tests—each test **`SET`s** new CI so RUM avoids a clear→set gap with missing `ci_test_info`. Integrate **TestChimpRum** for that platform (see `testchimp-rum-ios` / `testchimp-rum-android` READMEs): URL scheme / intent filter for `testchimp-rum://truecoverage/...`.
90
90
 
@@ -1,19 +1,11 @@
1
1
  /** Per-call cap for `page.evaluate` RUM flush so a wedged page does not burn the whole test timeout. */
2
2
  export declare function resolveWebRumFlushTimeoutMs(): number;
3
3
  type PageWithEvaluate = {
4
- evaluate: (fn: () => void, arg?: unknown) => Promise<unknown>;
5
- waitForResponse: (predicate: (res: {
6
- request: () => {
7
- method: () => string;
8
- };
9
- url: () => string;
10
- }) => boolean, options?: {
11
- timeout?: number;
12
- }) => Promise<unknown>;
4
+ evaluate: (fn: () => void | Promise<void>, arg?: unknown) => Promise<unknown>;
13
5
  };
14
6
  /**
15
7
  * Flush buffered @testchimp/rum-js events before Playwright tears down the page.
16
- * Waits briefly for POST /rum/events so fast tests ingest before context close.
8
+ * Awaits `globalThis.__TC_RUM_FLUSH` (rum-js ≥ 0.1.6) so keepalive POST completes in-page.
17
9
  * Non-fatal when the page is closed, buffer is empty, or rum-js is not initialized.
18
10
  */
19
11
  export declare function flushWebRumBuffer(page: PageWithEvaluate): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"rum-automation-web.d.ts","sourceRoot":"","sources":["../src/rum-automation-web.ts"],"names":[],"mappings":"AAGA,wGAAwG;AACxG,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAgBD,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,eAAe,EAAE,CACf,SAAS,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM;YAAE,MAAM,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;QAAC,GAAG,EAAE,MAAM,MAAM,CAAA;KAAE,KAAK,OAAO,EAC3F,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7E;AAED;;;GAGG;AAEH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAa9D"}
1
+ {"version":3,"file":"rum-automation-web.d.ts","sourceRoot":"","sources":["../src/rum-automation-web.ts"],"names":[],"mappings":"AAGA,wGAAwG;AACxG,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAgBD,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7E;AAED;;;GAGG;AAEH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAa9D"}
@@ -31,25 +31,21 @@ async function withTimeout(promise, ms, operation) {
31
31
  }
32
32
  /**
33
33
  * Flush buffered @testchimp/rum-js events before Playwright tears down the page.
34
- * Waits briefly for POST /rum/events so fast tests ingest before context close.
34
+ * Awaits `globalThis.__TC_RUM_FLUSH` (rum-js ≥ 0.1.6) so keepalive POST completes in-page.
35
35
  * Non-fatal when the page is closed, buffer is empty, or rum-js is not initialized.
36
36
  */
37
37
  async function flushWebRumBuffer(page) {
38
38
  const timeoutMs = resolveWebRumFlushTimeoutMs();
39
39
  try {
40
- const responseDone = page
41
- .waitForResponse((res) => res.request().method() === 'POST' && res.url().includes('/rum/events'), { timeout: timeoutMs })
42
- .catch(() => undefined);
43
- await withTimeout(page.evaluate(() => {
40
+ await withTimeout(page.evaluate(async () => {
44
41
  const g = globalThis;
45
42
  if (typeof g.__TC_RUM_FLUSH === 'function') {
46
- g.__TC_RUM_FLUSH();
43
+ await g.__TC_RUM_FLUSH();
47
44
  }
48
45
  else if (typeof g.testchimp?.flush === 'function') {
49
46
  g.testchimp.flush();
50
47
  }
51
48
  }), timeoutMs, 'flushWebRumBuffer');
52
- await responseDone;
53
49
  }
54
50
  catch {
55
51
  // Non-fatal: page closed, navigation torn down, or rum not initialized.
@@ -1 +1 @@
1
- {"version":3,"file":"rum-automation-web.js","sourceRoot":"","sources":["../src/rum-automation-web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rum-automation-web.js","sourceRoot":"","sources":["../src/rum-automation-web.ts"],"names":[],"mappings":";;AAIA,kEAMC;AAyBD,8CAqBC;AAOD,kEAaC;AA5ED,iDAAwE;AAGxE,wGAAwG;AACxG,SAAgB,2BAA2B;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC3D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAE,SAAiB;IAC9E,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,OAAO;YACP,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,SAAS,oBAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAMD;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAsB;IAC5D,MAAM,SAAS,GAAG,2BAA2B,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,WAAW,CACf,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,CAAC,GAAG,UAGT,CAAC;YACF,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBAC3C,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;gBACpD,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,EACF,SAAS,EACT,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,SAAgB,2BAA2B,CAAC,QAAa;IACvD,QAAQ,CAAC,SAAS,CAChB,KAAK,EAAE,EAAE,IAAI,EAA+B,EAAE,QAAuB,EAAE,EAAE;QACvE,IAAI,IAAA,+BAAgB,EAAC,IAAA,mCAAoB,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CACF,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testchimp/playwright",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Playwright/Mobilewright reporter and runtime for TestChimp tracking and coverage reporting",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",