checkly 8.6.0 → 8.7.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 (62) hide show
  1. package/dist/ai-context/context.d.ts +2 -2
  2. package/dist/ai-context/context.js +1 -1
  3. package/dist/ai-context/context.js.map +1 -1
  4. package/dist/ai-context/skills-command/references/manage-account-members.md +26 -8
  5. package/dist/ai-context/skills-command/references/manage.md +1 -1
  6. package/dist/commands/checks/get.js +18 -17
  7. package/dist/commands/checks/get.js.map +1 -1
  8. package/dist/commands/members/delete.d.ts +18 -0
  9. package/dist/commands/members/delete.js +73 -0
  10. package/dist/commands/members/delete.js.map +1 -0
  11. package/dist/commands/members/update.d.ts +21 -0
  12. package/dist/commands/members/update.js +104 -0
  13. package/dist/commands/members/update.js.map +1 -0
  14. package/dist/commands/{account/members.d.ts → members.d.ts} +3 -2
  15. package/dist/commands/{account/members.js → members.js} +5 -4
  16. package/dist/commands/members.js.map +1 -0
  17. package/dist/commands/test-sessions/get.d.ts +3 -0
  18. package/dist/commands/test-sessions/get.js +45 -22
  19. package/dist/commands/test-sessions/get.js.map +1 -1
  20. package/dist/formatters/account-members.js +13 -14
  21. package/dist/formatters/account-members.js.map +1 -1
  22. package/dist/formatters/account-plan.js +19 -11
  23. package/dist/formatters/account-plan.js.map +1 -1
  24. package/dist/formatters/alert-channels.js +20 -22
  25. package/dist/formatters/alert-channels.js.map +1 -1
  26. package/dist/formatters/batch-stats.js +19 -17
  27. package/dist/formatters/batch-stats.js.map +1 -1
  28. package/dist/formatters/check-result-detail.d.ts +2 -1
  29. package/dist/formatters/check-result-detail.js +9 -1
  30. package/dist/formatters/check-result-detail.js.map +1 -1
  31. package/dist/formatters/checks.js +21 -14
  32. package/dist/formatters/checks.js.map +1 -1
  33. package/dist/formatters/incidents.js +7 -10
  34. package/dist/formatters/incidents.js.map +1 -1
  35. package/dist/formatters/render.d.ts +9 -0
  36. package/dist/formatters/render.js +13 -0
  37. package/dist/formatters/render.js.map +1 -1
  38. package/dist/formatters/status-pages.js +29 -36
  39. package/dist/formatters/status-pages.js.map +1 -1
  40. package/dist/formatters/test-sessions.js +32 -49
  41. package/dist/formatters/test-sessions.js.map +1 -1
  42. package/dist/helpers/account-member-target.d.ts +14 -0
  43. package/dist/helpers/account-member-target.js +37 -0
  44. package/dist/helpers/account-member-target.js.map +1 -0
  45. package/dist/rest/account-members.d.ts +6 -0
  46. package/dist/rest/account-members.js +7 -0
  47. package/dist/rest/account-members.js.map +1 -1
  48. package/dist/rest/test-sessions.d.ts +2 -0
  49. package/dist/rest/test-sessions.js +3 -0
  50. package/dist/rest/test-sessions.js.map +1 -1
  51. package/dist/services/check-parser/package-files/lockfile-package-version.d.ts +85 -0
  52. package/dist/services/check-parser/package-files/lockfile-package-version.js +317 -0
  53. package/dist/services/check-parser/package-files/lockfile-package-version.js.map +1 -0
  54. package/dist/services/check-parser/package-files/package-manager.d.ts +19 -0
  55. package/dist/services/check-parser/package-files/package-manager.js +52 -0
  56. package/dist/services/check-parser/package-files/package-manager.js.map +1 -1
  57. package/dist/services/playwright-project-bundler.d.ts +11 -0
  58. package/dist/services/playwright-project-bundler.js +120 -4
  59. package/dist/services/playwright-project-bundler.js.map +1 -1
  60. package/oclif.manifest.json +515 -351
  61. package/package.json +6 -2
  62. package/dist/commands/account/members.js.map +0 -1
