chore: serialize config as a part of list-files (#18649)
This commit is contained in:
parent
0355d8618f
commit
b8bd4f7a48
|
|
@ -143,6 +143,7 @@ test.describe('Item', () => {
|
||||||
// Assert completed class.
|
// Assert completed class.
|
||||||
await expect(firstTodo).toHaveClass('completed');
|
await expect(firstTodo).toHaveClass('completed');
|
||||||
await expect(secondTodo).toHaveClass('completed');
|
await expect(secondTodo).toHaveClass('completed');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should allow me to un-mark items as complete', async ({ page }) => {
|
test('should allow me to un-mark items as complete', async ({ page }) => {
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ async function listTestFiles(opts: { [key: string]: any }) {
|
||||||
|
|
||||||
const runner = new Runner();
|
const runner = new Runner();
|
||||||
await runner.loadConfigFromResolvedFile(resolvedConfigFile);
|
await runner.loadConfigFromResolvedFile(resolvedConfigFile);
|
||||||
const report = await runner.listTestFiles(resolvedConfigFile, opts.project);
|
const report = await runner.listTestFiles(opts.project);
|
||||||
write(JSON.stringify(report), () => {
|
write(JSON.stringify(report), () => {
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ export class Runner {
|
||||||
return fullResult;
|
return fullResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
async listTestFiles(configFile: string, projectNames: string[] | undefined): Promise<any> {
|
async listTestFiles(projectNames: string[] | undefined): Promise<any> {
|
||||||
const projects = this._collectProjects(projectNames);
|
const projects = this._collectProjects(projectNames);
|
||||||
const { filesByProject } = await this._collectFiles(projects, () => true);
|
const { filesByProject } = await this._collectFiles(projects, () => true);
|
||||||
const report: any = {
|
const report: any = {
|
||||||
|
|
@ -202,10 +202,8 @@ export class Runner {
|
||||||
};
|
};
|
||||||
for (const [project, files] of filesByProject) {
|
for (const [project, files] of filesByProject) {
|
||||||
report.projects.push({
|
report.projects.push({
|
||||||
docker: process.env.PLAYWRIGHT_DOCKER,
|
...sanitizeConfigForJSON(project, new Set()),
|
||||||
name: project.name,
|
files: files,
|
||||||
testDir: path.resolve(configFile, project.testDir),
|
|
||||||
files: files
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return report;
|
return report;
|
||||||
|
|
@ -953,5 +951,34 @@ function createStacklessError(message: string): TestError {
|
||||||
return { message, __isNotAFatalError: true } as any;
|
return { message, __isNotAFatalError: true } as any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sanitizeConfigForJSON(object: any, visited: Set<any>): any {
|
||||||
|
const type = typeof object;
|
||||||
|
if (type === 'function' || type === 'symbol')
|
||||||
|
return undefined;
|
||||||
|
if (!object || type !== 'object')
|
||||||
|
return object;
|
||||||
|
|
||||||
|
if (object instanceof RegExp)
|
||||||
|
return String(object);
|
||||||
|
if (object instanceof Date)
|
||||||
|
return object.toISOString();
|
||||||
|
|
||||||
|
if (visited.has(object))
|
||||||
|
return undefined;
|
||||||
|
visited.add(object);
|
||||||
|
|
||||||
|
if (Array.isArray(object))
|
||||||
|
return object.map(a => sanitizeConfigForJSON(a, visited));
|
||||||
|
|
||||||
|
const result: any = {};
|
||||||
|
const keys = Object.keys(object).slice(0, 100);
|
||||||
|
for (const key of keys) {
|
||||||
|
if (key.startsWith('_'))
|
||||||
|
continue;
|
||||||
|
result[key] = sanitizeConfigForJSON(object[key], visited);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
export const builtInReporters = ['list', 'line', 'dot', 'json', 'junit', 'null', 'github', 'html'] as const;
|
export const builtInReporters = ['list', 'line', 'dot', 'json', 'junit', 'null', 'github', 'html'] as const;
|
||||||
export type BuiltInReporter = typeof builtInReporters[number];
|
export type BuiltInReporter = typeof builtInReporters[number];
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue