checkly 5.6.0 → 6.0.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.
Files changed (113) hide show
  1. package/dist/commands/baseCommand.d.ts +1 -1
  2. package/dist/commands/baseCommand.js +3 -3
  3. package/dist/commands/baseCommand.js.map +1 -1
  4. package/dist/commands/deploy.js +37 -18
  5. package/dist/commands/deploy.js.map +1 -1
  6. package/dist/commands/import/plan.js +54 -27
  7. package/dist/commands/import/plan.js.map +1 -1
  8. package/dist/commands/test.js +84 -53
  9. package/dist/commands/test.js.map +1 -1
  10. package/dist/commands/trigger.d.ts +0 -1
  11. package/dist/commands/trigger.js +4 -6
  12. package/dist/commands/trigger.js.map +1 -1
  13. package/dist/constructs/api-check-bundle.d.ts +57 -0
  14. package/dist/constructs/api-check-bundle.js +34 -0
  15. package/dist/constructs/api-check-bundle.js.map +1 -0
  16. package/dist/constructs/api-check.d.ts +14 -20
  17. package/dist/constructs/api-check.js +86 -83
  18. package/dist/constructs/api-check.js.map +1 -1
  19. package/dist/constructs/browser-check-bundle.d.ts +58 -0
  20. package/dist/constructs/browser-check-bundle.js +31 -0
  21. package/dist/constructs/browser-check-bundle.js.map +1 -0
  22. package/dist/constructs/browser-check.d.ts +10 -22
  23. package/dist/constructs/browser-check.js +54 -67
  24. package/dist/constructs/browser-check.js.map +1 -1
  25. package/dist/constructs/check-group-codegen.d.ts +6 -5
  26. package/dist/constructs/check-group-codegen.js +14 -7
  27. package/dist/constructs/check-group-codegen.js.map +1 -1
  28. package/dist/constructs/check-group-ref.d.ts +14 -0
  29. package/dist/constructs/check-group-ref.js +37 -0
  30. package/dist/constructs/check-group-ref.js.map +1 -0
  31. package/dist/constructs/check-group-v1.d.ts +294 -0
  32. package/dist/constructs/check-group-v1.js +271 -0
  33. package/dist/constructs/check-group-v1.js.map +1 -0
  34. package/dist/constructs/check-group-v2.d.ts +120 -0
  35. package/dist/constructs/check-group-v2.js +87 -0
  36. package/dist/constructs/check-group-v2.js.map +1 -0
  37. package/dist/constructs/check-group.d.ts +4 -175
  38. package/dist/constructs/check-group.js +8 -246
  39. package/dist/constructs/check-group.js.map +1 -1
  40. package/dist/constructs/check.d.ts +2 -2
  41. package/dist/constructs/construct-diagnostics.d.ts +33 -0
  42. package/dist/constructs/construct-diagnostics.js +101 -0
  43. package/dist/constructs/construct-diagnostics.js.map +1 -0
  44. package/dist/constructs/construct.d.ts +35 -1
  45. package/dist/constructs/construct.js +48 -1
  46. package/dist/constructs/construct.js.map +1 -1
  47. package/dist/constructs/dashboard-bundle.d.ts +11 -0
  48. package/dist/constructs/dashboard-bundle.js +19 -0
  49. package/dist/constructs/dashboard-bundle.js.map +1 -0
  50. package/dist/constructs/dashboard.d.ts +26 -22
  51. package/dist/constructs/dashboard.js +39 -46
  52. package/dist/constructs/dashboard.js.map +1 -1
  53. package/dist/constructs/diagnostics.d.ts +36 -0
  54. package/dist/constructs/diagnostics.js +69 -0
  55. package/dist/constructs/diagnostics.js.map +1 -0
  56. package/dist/constructs/index.d.ts +1 -0
  57. package/dist/constructs/index.js +1 -0
  58. package/dist/constructs/index.js.map +1 -1
  59. package/dist/constructs/multi-step-check-bundle.d.ts +46 -0
  60. package/dist/constructs/multi-step-check-bundle.js +25 -0
  61. package/dist/constructs/multi-step-check-bundle.js.map +1 -0
  62. package/dist/constructs/multi-step-check.d.ts +9 -11
  63. package/dist/constructs/multi-step-check.js +50 -65
  64. package/dist/constructs/multi-step-check.js.map +1 -1
  65. package/dist/constructs/playwright-check-bundle.d.ts +49 -0
  66. package/dist/constructs/playwright-check-bundle.js +28 -0
  67. package/dist/constructs/playwright-check-bundle.js.map +1 -0
  68. package/dist/constructs/playwright-check.d.ts +9 -15
  69. package/dist/constructs/playwright-check.js +37 -33
  70. package/dist/constructs/playwright-check.js.map +1 -1
  71. package/dist/constructs/private-location.d.ts +2 -0
  72. package/dist/constructs/private-location.js +7 -5
  73. package/dist/constructs/private-location.js.map +1 -1
  74. package/dist/constructs/project-bundle.d.ts +30 -0
  75. package/dist/constructs/project-bundle.js +44 -0
  76. package/dist/constructs/project-bundle.js.map +1 -0
  77. package/dist/constructs/project.d.ts +41 -18
  78. package/dist/constructs/project.js +72 -31
  79. package/dist/constructs/project.js.map +1 -1
  80. package/dist/reporters/util.d.ts +0 -1
  81. package/dist/reporters/util.js +1 -5
  82. package/dist/reporters/util.js.map +1 -1
  83. package/dist/rest/projects.d.ts +2 -0
  84. package/dist/rest/projects.js.map +1 -1
  85. package/dist/rest/test-sessions.d.ts +2 -1
  86. package/dist/rest/test-sessions.js.map +1 -1
  87. package/dist/services/check-parser/package-files/json-source-file.js +2 -1
  88. package/dist/services/check-parser/package-files/json-source-file.js.map +1 -1
  89. package/dist/services/check-parser/package-files/loader.d.ts +2 -2
  90. package/dist/services/check-parser/package-files/loader.js +2 -2
  91. package/dist/services/check-parser/package-files/loader.js.map +1 -1
  92. package/dist/services/check-parser/package-files/resolver.d.ts +8 -8
  93. package/dist/services/check-parser/package-files/resolver.js +34 -32
  94. package/dist/services/check-parser/package-files/resolver.js.map +1 -1
  95. package/dist/services/check-parser/package-files/source-file.d.ts +1 -1
  96. package/dist/services/check-parser/package-files/source-file.js +5 -4
  97. package/dist/services/check-parser/package-files/source-file.js.map +1 -1
  98. package/dist/services/check-parser/parser.d.ts +3 -3
  99. package/dist/services/check-parser/parser.js +22 -23
  100. package/dist/services/check-parser/parser.js.map +1 -1
  101. package/dist/services/checkly-config-codegen.js +0 -3
  102. package/dist/services/checkly-config-codegen.js.map +1 -1
  103. package/dist/services/checkly-config-loader.d.ts +0 -1
  104. package/dist/services/checkly-config-loader.js.map +1 -1
  105. package/dist/services/project-parser.d.ts +4 -2
  106. package/dist/services/project-parser.js +109 -67
  107. package/dist/services/project-parser.js.map +1 -1
  108. package/dist/services/test-runner.d.ts +6 -4
  109. package/dist/services/test-runner.js +33 -22
  110. package/dist/services/test-runner.js.map +1 -1
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/oclif.manifest.json +3 -3
  113. package/package.json +1 -1
