@testchimp/playwright 0.1.0 → 0.1.2

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/dist/runtime.d.ts CHANGED
@@ -1,6 +1,15 @@
1
1
  /**
2
2
  * TrueCoverage runtime: injects CITestInfo into the browser so @testchimp/rum-js can
3
3
  * send the ci-test-info header on RUM ingest requests.
4
+ *
5
+ * Prefer `installTrueCoverage(mergedTest)` on the same `test` object your specs use
6
+ * (e.g. `mergeTests` output from `fixtures/index.js`). The side-effect
7
+ * `import '@testchimp/playwright/runtime'` still registers on the root `@playwright/test`
8
+ * instance for backward compatibility.
4
9
  */
5
- export {};
10
+ /**
11
+ * Register TrueCoverage CI metadata injection on the given Playwright `test` object
12
+ * (including `mergeTests(...)` output). Returns the same instance for chaining.
13
+ */
14
+ export declare function installTrueCoverage(test: any): any;
6
15
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqBH;;;GAGG;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAiDlD"}
package/dist/runtime.js CHANGED
@@ -2,6 +2,11 @@
2
2
  /**
3
3
  * TrueCoverage runtime: injects CITestInfo into the browser so @testchimp/rum-js can
4
4
  * send the ci-test-info header on RUM ingest requests.
5
+ *
6
+ * Prefer `installTrueCoverage(mergedTest)` on the same `test` object your specs use
7
+ * (e.g. `mergeTests` output from `fixtures/index.js`). The side-effect
8
+ * `import '@testchimp/playwright/runtime'` still registers on the root `@playwright/test`
9
+ * instance for backward compatibility.
5
10
  */
6
11
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
12
  if (k2 === undefined) k2 = k;
@@ -37,6 +42,7 @@ var __importStar = (this && this.__importStar) || (function () {
37
42
  };
38
43
  })();
39
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.installTrueCoverage = installTrueCoverage;
40
46
  const fs = __importStar(require("fs"));
41
47
  const path = __importStar(require("path"));
42
48
  const module_1 = require("module");
@@ -46,8 +52,7 @@ function readBatchInvocationId(projectRootDir) {
46
52
  const fromEnv = process.env.TESTCHIMP_BATCH_INVOCATION_ID;
47
53
  if (fromEnv)
48
54
  return fromEnv;
49
- const filePath = process.env.TESTCHIMP_BATCH_ID_FILE ||
50
- path.join(projectRootDir, BATCH_ID_FILENAME);
55
+ const filePath = process.env.TESTCHIMP_BATCH_ID_FILE || path.join(projectRootDir, BATCH_ID_FILENAME);
51
56
  try {
52
57
  return fs.readFileSync(filePath, 'utf8').trim() || undefined;
53
58
  }
@@ -55,40 +60,57 @@ function readBatchInvocationId(projectRootDir) {
55
60
  return undefined;
56
61
  }
57
62
  }
63
+ /**
64
+ * Register TrueCoverage CI metadata injection on the given Playwright `test` object
65
+ * (including `mergeTests(...)` output). Returns the same instance for chaining.
66
+ */
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ function installTrueCoverage(test) {
69
+ test.beforeEach(async ({ page }, testInfo) => {
70
+ const project = testInfo.project;
71
+ const projectRootDir = project.rootDir ?? process.cwd();
72
+ const testsFolder = (0, utils_1.deriveTestsFolder)(projectRootDir);
73
+ const paths = (0, utils_1.derivePathsFromTestInfo)(testInfo, testsFolder, projectRootDir, false);
74
+ const ciTestInfo = {
75
+ folderPath: paths.folderPath,
76
+ fileName: paths.fileName,
77
+ suitePath: paths.suitePath,
78
+ testName: paths.testName,
79
+ };
80
+ const branchName = (0, utils_1.getBranchName)();
81
+ if (branchName)
82
+ ciTestInfo.branchName = branchName;
83
+ const env = process.env.TESTCHIMP_ENV || process.env.CI_ENVIRONMENT_NAME || process.env.NODE_ENV;
84
+ if (env)
85
+ ciTestInfo.environment = env;
86
+ const release = process.env.TESTCHIMP_RELEASE;
87
+ if (release)
88
+ ciTestInfo.release = release;
89
+ const batchInvocationId = readBatchInvocationId(projectRootDir);
90
+ if (batchInvocationId)
91
+ ciTestInfo.batchInvocationId = batchInvocationId;
92
+ const jsonString = JSON.stringify(ciTestInfo);
93
+ await page.addInitScript((info) => {
94
+ // Browser main thread: globalThis is window.
95
+ globalThis.__TC_CI_TEST_INFO = info;
96
+ }, jsonString);
97
+ // Also set on the currently loaded page (if any). `addInitScript` only affects future documents,
98
+ // so without this, apps that initialize RUM on the first loaded document can emit events before
99
+ // the init script ever runs.
100
+ try {
101
+ await page.evaluate((info) => {
102
+ globalThis.__TC_CI_TEST_INFO = info;
103
+ }, jsonString);
104
+ }
105
+ catch {
106
+ // Ignore: page may be closed or not ready yet.
107
+ }
108
+ });
109
+ return test;
110
+ }
58
111
  // IMPORTANT: resolve @playwright/test from the *consumer* project, not from this package.
