checkly 8.5.0-prerelease-563ab33 → 8.6.0-prerelease-e89e39a
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/ai-context/skills-command/references/investigate-test-sessions.md +11 -8
- package/dist/commands/debug/parse-playwright-config.js +1 -1
- package/dist/commands/debug/parse-project.d.ts +1 -0
- package/dist/commands/debug/parse-project.js +62 -2
- package/dist/commands/debug/parse-project.js.map +1 -1
- package/dist/commands/import/plan.js +1 -1
- package/dist/commands/import/plan.js.map +1 -1
- package/dist/commands/pw-test.js +5 -2
- package/dist/commands/pw-test.js.map +1 -1
- package/dist/commands/test.js +5 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/trigger.js +5 -1
- package/dist/commands/trigger.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/constructs/agentic-check.js +1 -1
- package/dist/constructs/alert-channel-subscription.js +1 -1
- package/dist/constructs/alert-channel.js +1 -1
- package/dist/constructs/api-check-bundle.d.ts +1 -1
- package/dist/constructs/api-check.js +1 -1
- package/dist/constructs/browser-check-bundle.d.ts +1 -1
- package/dist/constructs/browser-check.js +1 -1
- package/dist/constructs/check-group-ref.js +1 -1
- package/dist/constructs/check-group-v1.js +1 -1
- package/dist/constructs/check.js +10 -3
- package/dist/constructs/check.js.map +1 -1
- package/dist/constructs/construct.js +1 -1
- package/dist/constructs/dashboard.js +1 -1
- package/dist/constructs/dns-monitor.js +1 -1
- package/dist/constructs/email-alert-channel.js +1 -1
- package/dist/constructs/heartbeat-monitor.js +1 -1
- package/dist/constructs/icmp-monitor.js +1 -1
- package/dist/constructs/index.d.ts +1 -0
- package/dist/constructs/index.js +1 -0
- package/dist/constructs/index.js.map +1 -1
- package/dist/constructs/internal/codegen/context.d.ts +1 -1
- package/dist/constructs/maintenance-window.js +1 -1
- package/dist/constructs/multi-step-check-bundle.d.ts +1 -1
- package/dist/constructs/multi-step-check.js +1 -1
- package/dist/constructs/opsgenie-alert-channel.js +1 -1
- package/dist/constructs/pagerduty-alert-channel.js +1 -1
- package/dist/constructs/phone-call-alert-channel.js +1 -1
- package/dist/constructs/playwright-check.js +2 -3
- package/dist/constructs/playwright-check.js.map +1 -1
- package/dist/constructs/private-location-check-assignment.js +1 -1
- package/dist/constructs/private-location-group-assignment.js +1 -1
- package/dist/constructs/private-location.js +1 -1
- package/dist/constructs/project-bundle.d.ts +1 -1
- package/dist/constructs/project.d.ts +1 -62
- package/dist/constructs/project.js +19 -198
- package/dist/constructs/project.js.map +1 -1
- package/dist/constructs/session.d.ts +67 -0
- package/dist/constructs/session.js +197 -0
- package/dist/constructs/session.js.map +1 -0
- package/dist/constructs/slack-alert-channel.js +1 -1
- package/dist/constructs/slack-app-alert-channel.js +1 -1
- package/dist/constructs/sms-alert-channel.js +1 -1
- package/dist/constructs/status-page-service.js +1 -1
- package/dist/constructs/status-page.js +1 -1
- package/dist/constructs/tcp-monitor.js +1 -1
- package/dist/constructs/url-monitor.js +1 -1
- package/dist/constructs/webhook-alert-channel.js +1 -1
- package/dist/helpers/onboarding/boilerplate.js +1 -3
- package/dist/helpers/onboarding/boilerplate.js.map +1 -1
- package/dist/helpers/test-helper.d.ts +1 -0
- package/dist/helpers/test-helper.js +9 -0
- package/dist/helpers/test-helper.js.map +1 -1
- package/dist/playwright/playwright-config-loader.js +1 -1
- package/dist/reporters/abstract-list.d.ts +3 -0
- package/dist/reporters/abstract-list.js +33 -1
- package/dist/reporters/abstract-list.js.map +1 -1
- package/dist/services/abstract-check-runner.js +10 -6
- package/dist/services/abstract-check-runner.js.map +1 -1
- package/dist/services/check-parser/package-files/loader.d.ts +1 -1
- package/dist/services/check-parser/package-files/loader.js +13 -5
- package/dist/services/check-parser/package-files/loader.js.map +1 -1
- package/dist/services/check-parser/package-files/package-manager.d.ts +45 -7
- package/dist/services/check-parser/package-files/package-manager.js +137 -64
- package/dist/services/check-parser/package-files/package-manager.js.map +1 -1
- package/dist/services/check-parser/parser.js +29 -17
- package/dist/services/check-parser/parser.js.map +1 -1
- package/dist/services/check-parser/playwright-config-expander.js +9 -5
- package/dist/services/check-parser/playwright-config-expander.js.map +1 -1
- package/dist/services/playwright-project-bundler.d.ts +17 -0
- package/dist/services/playwright-project-bundler.js +127 -0
- package/dist/services/playwright-project-bundler.js.map +1 -0
- package/dist/services/util.d.ts +0 -12
- package/dist/services/util.js +0 -102
- package/dist/services/util.js.map +1 -1
- package/oclif.manifest.json +410 -404
- package/package.json +4 -4
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import semver from 'semver';
|
|
4
|
+
import { detectNearestPackageJson } from './check-parser/package-files/package-manager.js';
|
|
5
|
+
import { PlaywrightConfig } from './playwright-config.js';
|
|
6
|
+
import { findFilesWithPattern, pathToPosix } from './util.js';
|
|
7
|
+
import { Session } from '../constructs/session.js';
|
|
8
|
+
export class PlaywrightProjectBundler {
|
|
9
|
+
// Cache the in-flight bundle promise keyed by (config, include). Many checks
|
|
10
|
+
// are generated from one shared Playwright codebase, so they call bundle()
|
|
11
|
+
// with identical arguments; without this each call would re-load the config
|
|
12
|
+
// module, re-resolve the Playwright version, and re-glob the project
|
|
13
|
+
// directory. Caching the promise (not the resolved value) also collapses
|
|
14
|
+
// concurrent callers onto a single computation. The NUL separator keeps the
|
|
15
|
+
// config path and the serialized include patterns from colliding.
|
|
16
|
+
#cache = new Map();
|
|
17
|
+
async bundle(playwrightConfig, include) {
|
|
18
|
+
const cacheKey = `${playwrightConfig}\0${JSON.stringify(include)}`;
|
|
19
|
+
const cached = this.#cache.get(cacheKey);
|
|
20
|
+
if (cached !== undefined) {
|
|
21
|
+
return await cached;
|
|
22
|
+
}
|
|
23
|
+
const promise = this.bundleProject(playwrightConfig, include);
|
|
24
|
+
this.#cache.set(cacheKey, promise);
|
|
25
|
+
return await promise;
|
|
26
|
+
}
|
|
27
|
+
// The actual bundling, separated from the cache wrapper above so it can be
|
|
28
|
+
// overridden in tests. Not part of the public surface.
|
|
29
|
+
async bundleProject(playwrightConfig, include) {
|
|
30
|
+
const dir = path.resolve(path.dirname(playwrightConfig));
|
|
31
|
+
const filePath = path.resolve(dir, playwrightConfig);
|
|
32
|
+
// No need of loading everything if there is no lockfile
|
|
33
|
+
const pwtConfig = await Session.loadFile(filePath);
|
|
34
|
+
const pwConfigParsed = new PlaywrightConfig(filePath, pwtConfig);
|
|
35
|
+
const playwrightVersion = await getPlaywrightVersionFromPackage(dir);
|
|
36
|
+
const parser = Session.getPlaywrightParser();
|
|
37
|
+
const { files, errors } = await parser.getFilesAndDependencies(pwConfigParsed);
|
|
38
|
+
if (errors.length) {
|
|
39
|
+
throw new Error(`Error loading playwright project files: ${errors.map((e) => e).join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
function includeTargets(dirName) {
|
|
42
|
+
return include.some(value => {
|
|
43
|
+
return value.startsWith(`${dirName}/`) || value.includes(`/${dirName}/`);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const defaultIgnores = [
|
|
47
|
+
{
|
|
48
|
+
pattern: '**/node_modules/**',
|
|
49
|
+
skipIf: () => includeTargets('node_modules'),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
pattern: '**/.git/**',
|
|
53
|
+
skipIf: () => includeTargets('.git'),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const ignoredFiles = [...Session.ignoreDirectoriesMatch];
|
|
57
|
+
for (const ignore of defaultIgnores) {
|
|
58
|
+
if (!ignore.skipIf()) {
|
|
59
|
+
ignoredFiles.push(ignore.pattern);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const autoIncludes = getAutoIncludes(Session.basePath, dir, Session.packageManager, include);
|
|
63
|
+
const effectiveIncludes = [...include, ...autoIncludes];
|
|
64
|
+
const includedFiles = await findFilesWithPattern(dir, effectiveIncludes, ignoredFiles);
|
|
65
|
+
for (const filePath of includedFiles) {
|
|
66
|
+
files.push({
|
|
67
|
+
filePath,
|
|
68
|
+
physical: true,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
browsers: pwConfigParsed.getBrowsers(),
|
|
73
|
+
playwrightVersion,
|
|
74
|
+
relativePlaywrightConfigPath: Session.contextRelativePosixPath(filePath),
|
|
75
|
+
workingDir: Session.relativePosixPath(Session.contextPath),
|
|
76
|
+
files,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export function normalizeVersion(v) {
|
|
81
|
+
const cleaned = semver.valid(semver.clean(v ?? '') || '')
|
|
82
|
+
?? semver.coerce(v ?? '')?.version;
|
|
83
|
+
return cleaned && semver.valid(cleaned) ? cleaned : undefined;
|
|
84
|
+
}
|
|
85
|
+
export function getAutoIncludes(basePath, globCwd, packageManager, existingIncludes) {
|
|
86
|
+
const autoIncludes = [];
|
|
87
|
+
if (packageManager.name === 'pnpm') {
|
|
88
|
+
const patchesDir = path.join(basePath, 'patches');
|
|
89
|
+
const alreadyIncluded = existingIncludes.some(p => path.resolve(globCwd, p).startsWith(patchesDir));
|
|
90
|
+
if (!alreadyIncluded) {
|
|
91
|
+
const patchesPattern = pathToPosix(path.join(path.relative(globCwd, basePath), 'patches', '*.patch'));
|
|
92
|
+
autoIncludes.push(patchesPattern);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return autoIncludes;
|
|
96
|
+
}
|
|
97
|
+
export async function getPlaywrightVersionFromPackage(cwd) {
|
|
98
|
+
try {
|
|
99
|
+
const require = createRequire(path.join(cwd, 'noop.js'));
|
|
100
|
+
const playwrightPath = require.resolve('@playwright/test/package.json');
|
|
101
|
+
const playwrightPkg = require(playwrightPath);
|
|
102
|
+
const version = normalizeVersion(playwrightPkg.version);
|
|
103
|
+
if (!version) {
|
|
104
|
+
throw new Error('Invalid version found in @playwright/test package.json');
|
|
105
|
+
}
|
|
106
|
+
const packageJson = await detectNearestPackageJson(cwd);
|
|
107
|
+
const range = packageJson.dependencies?.['@playwright/test']
|
|
108
|
+
?? packageJson.devDependencies?.['@playwright/test'];
|
|
109
|
+
if (!range) {
|
|
110
|
+
return version;
|
|
111
|
+
}
|
|
112
|
+
const validRange = semver.validRange(range);
|
|
113
|
+
if (validRange && !semver.satisfies(version, validRange)) {
|
|
114
|
+
throw new Error(`Installed @playwright/test version ${version} does not satisfy the required range "${range}" in package.json. `
|
|
115
|
+
+ 'Please run your package manager\'s install command to sync node_modules.');
|
|
116
|
+
}
|
|
117
|
+
return version;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
// @ts-ignore
|
|
121
|
+
if (error instanceof Error && error.code === 'MODULE_NOT_FOUND') {
|
|
122
|
+
throw new Error('Could not find @playwright/test package. Make sure it is installed.', { cause: error });
|
|
123
|
+
}
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=playwright-project-bundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright-project-bundler.js","sourceRoot":"","sources":["../../src/services/playwright-project-bundler.ts"],"names":[],"mappings":"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"}
|
package/dist/services/util.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { ChecklyConfig, PlaywrightSlimmedProp } from './checkly-config-loader.js';
|
|
2
|
-
import { File } from './check-parser/parser.js';
|
|
3
|
-
import { PackageManager } from './check-parser/package-files/package-manager.js';
|
|
4
2
|
export interface GitInformation {
|
|
5
3
|
commitId: string;
|
|
6
4
|
repoUrl?: string | null;
|
|
@@ -29,16 +27,6 @@ export declare function getGitInformation(repoUrl?: string): GitInformation | nu
|
|
|
29
27
|
export declare function getCiInformation(): CiInformation;
|
|
30
28
|
export declare function escapeValue(value: string | undefined): string;
|
|
31
29
|
export declare function getEnvs(envFile: string | undefined, envArgs: Array<string>): Promise<import("dotenv").DotenvParseOutput>;
|
|
32
|
-
export declare function normalizeVersion(v?: string | undefined): string | undefined;
|
|
33
|
-
export declare function getAutoIncludes(basePath: string, globCwd: string, packageManager: PackageManager, existingIncludes: string[]): string[];
|
|
34
|
-
export declare function bundlePlayWrightProject(playwrightConfig: string, include: string[]): Promise<{
|
|
35
|
-
browsers: string[];
|
|
36
|
-
relativePlaywrightConfigPath: string;
|
|
37
|
-
playwrightVersion: string;
|
|
38
|
-
workingDir?: string;
|
|
39
|
-
files: File[];
|
|
40
|
-
}>;
|
|
41
|
-
export declare function getPlaywrightVersionFromPackage(cwd: string): Promise<string>;
|
|
42
30
|
export declare function findFilesWithPattern(directory: string, pattern: string | string[], ignorePattern: string[]): Promise<string[]>;
|
|
43
31
|
export declare function getDefaultChecklyConfig(directoryName: string, playwrightConfigPath: string, playwrightCheck?: PlaywrightSlimmedProp | null): ChecklyConfig;
|
|
44
32
|
export declare function writeChecklyConfigFile(dir: string, config: ChecklyConfig): Promise<void>;
|
package/dist/services/util.js
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import * as fs from 'fs/promises';
|
|
3
3
|
import * as fsSync from 'fs';
|
|
4
|
-
import { createRequire } from 'node:module';
|
|
5
4
|
import gitRepoInfo from 'git-repo-info';
|
|
6
5
|
import { parse } from 'dotenv';
|
|
7
6
|
import { glob } from 'glob';
|
|
8
7
|
import JSON5 from 'json5';
|
|
9
|
-
import { PlaywrightConfig } from './playwright-config.js';
|
|
10
|
-
import { Session } from '../constructs/project.js';
|
|
11
|
-
import semver from 'semver';
|
|
12
8
|
import { existsSync } from 'fs';
|
|
13
|
-
import { detectNearestPackageJson } from './check-parser/package-files/package-manager.js';
|
|
14
9
|
export function findFilesRecursively(directory, ignoredPaths = []) {
|
|
15
10
|
if (!fsSync.statSync(directory, { throwIfNoEntry: false })?.isDirectory()) {
|
|
16
11
|
return [];
|
|
@@ -113,103 +108,6 @@ export async function getEnvs(envFile, envArgs) {
|
|
|
113
108
|
const envsString = `${envArgs.join('\n')}`;
|
|
114
109
|
return parse(envsString);
|
|
115
110
|
}
|
|
116
|
-
export function normalizeVersion(v) {
|
|
117
|
-
const cleaned = semver.valid(semver.clean(v ?? '') || '')
|
|
118
|
-
?? semver.coerce(v ?? '')?.version;
|
|
119
|
-
return cleaned && semver.valid(cleaned) ? cleaned : undefined;
|
|
120
|
-
}
|
|
121
|
-
export function getAutoIncludes(basePath, globCwd, packageManager, existingIncludes) {
|
|
122
|
-
const autoIncludes = [];
|
|
123
|
-
if (packageManager.name === 'pnpm') {
|
|
124
|
-
const patchesDir = path.join(basePath, 'patches');
|
|
125
|
-
const alreadyIncluded = existingIncludes.some(p => path.resolve(globCwd, p).startsWith(patchesDir));
|
|
126
|
-
if (!alreadyIncluded) {
|
|
127
|
-
const patchesPattern = pathToPosix(path.join(path.relative(globCwd, basePath), 'patches', '*.patch'));
|
|
128
|
-
autoIncludes.push(patchesPattern);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return autoIncludes;
|
|
132
|
-
}
|
|
133
|
-
export async function bundlePlayWrightProject(playwrightConfig, include) {
|
|
134
|
-
const dir = path.resolve(path.dirname(playwrightConfig));
|
|
135
|
-
const filePath = path.resolve(dir, playwrightConfig);
|
|
136
|
-
// No need of loading everything if there is no lockfile
|
|
137
|
-
const pwtConfig = await Session.loadFile(filePath);
|
|
138
|
-
const pwConfigParsed = new PlaywrightConfig(filePath, pwtConfig);
|
|
139
|
-
const playwrightVersion = await getPlaywrightVersionFromPackage(dir);
|
|
140
|
-
const parser = Session.getPlaywrightParser();
|
|
141
|
-
const { files, errors } = await parser.getFilesAndDependencies(pwConfigParsed);
|
|
142
|
-
if (errors.length) {
|
|
143
|
-
throw new Error(`Error loading playwright project files: ${errors.map((e) => e).join(', ')}`);
|
|
144
|
-
}
|
|
145
|
-
function includeTargets(dirName) {
|
|
146
|
-
return include.some(value => {
|
|
147
|
-
return value.startsWith(`${dirName}/`) || value.includes(`/${dirName}/`);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
const defaultIgnores = [
|
|
151
|
-
{
|
|
152
|
-
pattern: '**/node_modules/**',
|
|
153
|
-
skipIf: () => includeTargets('node_modules'),
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
pattern: '**/.git/**',
|
|
157
|
-
skipIf: () => includeTargets('.git'),
|
|
158
|
-
},
|
|
159
|
-
];
|
|
160
|
-
const ignoredFiles = [...Session.ignoreDirectoriesMatch];
|
|
161
|
-
for (const ignore of defaultIgnores) {
|
|
162
|
-
if (!ignore.skipIf()) {
|
|
163
|
-
ignoredFiles.push(ignore.pattern);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
const autoIncludes = getAutoIncludes(Session.basePath, dir, Session.packageManager, include);
|
|
167
|
-
const effectiveIncludes = [...include, ...autoIncludes];
|
|
168
|
-
const includedFiles = await findFilesWithPattern(dir, effectiveIncludes, ignoredFiles);
|
|
169
|
-
for (const filePath of includedFiles) {
|
|
170
|
-
files.push({
|
|
171
|
-
filePath,
|
|
172
|
-
physical: true,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
return {
|
|
176
|
-
browsers: pwConfigParsed.getBrowsers(),
|
|
177
|
-
playwrightVersion,
|
|
178
|
-
relativePlaywrightConfigPath: Session.contextRelativePosixPath(filePath),
|
|
179
|
-
workingDir: Session.relativePosixPath(Session.contextPath),
|
|
180
|
-
files,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
export async function getPlaywrightVersionFromPackage(cwd) {
|
|
184
|
-
try {
|
|
185
|
-
const require = createRequire(path.join(cwd, 'noop.js'));
|
|
186
|
-
const playwrightPath = require.resolve('@playwright/test/package.json');
|
|
187
|
-
const playwrightPkg = require(playwrightPath);
|
|
188
|
-
const version = normalizeVersion(playwrightPkg.version);
|
|
189
|
-
if (!version) {
|
|
190
|
-
throw new Error('Invalid version found in @playwright/test package.json');
|
|
191
|
-
}
|
|
192
|
-
const packageJson = await detectNearestPackageJson(cwd);
|
|
193
|
-
const range = packageJson.dependencies?.['@playwright/test']
|
|
194
|
-
?? packageJson.devDependencies?.['@playwright/test'];
|
|
195
|
-
if (!range) {
|
|
196
|
-
return version;
|
|
197
|
-
}
|
|
198
|
-
const validRange = semver.validRange(range);
|
|
199
|
-
if (validRange && !semver.satisfies(version, validRange)) {
|
|
200
|
-
throw new Error(`Installed @playwright/test version ${version} does not satisfy the required range "${range}" in package.json. `
|
|
201
|
-
+ 'Please run your package manager\'s install command to sync node_modules.');
|
|
202
|
-
}
|
|
203
|
-
return version;
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
// @ts-ignore
|
|
207
|
-
if (error instanceof Error && error.code === 'MODULE_NOT_FOUND') {
|
|
208
|
-
throw new Error('Could not find @playwright/test package. Make sure it is installed.', { cause: error });
|
|
209
|
-
}
|
|
210
|
-
throw error;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
111
|
export async function findFilesWithPattern(directory, pattern, ignorePattern) {
|
|
214
112
|
// Not using pathToPosix here because it strips the drive letter (e.g. C:) that glob
|
|
215
113
|
// needs to resolve absolute patterns on Windows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/services/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,IAAI,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/services/util.ts"],"names":[],"mappings":"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"}
|