@empiricalrun/test-run 0.9.0 → 0.9.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @empiricalrun/test-run
2
2
 
3
+ ## 0.9.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 24d672a: feat: use playwright --list to get project names
8
+
3
9
  ## 0.9.0
4
10
 
5
11
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { runSpecificTestsCmd } from "./lib/run-specific-test";
2
+ import { TestCase } from "./types";
2
3
  export { runSpecificTestsCmd };
3
4
  export declare function runSingleTest({ testName, suites, fileName, projects, envOverrides, }: {
4
5
  testName: string;
@@ -10,4 +11,8 @@ export declare function runSingleTest({ testName, suites, fileName, projects, en
10
11
  hasTestPassed: boolean;
11
12
  summaryJson: any;
12
13
  }>;
14
+ export declare function getAllPlaywrightProjects(repoDir: string): Promise<{
15
+ projects: string[];
16
+ projectsToTestCases: Record<string, TestCase[]>;
17
+ }>;
13
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAO9D,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;;;GAqBA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAY,QAAQ,EAAE,MAAM,SAAS,CAAC;AAO7C,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;;;GAqBA;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CACjD,CAAC,CAaD"}
package/dist/index.js CHANGED
@@ -5,12 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.runSpecificTestsCmd = void 0;
7
7
  exports.runSingleTest = runSingleTest;
8
+ exports.getAllPlaywrightProjects = getAllPlaywrightProjects;
8
9
  const promises_1 = __importDefault(require("fs/promises"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const cmd_1 = require("./lib/cmd");
11
12
  const run_specific_test_1 = require("./lib/run-specific-test");
12
13
  Object.defineProperty(exports, "runSpecificTestsCmd", { enumerable: true, get: function () { return run_specific_test_1.runSpecificTestsCmd; } });
14
+ const parser_1 = require("./parser");
13
15
  const types_1 = require("./types");
16
+ const utils_1 = require("./utils");
14
17
  // For test-run package, the library entrypoint, we only support web platform
15
18
  // The bin entrypoint has support for mobile also
16
19
  const supportedPlatform = types_1.Platform.WEB;
@@ -32,3 +35,17 @@ async function runSingleTest({ testName, suites, fileName, projects, envOverride
32
35
  summaryJson,
33
36
  };
34
37
  }
38
+ async function getAllPlaywrightProjects(repoDir) {
39
+ const testRunner = (0, utils_1.getTestRunner)(types_1.Platform.WEB);
40
+ const env = Object({ ...process.env });
41
+ const args = [testRunner, "test", "--list"];
42
+ const { output, code } = await (0, cmd_1.spawnCmd)("npx", args, {
43
+ env,
44
+ cwd: repoDir,
45
+ captureOutput: true,
46
+ });
47
+ if (!output) {
48
+ throw new Error(`Failed to run list command; exit code: ${code}`);
49
+ }
50
+ return (0, parser_1.parseTestListOutput)(output);
51
+ }
package/dist/lib/cmd.d.ts CHANGED
@@ -10,8 +10,8 @@ export declare function spawnCmd(command: string, args: string[], options: {
10
10
  env?: Record<string, string>;
11
11
  cwd?: string;
12
12
  captureOutput?: boolean;
13
- }): Promise<number | {
13
+ }): Promise<{
14
14
  code: number;
15
- output: string;
15
+ output?: string;
16
16
  }>;
17
17
  //# sourceMappingURL=cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/lib/cmd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAeA;AAED,wBAAsB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY;;GASxE;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CpD"}
1
+ {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/lib/cmd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAeA;AAED,wBAAsB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY;;GASxE;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C5C"}
package/dist/lib/cmd.js CHANGED
@@ -66,7 +66,7 @@ async function spawnCmd(command, args, options) {
66
66
  rejectFunc(errorLogs.slice(-3).join("\n"));
67
67
  }
68
68
  else {
69
- resolveFunc(options.captureOutput ? { code: code, output: output } : code);
69
+ resolveFunc({ code: code, output: output });
70
70
  }
71
71
  });
72
72
  });
@@ -0,0 +1,6 @@
1
+ import { TestCase } from "../types";
2
+ export declare function parseTestListOutput(output: string): {
3
+ projects: string[];
4
+ projectsToTestCases: Record<string, TestCase[]>;
5
+ };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IACnD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CACjD,CA0CA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTestListOutput = parseTestListOutput;
4
+ function parseTestListOutput(output) {
5
+ // Parse the output to extract test information
6
+ // Example format: "[chromium] › home.spec.ts:9:9 › describe 1 › describe 2 › has title"
7
+ let projectsToTestCases = {};
8
+ let projects = [];
9
+ output
10
+ .split("\n")
11
+ .filter((line) => line.trim() && line.trim().startsWith("[") && line.includes(".ts:"))
12
+ .forEach((line) => {
13
+ // Extract project, file, line, and test name with suites
14
+ const match = line.match(/\[(.*?)\]\s+›\s+(.*?):(\d+):\d+\s+›\s+(.*)/);
15
+ if (!match || !match[1] || !match[2] || !match[3] || !match[4]) {
16
+ return;
17
+ }
18
+ const project = match[1];
19
+ if (!projects.includes(project)) {
20
+ projects.push(project);
21
+ projectsToTestCases[project] = [];
22
+ }
23
+ const file = match[2];
24
+ const fullTestName = match[4];
25
+ const parts = fullTestName.split("›").map((p) => p.trim());
26
+ if (parts.length === 0) {
27
+ throw new Error(`Invalid test name: ${fullTestName}`);
28
+ }
29
+ const name = parts[parts.length - 1];
30
+ if (!name) {
31
+ throw new Error(`Invalid test name: ${fullTestName}`);
32
+ }
33
+ const describeBlockNames = parts.length > 1 ? parts.slice(0, -1) : undefined;
34
+ const testCase = {
35
+ name,
36
+ filePath: file,
37
+ suites: describeBlockNames,
38
+ };
39
+ projectsToTestCases[project].push(testCase);
40
+ });
41
+ return { projects, projectsToTestCases };
42
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-run",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -1 +1 @@
1
- {"root":["./src/dashboard.ts","./src/index.ts","./src/bin/index.ts","./src/lib/cmd.ts","./src/lib/run-all-tests.ts","./src/lib/run-specific-test.ts","./src/lib/memfs/read-hello-world.ts","./src/types/index.ts","./src/utils/config-parser.ts","./src/utils/config.ts","./src/utils/index.ts"],"version":"5.8.3"}
1
+ {"root":["./src/dashboard.ts","./src/index.ts","./src/bin/index.ts","./src/lib/cmd.ts","./src/lib/run-all-tests.ts","./src/lib/run-specific-test.ts","./src/lib/memfs/read-hello-world.ts","./src/parser/index.ts","./src/types/index.ts","./src/utils/config-parser.ts","./src/utils/config.ts","./src/utils/index.ts"],"version":"5.8.3"}