59
- // This avoids "Requiring @playwright/test second time" when developing via `file:`/linked installs.
60
112
  const pwRequire = (0, module_1.createRequire)(path.join(process.cwd(), 'package.json'));
61
113
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
- const { test } = pwRequire('@playwright/test');
63
- test.beforeEach(async ({ page }, testInfo) => {
64
- const project = testInfo.project;
65
- const projectRootDir = project.rootDir ?? process.cwd();
66
- const testsFolder = (0, utils_1.deriveTestsFolder)(projectRootDir);
67
- const paths = (0, utils_1.derivePathsFromTestInfo)(testInfo, testsFolder, projectRootDir, false);
68
- const ciTestInfo = {
69
- folderPath: paths.folderPath,
70
- fileName: paths.fileName,
71
- suitePath: paths.suitePath,
72
- testName: paths.testName,
73
- };
74
- const branchName = (0, utils_1.getBranchName)();
75
- if (branchName)
76
- ciTestInfo.branchName = branchName;
77
- const env = process.env.TESTCHIMP_ENV ||
78
- process.env.CI_ENVIRONMENT_NAME ||
79
- process.env.NODE_ENV;
80
- if (env)
81
- ciTestInfo.environment = env;
82
- const release = process.env.TESTCHIMP_RELEASE;
83
- if (release)
84
- ciTestInfo.release = release;
85
- const batchInvocationId = readBatchInvocationId(projectRootDir);
86
- if (batchInvocationId)
87
- ciTestInfo.batchInvocationId = batchInvocationId;
88
- const jsonString = JSON.stringify(ciTestInfo);
89
- await page.addInitScript((info) => {
90
- globalThis.__TC_CI_TEST_INFO =
91
- info;
92
- }, jsonString);
93
- });
114
+ const { test: rootTest } = pwRequire('@playwright/test');
115
+ installTrueCoverage(rootTest);
94
116
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAuC;AACvC,mCAAoF;AACpF,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAE3D,SAAS,qBAAqB,CAAC,cAAsB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,oGAAoG;AACpG,MAAM,SAAS,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,8DAA8D;AAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,kBAAkB,CAAQ,CAAC;AAEtD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAiB,EAAE,QAAa,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA+B,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,IAAA,yBAAiB,EAAC,cAAc,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAA,+BAAuB,EACnC,QAAoE,EACpE,WAAW,EACX,cAAc,EACd,KAAK,CACN,CAAC;IAEF,MAAM,UAAU,GAA4B;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;IACF,MAAM,UAAU,GAAG,IAAA,qBAAa,GAAE,CAAC;IACnC,IAAI,UAAU;QAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;IACnD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB,IAAI,GAAG;QAAE,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,IAAI,OAAO;QAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1C,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,iBAAiB;QAAE,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAExE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,IAAI,CAAC,aAAa,CACtB,CAAC,IAAY,EAAE,EAAE;QACd,UAAwD,CAAC,iBAAiB;YACzE,IAAI,CAAC;IACT,CAAC,EACD,UAAU,CACX,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'module';
2
2
 
3
- // Importing runtime has side-effects (Playwright hooks). Keep behavior identical to CJS runtime.js,
4
- // but allow ESM consumers to `import 'playwright-testchimp/runtime'`.
3
+ // Copied to `dist/runtime.mjs` after `tsc`. Loads `./runtime.js` (CJS) for side effects + named exports.
5
4
  const require = createRequire(import.meta.url);
6
5
  const cjs = require('./runtime.js');
7
6
 
7
+ export const installTrueCoverage = cjs.installTrueCoverage;
8
+
8
9
  export * from './worldstate.mjs';
9
10
  export default cjs;
10
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testchimp/playwright",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Playwright reporter for TestChimp test execution tracking and coverage reporting",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "dist/"
28
28
  ],
29
29
  "scripts": {
30
- "build": "tsc",
30
+ "build": "tsc && cp esm/runtime-entry.mjs dist/runtime.mjs",
31
31
  "watch": "tsc --watch",
32
32
  "clean": "rm -rf dist",
33
33
  "test": "npm run build && node --test test/*.test.js"