@@ -1,7 +1,10 @@
1
+ import fs from 'node:fs/promises';
1
2
  import { createRequire } from 'node:module';
2
3
  import path from 'node:path';
3
4
  import semver from 'semver';
4
5
  import { detectNearestPackageJson } from './check-parser/package-files/package-manager.js';
6
+ import { PackageJsonFile } from './check-parser/package-files/package-json-file.js';
7
+ import { lineage } from './check-parser/package-files/walk.js';
5
8
  import { PlaywrightConfig } from './playwright-config.js';
6
9
  import { findFilesWithPattern, pathToPosix } from './util.js';
7
10
  import { Session } from '../constructs/session.js';
@@ -32,7 +35,7 @@ export class PlaywrightProjectBundler {
32
35
  // No need of loading everything if there is no lockfile
33
36
  const pwtConfig = await Session.loadFile(filePath);
34
37
  const pwConfigParsed = new PlaywrightConfig(filePath, pwtConfig);
35
- const playwrightVersion = await getPlaywrightVersionFromPackage(dir);
38
+ const playwrightVersion = await resolvePlaywrightVersion(dir);
36
39
  const parser = Session.getPlaywrightParser();
37
40
  const { files, errors } = await parser.getFilesAndDependencies(pwConfigParsed);
38
41
  if (errors.length) {
@@ -94,18 +97,131 @@ export function getAutoIncludes(basePath, globCwd, packageManager, existingInclu
94
97
  }
95
98
  return autoIncludes;
96
99
  }
100
+ const PLAYWRIGHT_TEST = '@playwright/test';
101
+ /**
102
+ * Resolves the @playwright/test version that should run in the cloud.
103
+ *
104
+ * The project's lockfile is the source of truth: the version it pins is what
105
+ * CI and other developers resolve, and it stays correct even when the local
106
+ * node_modules has drifted (e.g. after switching branches without
107
+ * reinstalling). When no usable lockfile answer is available — no lockfile, an
108
+ * unsupported/unparseable format, or the package isn't pinned for the relevant
109
+ * workspace member — we fall back to reading the installed package.
110
+ */
111
+ export async function resolvePlaywrightVersion(cwd) {
112
+ const lockfileVersion = await getPlaywrightVersionFromLockfile(cwd);
113
+ if (lockfileVersion !== undefined) {
114
+ return lockfileVersion;
115
+ }
116
+ return await getPlaywrightVersionFromPackage(cwd);
117
+ }
118
+ function playwrightRange(packageJson) {
119
+ return packageJson.dependencies?.[PLAYWRIGHT_TEST]
120
+ ?? packageJson.devDependencies?.[PLAYWRIGHT_TEST];
121
+ }
122
+ /**
123
+ * Resolves the @playwright/test version from the workspace lockfile, scoped to
124
+ * the workspace member that owns the Playwright config. Returns `undefined`
125
+ * when no answer can be derived from the lockfile, signalling the caller to
126
+ * fall back.
127
+ */
128
+ async function getPlaywrightVersionFromLockfile(cwd) {
129
+ const workspaceResult = Session.workspace;
130
+ if (!workspaceResult.isOk()) {
131
+ return undefined;
132
+ }
133
+ const workspace = workspaceResult.unwrap();
134
+ if (!workspace.lockfile.isOk()) {
135
+ return undefined;
136
+ }
137
+ const lockfilePath = workspace.lockfile.unwrap();
138
+ const packageManager = Session.packageManager;
139
+ // Normalize both paths through realpath so the directory walk and the
140
+ // relative importer paths line up with the workspace root even when the
141
+ // config is reached through a symlink (e.g. macOS /tmp -> /private/tmp).
142
+ let configDir;
143
+ let workspaceRoot;
144
+ try {
145
+ configDir = await fs.realpath(cwd);
146
+ workspaceRoot = await fs.realpath(workspace.root.path);
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ // Walk from the config directory up to the workspace root, building the chain
152
+ // of candidate importers Node would consult when resolving the package from
153
+ // the config directory. Resolution must mirror that walk: a package required
154
+ // from a member that doesn't declare it resolves to a physically-enclosing
155
+ // member's copy, not necessarily the root's.
156
+ const importers = [];
157
+ let consumingRange;
158
+ let reachedRoot = false;
159
+ for (const dir of lineage(configDir, { root: workspaceRoot })) {
160
+ // A directory contributes a declared range only when it actually has a
161
+ // package.json declaring the dep. Intermediate directories still
162
+ // participate (by position) so npm's physical node_modules walk and pnpm's
163
+ // importer lookup see them.
164
+ const packageJson = await PackageJsonFile.loadFromFilePath(PackageJsonFile.filePath(dir));
165
+ const declaredRange = packageJson ? playwrightRange(packageJson) : undefined;
166
+ // The consuming package is the nearest package.json at or above the config;
167
+ // its declared range anchors the drift check below.
168
+ if (consumingRange === undefined && declaredRange !== undefined) {
169
+ consumingRange = declaredRange;
170
+ }
171
+ importers.push({ relPath: toImporterRelPath(workspaceRoot, dir), declaredRange });
172
+ if (dir === workspaceRoot) {
173
+ reachedRoot = true;
174
+ break;
175
+ }
176
+ }
177
+ // If the walk never reached the workspace root, the relative paths don't
178
+ // describe importers under this workspace — don't trust them.
179
+ if (!reachedRoot) {
180
+ return undefined;
181
+ }
182
+ const raw = await packageManager.resolvePackageVersionFromLockfile(lockfilePath, {
183
+ packageName: PLAYWRIGHT_TEST,
184
+ importers,
185
+ });
186
+ if (raw === undefined) {
187
+ return undefined;
188
+ }
189
+ const version = normalizeVersion(raw);
190
+ if (version === undefined) {
191
+ return undefined;
192
+ }
193
+ // Drift guard: if the consuming package declares a range the resolved version
194
+ // doesn't satisfy, its package.json was changed without re-resolving the
195
+ // lockfile (or the install is otherwise inconsistent). The cloud runs the
196
+ // resolved version, so warn rather than silently using a mismatched pin.
197
+ if (consumingRange !== undefined) {
198
+ const validRange = semver.validRange(consumingRange);
199
+ if (validRange && !semver.satisfies(version, validRange)) {
200
+ process.stderr.write(`Warning: resolved @playwright/test version ${version} does not satisfy the range `
201
+ + `"${consumingRange}" declared in package.json. The lockfile may be out of date; run `
202
+ + `your package manager's install command to update it.\n`);
203
+ }
204
+ }
205
+ return version;
206
+ }
207
+ function toImporterRelPath(rootPath, packagePath) {
208
+ const rel = path.relative(rootPath, packagePath);
209
+ if (rel === '' || rel === '.') {
210
+ return '.';
211
+ }
212
+ return pathToPosix(rel);
213
+ }
97
214
  export async function getPlaywrightVersionFromPackage(cwd) {
98
215
  try {
99
216
  const require = createRequire(path.join(cwd, 'noop.js'));
100
- const playwrightPath = require.resolve('@playwright/test/package.json');
217
+ const playwrightPath = require.resolve(`${PLAYWRIGHT_TEST}/package.json`);
101
218
  const playwrightPkg = require(playwrightPath);
102
219
  const version = normalizeVersion(playwrightPkg.version);
103
220
  if (!version) {
104
221
  throw new Error('Invalid version found in @playwright/test package.json');
105
222
  }
106
223
  const packageJson = await detectNearestPackageJson(cwd);
107
- const range = packageJson.dependencies?.['@playwright/test']
108
- ?? packageJson.devDependencies?.['@playwright/test'];
224
+ const range = playwrightRange(packageJson);
109
225
  if (!range) {
110
226
  return version;
111
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-project-bundler.js","sourceRoot":"","sources":["../../src/services/playwright-project-bundler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playwright-project-bundler.js","sourceRoot":"","sources":["../../src/services/playwright-project-bundler.ts"],"names":[],"mappings":"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"}