fix(test runner): collect artifacts when calling browser.close() (#14797)
Previously, we only collected artifacts on context closure. However, in serial mode it is possible to close the browser instead.
This commit is contained in:
parent
868e00253f
commit
c7a28ac7e9
|
|
@ -104,6 +104,8 @@ export class Browser extends ChannelOwner<channels.BrowserChannel> implements ap
|
|||
|
||||
async close(): Promise<void> {
|
||||
try {
|
||||
for (const context of this.contexts())
|
||||
await this._browserType?._onWillCloseContext?.(context);
|
||||
if (this._shouldCloseConnectionOnClose)
|
||||
this._connection.close(kBrowserClosedError);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -241,6 +241,27 @@ test('should not override trace file in afterAll', async ({ runInlineTest, serve
|
|||
expect(fs.existsSync(testInfo.outputPath('test-results', 'a-test-1', 'trace-1.zip'))).toBeTruthy();
|
||||
});
|
||||
|
||||
test('should record trace on manual browser closure', async ({ runInlineTest }, testInfo) => {
|
||||
const result = await runInlineTest({
|
||||
'a.spec.ts': `
|
||||
const { test } = pwt;
|
||||
|
||||
test.use({ trace: 'on' });
|
||||
|
||||
test.afterAll(async ({ browser }) => {
|
||||
await browser.close();
|
||||
});
|
||||
|
||||
test('test 1', async ({ page }) => {
|
||||
await page.goto('about:blank');
|
||||
});
|
||||
`,
|
||||
}, { workers: 1 });
|
||||
|
||||
expect(result.exitCode).toBe(0);
|
||||
expect(result.passed).toBe(1);
|
||||
expect(fs.existsSync(testInfo.outputPath('test-results', 'a-test-1', 'trace.zip'))).toBeTruthy();
|
||||
});
|
||||
|
||||
async function parseTrace(file: string): Promise<Map<string, Buffer>> {
|
||||
const zipFS = new ZipFileSystem(file);
|
||||
|
|
|
|||
Loading…
Reference in a new issue