@@ -28,101 +28,141 @@ const path = __importStar(require("path"));
28
28
  const util_1 = require("./util");
29
29
  const constructs_1 = require("../constructs");
30
30
  const ref_1 = require("../constructs/ref");
31
+ const construct_1 = require("../constructs/construct");
31
32
  const playwright_check_1 = require("../constructs/playwright-check");
32
33
  const BASE_CHECK_DEFAULTS = {};
33
34
  async function parseProject(opts) {
34
- const { directory, checkMatch = '**/*.check.{js,ts}', browserCheckMatch, multiStepCheckMatch, projectLogicalId, projectName, repoUrl, ignoreDirectoriesMatch = [], checkDefaults = {}, browserCheckDefaults = {}, availableRuntimes, defaultRuntimeId, verifyRuntimeDependencies, checklyConfigConstructs, playwrightConfigPath, include, playwrightChecks, } = opts;
35
+ const { directory, checkMatch = '**/*.check.{js,ts}', checkFilter, includeTestOnlyChecks = false, browserCheckMatch, multiStepCheckMatch, projectLogicalId, projectName, repoUrl, ignoreDirectoriesMatch = [], checkDefaults = {}, browserCheckDefaults = {}, availableRuntimes, defaultRuntimeId, verifyRuntimeDependencies, checklyConfigConstructs, playwrightConfigPath, include, playwrightChecks, } = opts;
35
36
  const project = new constructs_1.Project(projectLogicalId, {
36
37
  name: projectName,
37
38
  repoUrl,
38
39
  });
40
+ if (includeTestOnlyChecks) {
41
+ project.allowTestOnly(true);
42
+ }
39
43
  checklyConfigConstructs?.forEach((construct) => project.addResource(construct.type, construct.logicalId, construct));
40
44
  constructs_1.Session.project = project;
41
45
  constructs_1.Session.basePath = directory;
42
46
  constructs_1.Session.checkDefaults = Object.assign({}, BASE_CHECK_DEFAULTS, checkDefaults);
47
+ constructs_1.Session.checkFilter = checkFilter;
43
48
  constructs_1.Session.browserCheckDefaults = browserCheckDefaults;
44
49
  constructs_1.Session.availableRuntimes = availableRuntimes;
45
50
  constructs_1.Session.defaultRuntimeId = defaultRuntimeId;
46
51
  constructs_1.Session.verifyRuntimeDependencies = verifyRuntimeDependencies ?? true;
47
- const includeWrapped = include
48
- ? (Array.isArray(include) ? include : [include])
49
- : [];
50
52
  // TODO: Do we really need all of the ** globs, or could we just put node_modules?
51
53
  const ignoreDirectories = ['**/node_modules/**', '**/.git/**', ...ignoreDirectoriesMatch];
52
54
  await loadAllCheckFiles(directory, checkMatch, ignoreDirectories);
53
- await Promise.all([
54
- loadAllBrowserChecks(directory, browserCheckMatch, ignoreDirectories, project),
55
- loadAllMultiStepChecks(directory, multiStepCheckMatch, ignoreDirectories, project),
56
- loadPlaywrightChecks(playwrightChecks, playwrightConfigPath, includeWrapped),
57
- ]);
55
+ // Load sequentially because otherwise Session.checkFileAbsolutePath and
56
+ // Session.checkFilePath are going to be subject to race conditions.
57
+ await loadAllBrowserChecks(directory, browserCheckMatch, ignoreDirectories, project);
58
+ await loadAllMultiStepChecks(directory, multiStepCheckMatch, ignoreDirectories, project);
59
+ await loadPlaywrightChecks(directory, playwrightChecks, playwrightConfigPath, include);
58
60
  // private-location must be processed after all checks and groups are loaded.
59
61
  await loadAllPrivateLocationsSlugNames(project);
60
62
  return project;
61
63
  }
62
64
  exports.parseProject = parseProject;
63
- async function loadPlaywrightChecks(playwrightChecks, playwrightConfigPath, include) {
65
+ function setCheckFilePaths(checkFile, directory) {
66
+ const relPath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
67
+ constructs_1.Session.checkFileAbsolutePath = checkFile;
68
+ constructs_1.Session.checkFilePath = relPath;
69
+ return relPath;
70
+ }
71
+ function resetCheckFilePaths() {
72
+ constructs_1.Session.checkFilePath = undefined;
73
+ constructs_1.Session.checkFileAbsolutePath = undefined;
74
+ }
75
+ async function loadPlaywrightChecks(directory, playwrightChecks, playwrightConfigPath, include) {
64
76
  if (!playwrightConfigPath) {
65
77
  return;
66
78
  }
67
79
  if (playwrightChecks?.length) {
68
- for (const playwrightCheckProps of playwrightChecks) {
69
- // TODO: Don't upload for each check
70
- const { key, browsers, relativePlaywrightConfigPath, cacheHash, } = await playwright_check_1.PlaywrightCheck.bundleProject(playwrightConfigPath, include ?? []);
71
- const playwrightCheck = new playwright_check_1.PlaywrightCheck(playwrightCheckProps.logicalId, {
72
- ...playwrightCheckProps,
73
- codeBundlePath: key,
74
- browsers,
75
- playwrightConfigPath: relativePlaywrightConfigPath,
76
- cacheHash,
77
- });
80
+ try {
81
+ setCheckFilePaths(playwrightConfigPath, directory);
82
+ for (const playwrightCheckProps of playwrightChecks) {
83
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
84
+ const playwrightCheck = new playwright_check_1.PlaywrightCheck(playwrightCheckProps.logicalId, {
85
+ ...playwrightCheckProps,
86
+ playwrightConfigPath,
87
+ include,
88
+ });
89
+ }
90
+ }
91
+ finally {
92
+ resetCheckFilePaths();
78
93
  }
79
94
  }
80
95
  else {
81
- const { key, browsers, relativePlaywrightConfigPath, cacheHash, } = await playwright_check_1.PlaywrightCheck.bundleProject(playwrightConfigPath, include ?? []);
82
- const playwrightCheck = new playwright_check_1.PlaywrightCheck(path.basename(playwrightConfigPath), {
83
- name: path.basename(playwrightConfigPath),
84
- logicalId: path.basename(playwrightConfigPath),
85
- codeBundlePath: key,
86
- browsers,
87
- playwrightConfigPath: relativePlaywrightConfigPath,
88
- cacheHash,
89
- });
96
+ try {
97
+ setCheckFilePaths(playwrightConfigPath, directory);
98
+ const basePath = path.basename(playwrightConfigPath);
99
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
100
+ const playwrightCheck = new playwright_check_1.PlaywrightCheck(basePath, {
101
+ name: basePath,
102
+ playwrightConfigPath,
103
+ include,
104
+ });
105
+ }
106
+ finally {
107
+ resetCheckFilePaths();
108
+ }
90
109
  }
91
110
  }
92
111
  async function loadAllCheckFiles(directory, checkFilePattern, ignorePattern) {
93
112
  const checkFiles = await (0, util_1.findFilesWithPattern)(directory, checkFilePattern, ignorePattern);
94
113
  for (const checkFile of checkFiles) {
95
- // setting the checkFilePath is used for filtering by file name on the command line
96
- constructs_1.Session.checkFileAbsolutePath = checkFile;
97
- constructs_1.Session.checkFilePath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
98
- await constructs_1.Session.loadFile(checkFile);
99
- constructs_1.Session.checkFilePath = undefined;
100
- constructs_1.Session.checkFileAbsolutePath = undefined;
114
+ try {
115
+ setCheckFilePaths(checkFile, directory);
116
+ await constructs_1.Session.loadFile(checkFile);
117
+ }
118
+ finally {
119
+ resetCheckFilePaths();
120
+ }
101
121
  }
102
122
  }
123
+ function getExistingEntrypoints(project) {
124
+ const files = new Set();
125
+ Object.values(project.data.check).forEach((check) => {
126
+ if (check instanceof constructs_1.BrowserCheck && (0, construct_1.isEntrypoint)(check.code)) {
127
+ const absoluteEntrypoint = check.resolveContentFilePath(check.code.entrypoint);
128
+ const relativeEntrypoint = constructs_1.Session.relativePosixPath(absoluteEntrypoint);
129
+ files.add(relativeEntrypoint);
130
+ return;
131
+ }
132
+ if (check instanceof constructs_1.MultiStepCheck && (0, construct_1.isEntrypoint)(check.code)) {
133
+ const absoluteEntrypoint = check.resolveContentFilePath(check.code.entrypoint);
134
+ const relativeEntrypoint = constructs_1.Session.relativePosixPath(absoluteEntrypoint);
135
+ files.add(relativeEntrypoint);
136
+ return;
137
+ }
138
+ });
139
+ return files;
140
+ }
103
141
  async function loadAllBrowserChecks(directory, browserCheckFilePattern, ignorePattern, project) {
104
142
  if (!browserCheckFilePattern) {
105
143
  return;
106
144
  }
107
145
  const checkFiles = await (0, util_1.findFilesWithPattern)(directory, browserCheckFilePattern, ignorePattern);
108
- const preexistingCheckFiles = new Set();
109
- Object.values(project.data.check).forEach((check) => {
110
- if ((check instanceof constructs_1.BrowserCheck || check instanceof constructs_1.MultiStepCheck) && check.scriptPath) {
111
- preexistingCheckFiles.add(check.scriptPath);
112
- }
113
- });
146
+ const preexistingCheckFiles = getExistingEntrypoints(project);
114
147
  for (const checkFile of checkFiles) {
115
- const relPath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
116
- // Don't create an additional check if the checkFile was already added to a check in loadAllCheckFiles.
117
- if (preexistingCheckFiles.has(relPath)) {
118
- continue;
148
+ try {
149
+ const relPath = setCheckFilePaths(checkFile, directory);
150
+ // Don't create an additional check if the checkFile was already added
151
+ // to a check in loadAllCheckFiles.
152
+ if (preexistingCheckFiles.has(relPath)) {
153
+ continue;
154
+ }
155
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
156
+ const browserCheck = new constructs_1.BrowserCheck((0, util_1.pathToPosix)(relPath), {
157
+ name: path.basename(checkFile),
158
+ code: {
159
+ entrypoint: checkFile,
160
+ },
161
+ });
162
+ }
163
+ finally {
164
+ resetCheckFilePaths();
119
165
  }
120
- const browserCheck = new constructs_1.BrowserCheck((0, util_1.pathToPosix)(relPath), {
121
- name: path.basename(checkFile),
122
- code: {
123
- entrypoint: checkFile,
124
- },
125
- });
126
166
  }
127
167
  }
128
168
  async function loadAllMultiStepChecks(directory, multiStepCheckFilePattern, ignorePattern, project) {
@@ -130,24 +170,26 @@ async function loadAllMultiStepChecks(directory, multiStepCheckFilePattern, igno
130
170
  return;
131
171
  }
132
172
  const checkFiles = await (0, util_1.findFilesWithPattern)(directory, multiStepCheckFilePattern, ignorePattern);
133
- const preexistingCheckFiles = new Set();
134
- Object.values(project.data.check).forEach((check) => {
135
- if ((check instanceof constructs_1.MultiStepCheck || check instanceof constructs_1.BrowserCheck) && check.scriptPath) {
136
- preexistingCheckFiles.add(check.scriptPath);
137
- }
138
- });
173
+ const preexistingCheckFiles = getExistingEntrypoints(project);
139
174
  for (const checkFile of checkFiles) {
140
- const relPath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
141
- // Don't create an additional check if the checkFile was already added to a check in loadAllCheckFiles.
142
- if (preexistingCheckFiles.has(relPath)) {
143
- continue;
175
+ try {
176
+ const relPath = setCheckFilePaths(checkFile, directory);
177
+ // Don't create an additional check if the checkFile was already added
178
+ // to a check in loadAllCheckFiles.
179
+ if (preexistingCheckFiles.has(relPath)) {
180
+ continue;
181
+ }
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
+ const multistepCheck = new constructs_1.MultiStepCheck((0, util_1.pathToPosix)(relPath), {
184
+ name: path.basename(checkFile),
185
+ code: {
186
+ entrypoint: checkFile,
187
+ },
188
+ });
189
+ }
190
+ finally {
191
+ resetCheckFilePaths();
144
192
  }
145
- const multistepCheck = new constructs_1.MultiStepCheck((0, util_1.pathToPosix)(relPath), {
146
- name: path.basename(checkFile),
147
- code: {
148
- entrypoint: checkFile,
149
- },
150
- });
151
193
  }
152
194
  }
153
195
  // TODO: create a function to process slug names for check or check-group to reduce duplicated code.
@@ -1 +1 @@
1
- {"version":3,"file":"project-parser.js","sourceRoot":"","sources":["../../src/services/project-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-parser.js","sourceRoot":"","sources":["../../src/services/project-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,iCAIe;AACf,8CAIsB;AACtB,2CAAuC;AAGvC,uDAAsE;AACtE,qEAAgE;AAwBhE,MAAM,mBAAmB,GAAG,EAC3B,CAAA;AAEM,KAAK,UAAU,YAAY,CAAE,IAAsB;IACxD,MAAM,EACJ,SAAS,EACT,UAAU,GAAG,oBAAoB,EACjC,WAAW,EACX,qBAAqB,GAAG,KAAK,EAC7B,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,sBAAsB,GAAG,EAAE,EAC3B,aAAa,GAAG,EAAE,EAClB,oBAAoB,GAAG,EAAE,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,GACjB,GAAG,IAAI,CAAA;IACR,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,gBAAgB,EAAE;QAC5C,IAAI,EAAE,WAAW;QACjB,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,uBAAuB,EAAE,OAAO,CAC9B,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CACnF,CAAA;IACD,oBAAO,CAAC,OAAO,GAAG,OAAO,CAAA;IACzB,oBAAO,CAAC,QAAQ,GAAG,SAAS,CAAA;IAC5B,oBAAO,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IAC7E,oBAAO,CAAC,WAAW,GAAG,WAAW,CAAA;IACjC,oBAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;IACnD,oBAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAC7C,oBAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC3C,oBAAO,CAAC,yBAAyB,GAAG,yBAAyB,IAAI,IAAI,CAAA;IAErE,kFAAkF;IAClF,MAAM,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC,CAAA;IAEzF,MAAM,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAEjE,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACpF,MAAM,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACxF,MAAM,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;IAEtF,6EAA6E;IAC7E,MAAM,gCAAgC,CAAC,OAAO,CAAC,CAAA;IAE/C,OAAO,OAAO,CAAA;AAChB,CAAC;AA1DD,oCA0DC;AAED,SAAS,iBAAiB,CAAE,SAAiB,EAAE,SAAiB;IAC9D,MAAM,OAAO,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAEhE,oBAAO,CAAC,qBAAqB,GAAG,SAAS,CAAA;IACzC,oBAAO,CAAC,aAAa,GAAG,OAAO,CAAA;IAE/B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,mBAAmB;IAC1B,oBAAO,CAAC,aAAa,GAAG,SAAS,CAAA;IACjC,oBAAO,CAAC,qBAAqB,GAAG,SAAS,CAAA;AAC3C,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,gBAA0C,EAC1C,oBAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAM;IACR,CAAC;IAED,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,iBAAiB,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;YAClD,KAAK,MAAM,oBAAoB,IAAI,gBAAgB,EAAE,CAAC;gBACpD,6DAA6D;gBAC7D,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,oBAAoB,CAAC,SAAS,EAAE;oBAC1E,GAAG,oBAAoB;oBACvB,oBAAoB;oBACpB,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,mBAAmB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,iBAAiB,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;YACpD,6DAA6D;YAC7D,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,QAAQ,EAAE;gBACpD,IAAI,EAAE,QAAQ;gBACd,oBAAoB;gBACpB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,mBAAmB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,gBAAmC,EACnC,aAAuB;IAEvB,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAoB,EAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;IACzF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACvC,MAAM,oBAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;gBAAS,CAAC;YACT,mBAAmB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAE,OAAgB;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAE/B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,IAAI,KAAK,YAAY,yBAAY,IAAI,IAAA,wBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9E,MAAM,kBAAkB,GAAG,oBAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;YACxE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;QAED,IAAI,KAAK,YAAY,2BAAc,IAAI,IAAA,wBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9E,MAAM,kBAAkB,GAAG,oBAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;YACxE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,uBAAsD,EACtD,aAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAoB,EAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAA;IAChG,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAE7D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACvD,sEAAsE;YACtE,mCAAmC;YACnC,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,SAAQ;YACV,CAAC;YAED,6DAA6D;YAC7D,MAAM,YAAY,GAAG,IAAI,yBAAY,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE;gBAC1D,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE;oBACJ,UAAU,EAAE,SAAS;iBACtB;aACF,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,mBAAmB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,yBAAwD,EACxD,aAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,OAAM;IACR,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAoB,EAAC,SAAS,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAA;IAClG,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAE7D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACvD,sEAAsE;YACtE,mCAAmC;YACnC,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,SAAQ;YACV,CAAC;YAED,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,2BAAc,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE;oBACJ,UAAU,EAAE,SAAS;iBACtB;aACF,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,mBAAmB,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,KAAK,UAAU,gCAAgC,CAC7C,OAAgB;IAEhB;;;;;OAKG;IACH,MAAM,sBAAsB,GAC1B,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SAClF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAA;IAExE,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,oBAAO,CAAC,mBAAmB,EAAE,CAAA;IAE5D,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxC,wGAAwG;QACxG,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAA;QAE/F,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC7B,8EAA8E;YAC9E,MAAM,oCAAoC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;YAC3H,IAAI,oCAAoC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,2BAA2B,EAAE,2FAA2F,CAAC,CAAA;YAC9L,CAAC;YAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;YACvE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,kCAAkC,EAAE,+EAA+E,CAAC,CAAA;YACzL,CAAC;YAED,yEAAyE;YACzE,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,eAAe,CAAC,EAAE,CAAC,CAAA;YACtI,IAAI,wBAAwB,GAAG,EAAE,CAAA;YACjC,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACnC,MAAM,wBAAwB,GAAG,4BAAe,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBAC3E,wBAAwB,GAAG,wBAAwB,CAAC,SAAS,CAAA;YAC/D,CAAC;iBAAM,CAAC;gBACN,wBAAwB,GAAG,6BAA6B,CAAC,SAAS,CAAA;YACpE,CAAC;YAED,+CAA+C;YAC/C,MAAM,UAAU,GAAG,QAAQ,YAAY,kBAAK;gBAC1C,CAAC,CAAC,IAAI,2CAA8B,CAAC,qCAAqC,QAAQ,CAAC,SAAS,IAAI,wBAAwB,EAAE,EAAE;oBAC1H,iBAAiB,EAAE,SAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;oBACrD,OAAO,EAAE,SAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;iBACtC,CAAC;gBACF,CAAC,CAAC,IAAI,2CAA8B,CAAC,qCAAqC,QAAQ,CAAC,SAAS,IAAI,wBAAwB,EAAE,EAAE;oBAC1H,iBAAiB,EAAE,SAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;oBACrD,OAAO,EAAE,SAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;iBACtC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import AbstractCheckRunner, { RunLocation, SequenceId } from './abstract-check-runner';
2
2
  import { GitInformation } from './util';
3
3
  import { Check } from '../constructs/check';
4
- import { RetryStrategy, Project } from '../constructs';
4
+ import { RetryStrategy, SharedFile } from '../constructs';
5
+ import { ProjectBundle, ResourceDataBundle } from '../constructs/project-bundle';
5
6
  export default class TestRunner extends AbstractCheckRunner {
6
- project: Project;
7
- checkConstructs: Check[];
7
+ projectBundle: ProjectBundle;
8
+ checkBundles: ResourceDataBundle<Check>[];
9
+ sharedFiles: SharedFile[];
8
10
  location: RunLocation;
9
11
  shouldRecord: boolean;
10
12
  repoInfo: GitInformation | null;
@@ -12,7 +14,7 @@ export default class TestRunner extends AbstractCheckRunner {
12
14
  updateSnapshots: boolean;
13
15
  baseDirectory: string;
14
16
  testRetryStrategy: RetryStrategy | null;
15
- constructor(accountId: string, project: Project, checks: Check[], location: RunLocation, timeout: number, verbose: boolean, shouldRecord: boolean, repoInfo: GitInformation | null, environment: string | null, updateSnapshots: boolean, baseDirectory: string, testRetryStrategy: RetryStrategy | null);
17
+ constructor(accountId: string, projectBundle: ProjectBundle, checkBundles: ResourceDataBundle<Check>[], sharedFiles: SharedFile[], location: RunLocation, timeout: number, verbose: boolean, shouldRecord: boolean, repoInfo: GitInformation | null, environment: string | null, updateSnapshots: boolean, baseDirectory: string, testRetryStrategy: RetryStrategy | null);
16
18
  scheduleChecks(checkRunSuiteId: string): Promise<{
17
19
  testSessionId?: string;
18
20
  checks: Array<{
@@ -26,13 +26,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ const uuid = __importStar(require("uuid"));
29
30
  const api_1 = require("../rest/api");
30
31
  const abstract_check_runner_1 = __importDefault(require("./abstract-check-runner"));
31
32
  const snapshot_service_1 = require("../services/snapshot-service");
32
- const uuid = __importStar(require("uuid"));
33
+ const playwright_check_bundle_1 = require("../constructs/playwright-check-bundle");
33
34
  class TestRunner extends abstract_check_runner_1.default {
34
- project;
35
- checkConstructs;
35
+ projectBundle;
36
+ checkBundles;
37
+ sharedFiles;
36
38
  location;
37
39
  shouldRecord;
38
40
  repoInfo;
@@ -40,10 +42,11 @@ class TestRunner extends abstract_check_runner_1.default {
40
42
  updateSnapshots;
41
43
  baseDirectory;
42
44
  testRetryStrategy;
43
- constructor(accountId, project, checks, location, timeout, verbose, shouldRecord, repoInfo, environment, updateSnapshots, baseDirectory, testRetryStrategy) {
45
+ constructor(accountId, projectBundle, checkBundles, sharedFiles, location, timeout, verbose, shouldRecord, repoInfo, environment, updateSnapshots, baseDirectory, testRetryStrategy) {
44
46
  super(accountId, timeout, verbose);
45
- this.project = project;
46
- this.checkConstructs = checks;
47
+ this.projectBundle = projectBundle;
48
+ this.checkBundles = checkBundles;
49
+ this.sharedFiles = sharedFiles;
47
50
  this.location = location;
48
51
  this.shouldRecord = shouldRecord;
49
52
  this.repoInfo = repoInfo;
@@ -53,34 +56,42 @@ class TestRunner extends abstract_check_runner_1.default {
53
56
  this.testRetryStrategy = testRetryStrategy;
54
57
  }
55
58
  async scheduleChecks(checkRunSuiteId) {
56
- const checkRunJobs = this.checkConstructs.map(check => ({
57
- ...check.synthesize(),
58
- testRetryStrategy: this.testRetryStrategy,
59
- group: check.groupId ? this.project.data['check-group'][check.groupId.ref].synthesize() : undefined,
60
- groupId: undefined,
61
- sourceInfo: {
62
- checkRunSuiteId,
63
- checkRunId: uuid.v4(),
64
- updateSnapshots: this.updateSnapshots,
65
- },
66
- logicalId: check.logicalId,
67
- filePath: check.getSourceFile(),
68
- }));
59
+ const checkRunJobs = this.checkBundles.map(({ construct: check, bundle }) => {
60
+ // Playwright checks lazy load groups so they're only present in the
61
+ // bundle. This is a hack but for now it works.
62
+ const groupId = bundle instanceof playwright_check_bundle_1.PlaywrightCheckBundle
63
+ ? bundle.groupId
64
+ : check.groupId;
65
+ return {
66
+ ...bundle.synthesize(),
67
+ testRetryStrategy: this.testRetryStrategy,
68
+ group: groupId ? this.projectBundle.data['check-group'][groupId.ref].bundle.synthesize() : undefined,
69
+ groupId: undefined,
70
+ sourceInfo: {
71
+ checkRunSuiteId,
72
+ checkRunId: uuid.v4(),
73
+ updateSnapshots: this.updateSnapshots,
74
+ },
75
+ logicalId: check.logicalId,
76
+ filePath: check.getSourceFile(),
77
+ };
78
+ });
69
79
  try {
70
80
  if (!checkRunJobs.length) {
71
81
  throw new Error('Unable to find checks to run.');
72
82
  }
73
83
  const { data } = await api_1.testSessions.run({
74
- name: this.project.name,
84
+ name: this.projectBundle.project.name,
75
85
  checkRunJobs,
76
- project: { logicalId: this.project.logicalId },
86
+ project: { logicalId: this.projectBundle.project.logicalId },
87
+ sharedFiles: this.sharedFiles,
77
88
  runLocation: this.location,
78
89
  repoInfo: this.repoInfo,
79
90
  environment: this.environment,
80
91
  shouldRecord: this.shouldRecord,
81
92
  });
82
93
  const { testSessionId, sequenceIds } = data;
83
- const checks = this.checkConstructs.map(check => ({ check, sequenceId: sequenceIds?.[check.logicalId] }));
94
+ const checks = this.checkBundles.map(({ construct: check }) => ({ check, sequenceId: sequenceIds?.[check.logicalId] }));
84
95
  return { testSessionId, checks };
85
96
  }
86
97
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/services/test-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/services/test-runner.ts"],"names":[],"mappings":"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"}