mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
fix: colors in console output from worker (#15421)
Color highlights regressed in #14455 Fixes #15366
This commit is contained in:
parent
fb3a0b2a4d
commit
51aa5fea78
@ -529,6 +529,14 @@ class Worker extends EventEmitter {
|
|||||||
repeatEachIndex: testGroup.repeatEachIndex,
|
repeatEachIndex: testGroup.repeatEachIndex,
|
||||||
projectIndex: testGroup.projectIndex,
|
projectIndex: testGroup.projectIndex,
|
||||||
loader: loaderData,
|
loader: loaderData,
|
||||||
|
stdoutDimension: {
|
||||||
|
rows: process.stdout.rows,
|
||||||
|
columns: process.stdout.columns
|
||||||
|
},
|
||||||
|
stderrDimension: {
|
||||||
|
rows: process.stderr.rows,
|
||||||
|
columns: process.stderr.columns
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.send({ method: 'init', params });
|
this.send({ method: 'init', params });
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,12 +24,19 @@ export type SerializedLoaderData = {
|
|||||||
configCLIOverrides: ConfigCLIOverrides;
|
configCLIOverrides: ConfigCLIOverrides;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type TtyDimension = {
|
||||||
|
rows: number | undefined;
|
||||||
|
columns: number | undefined;
|
||||||
|
};
|
||||||
|
|
||||||
export type WorkerInitParams = {
|
export type WorkerInitParams = {
|
||||||
workerIndex: number;
|
workerIndex: number;
|
||||||
parallelIndex: number;
|
parallelIndex: number;
|
||||||
repeatEachIndex: number;
|
repeatEachIndex: number;
|
||||||
projectIndex: number;
|
projectIndex: number;
|
||||||
loader: SerializedLoaderData;
|
loader: SerializedLoaderData;
|
||||||
|
stdoutDimension: TtyDimension;
|
||||||
|
stderrDimension: TtyDimension;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TestBeginPayload = {
|
export type TestBeginPayload = {
|
||||||
|
|||||||
@ -65,6 +65,7 @@ process.on('message', async message => {
|
|||||||
if (message.method === 'init') {
|
if (message.method === 'init') {
|
||||||
const initParams = message.params as WorkerInitParams;
|
const initParams = message.params as WorkerInitParams;
|
||||||
workerIndex = initParams.workerIndex;
|
workerIndex = initParams.workerIndex;
|
||||||
|
initConsoleParameters(initParams);
|
||||||
startProfiling();
|
startProfiling();
|
||||||
workerRunner = new WorkerRunner(initParams);
|
workerRunner = new WorkerRunner(initParams);
|
||||||
for (const event of ['testBegin', 'testEnd', 'stepBegin', 'stepEnd', 'done', 'teardownErrors'])
|
for (const event of ['testBegin', 'testEnd', 'stepBegin', 'stepEnd', 'done', 'teardownErrors'])
|
||||||
@ -120,3 +121,17 @@ function chunkToParams(chunk: Buffer | string): { text?: string, buffer?: strin
|
|||||||
return { text: util.inspect(chunk) };
|
return { text: util.inspect(chunk) };
|
||||||
return { text: chunk };
|
return { text: chunk };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initConsoleParameters(initParams: WorkerInitParams) {
|
||||||
|
// Make sure the output supports colors.
|
||||||
|
process.stdout.isTTY = true;
|
||||||
|
process.stderr.isTTY = true;
|
||||||
|
if (initParams.stdoutDimension.rows)
|
||||||
|
process.stdout.rows = initParams.stdoutDimension.rows;
|
||||||
|
if (initParams.stdoutDimension.columns)
|
||||||
|
process.stdout.columns = initParams.stdoutDimension.columns;
|
||||||
|
if (initParams.stderrDimension.rows)
|
||||||
|
process.stderr.rows = initParams.stderrDimension.rows;
|
||||||
|
if (initParams.stderrDimension.columns)
|
||||||
|
process.stderr.columns = initParams.stderrDimension.columns;
|
||||||
|
}
|
||||||
|
|||||||
@ -76,3 +76,22 @@ test('should ignore stdio when quiet', async ({ runInlineTest }) => {
|
|||||||
}, { reporter: 'list' });
|
}, { reporter: 'list' });
|
||||||
expect(result.output).not.toContain('%%');
|
expect(result.output).not.toContain('%%');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should support console colors', async ({ runInlineTest }) => {
|
||||||
|
const result = await runInlineTest({
|
||||||
|
'a.spec.js': `
|
||||||
|
const { test } = pwt;
|
||||||
|
test('console log', () => {
|
||||||
|
console.log('process.stdout.isTTY = ' + process.stdout.isTTY);
|
||||||
|
console.log('process.stderr.isTTY = ' + process.stderr.isTTY);
|
||||||
|
console.log({ b: true, n: 123, s: 'abc' });
|
||||||
|
console.error({ b: false, n: 123, s: 'abc' });
|
||||||
|
});
|
||||||
|
`
|
||||||
|
});
|
||||||
|
expect(result.output).toContain(`process.stdout.isTTY = true`);
|
||||||
|
expect(result.output).toContain(`process.stderr.isTTY = true`);
|
||||||
|
// The output should have colors.
|
||||||
|
expect(result.output).toContain(`{ b: \x1b[33mtrue\x1b[39m, n: \x1b[33m123\x1b[39m, s: \x1b[32m'abc'\x1b[39m }`);
|
||||||
|
expect(result.output).toContain(`{ b: \x1b[33mfalse\x1b[39m, n: \x1b[33m123\x1b[39m, s: \x1b[32m'abc'\x1b[39m }`);
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user