@empiricalrun/test-run 0.10.9 → 0.11.0

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.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - cdc0995: feat: introduce env vars for the test run
8
+
3
9
  ## 0.10.9
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,EACnB,iBAAiB,MAAM,KACtB,OAAO,CAAC;IACT,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;CACd,CAwDA,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAa,OAAO,CACxD,mBAAmB,EAAE,CA0CtB,CAAC"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,EACnB,iBAAiB,MAAM,KACtB,OAAO,CAAC;IACT,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;CACd,CAwDA,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAa,OAAO,CACxD,mBAAmB,EAAE,CAkDtB,CAAC"}
package/dist/dashboard.js CHANGED
@@ -47,9 +47,14 @@ const fetchEnvironmentVariables = async () => {
47
47
  if (!process.env.EMPIRICALRUN_API_KEY) {
48
48
  return [];
49
49
  }
50
+ const testRunId = process.env.TEST_RUN_GITHUB_ACTION_ID;
51
+ if (!testRunId) {
52
+ console.log("No test run ID found, skipping environment variables fetch");
53
+ return [];
54
+ }
50
55
  try {
51
56
  const data = await (0, async_retry_1.default)(async () => {
52
- const envVarsResp = await fetch(`${DOMAIN}/api/environment-variables`, {
57
+ const envVarsResp = await fetch(`${DOMAIN}/api/test-runs/${testRunId}/environment-variables`, {
53
58
  method: "GET",
54
59
  headers: {
55
60
  "Content-Type": "application/json",
@@ -71,7 +76,7 @@ const fetchEnvironmentVariables = async () => {
71
76
  });
72
77
  return data && data.data ? data.data.environment_variables : [];
73
78
  }
74
- catch (error) {
79
+ catch {
75
80
  return [];
76
81
  }
77
82
  };
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare function runSingleTest({ testName, suites, filePath, projects, en
16
16
  hasTestPassed: boolean;
17
17
  summaryJson: PlaywrightJSONReport;
18
18
  }>;
19
- export declare function getAllPlaywrightProjects(repoDir: string): Promise<{
19
+ export declare function listProjectsAndTests(repoDir: string): Promise<{
20
20
  projects: string[];
21
21
  projectsToTestCases: Record<string, TestCase[]>;
22
22
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAI/E,OAAO,EAAkB,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAMjE,OAAO,EACL,+BAA+B,EAC/B,QAAQ,EACR,mBAAmB,EACnB,QAAQ,GACT,CAAC;AACF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAc/E,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,OAAO,GACR,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;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC,CAiBD;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAI/E,OAAO,EAAkB,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAMjE,OAAO,EACL,+BAA+B,EAC/B,QAAQ,EACR,mBAAmB,EACnB,QAAQ,GACT,CAAC;AACF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAc/E,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,OAAO,GACR,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;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC,CAiBD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,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,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.generateProjectFilters = exports.filterArrayByGlobMatchersSet = exports.spawnCmd = exports.runSpecificTestsCmd = exports.Platform = exports.getProjectsFromPlaywrightConfig = void 0;
7
7
  exports.runSingleTest = runSingleTest;
8
- exports.getAllPlaywrightProjects = getAllPlaywrightProjects;
8
+ exports.listProjectsAndTests = listProjectsAndTests;
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const path_1 = __importDefault(require("path"));
11
11
  const cmd_1 = require("./lib/cmd");
@@ -49,7 +49,7 @@ async function runSingleTest({ testName, suites, filePath, projects, envOverride
49
49
  summaryJson,
50
50
  };
51
51
  }
52
- async function getAllPlaywrightProjects(repoDir) {
52
+ async function listProjectsAndTests(repoDir) {
53
53
  const testRunner = (0, utils_1.getTestRunner)(types_1.Platform.WEB);
54
54
  const args = [testRunner, "test", "--list"];
55
55
  const { output, code } = await (0, cmd_1.spawnCmd)("npx", args, {
package/dist/lib/cmd.js CHANGED
@@ -30,7 +30,7 @@ async function runTestsForCmd({ command, args, env }, cwd) {
30
30
  throwOnError: true,
31
31
  });
32
32
  }
33
- catch (e) {
33
+ catch {
34
34
  hasTestPassed = false;
35
35
  }
36
36
  return { hasTestPassed };
@@ -1,12 +1,4 @@
1
+ import { PlaywrightProject } from "@empiricalrun/shared-types";
1
2
  import { Platform } from "../types";
2
- type PlaywrightProject = {
3
- name: string;
4
- use: any;
5
- testMatch: string[] | string | undefined;
6
- testIgnore: string[] | string | undefined;
7
- testDir: string | undefined;
8
- teardown: string | undefined;
9
- };
10
3
  export declare function getProjectsFromPlaywrightConfig(platform: Platform, repoDir: string): Promise<PlaywrightProject[]>;
11
- export {};
12
4
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiC9B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyE9B"}
@@ -14,10 +14,35 @@ async function getProjectsFromPlaywrightConfig(platform, repoDir) {
14
14
  const configPath = path_1.default.join(repoDir, configName);
15
15
  const tmpScriptPath = path_1.default.join(repoDir, "temp-extract-projects.js");
16
16
  fs_1.default.writeFileSync(tmpScriptPath, `
17
- // Import the config directly with the full path
18
- const configModule = require('${configPath.replace(/\\/g, "\\\\")}');
19
- const projects = configModule.default.projects || [];
20
- console.log(JSON.stringify(projects));
17
+ // Custom serializer that handles regex objects and functions
18
+ function serializeWithSpecialTypes(obj) {
19
+ return JSON.stringify(obj, (key, value) => {
20
+ if (value instanceof RegExp) {
21
+ return {
22
+ __regex: true,
23
+ source: value.source,
24
+ flags: value.flags
25
+ };
26
+ }
27
+ if (typeof value === 'function') {
28
+ return {
29
+ __function: true,
30
+ source: value.toString()
31
+ };
32
+ }
33
+ return value;
34
+ });
35
+ }
36
+
37
+ try {
38
+ // Import the config directly with the full path
39
+ const configModule = require('${configPath.replace(/\\/g, "\\\\")}');
40
+ const projects = configModule.default?.projects || configModule.projects || [];
41
+ console.log(serializeWithSpecialTypes(projects));
42
+ } catch (error) {
43
+ console.error('Error loading config:', error.message);
44
+ console.log('[]'); // Return empty array on error
45
+ }
21
46
  `);
22
47
  const result = (0, child_process_1.execSync)(`npx -y ts-node@latest "${tmpScriptPath}"`, {
23
48
  encoding: "utf8",
@@ -29,7 +54,19 @@ async function getProjectsFromPlaywrightConfig(platform, repoDir) {
29
54
  cwd: repoDir,
30
55
  });
31
56
  fs_1.default.unlinkSync(tmpScriptPath);
32
- const projects = JSON.parse(result);
57
+ // Custom deserializer that reconstructs regex objects
58
+ const projects = JSON.parse(result, (key, value) => {
59
+ if (value && typeof value === "object") {
60
+ if (value.__regex) {
61
+ return new RegExp(value.source, value.flags);
62
+ }
63
+ if (value.__function) {
64
+ // Note: Functions can't be fully reconstructed, but we preserve the source
65
+ return value.source;
66
+ }
67
+ }
68
+ return value;
69
+ });
33
70
  return projects;
34
71
  }
35
72
  catch (error) {
@@ -0,0 +1,16 @@
1
+ import libraryConfig from "../eslint-config/library.mjs";
2
+ import tsParser from "@typescript-eslint/parser";
3
+
4
+ export default [
5
+ ...libraryConfig,
6
+ {
7
+ files: ["src/**/*.ts", "src/**/*.tsx"],
8
+ languageOptions: {
9
+ parser: tsParser,
10
+ parserOptions: {
11
+ project: "./tsconfig.lint.json",
12
+ tsconfigRootDir: import.meta.dirname,
13
+ },
14
+ },
15
+ },
16
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-run",
3
- "version": "0.10.9",
3
+ "version": "0.11.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -27,7 +27,8 @@
27
27
  "@types/console-log-level": "^1.4.5",
28
28
  "@types/node": "^22.5.5",
29
29
  "@playwright/test": "1.53.2",
30
- "memfs": "^4.17.1"
30
+ "memfs": "^4.17.1",
31
+ "@empiricalrun/shared-types": "0.10.0"
31
32
  },
32
33
  "scripts": {
33
34
  "dev": "tsc --build --watch",