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:
Dmitry Gozman 2022-06-10 14:11:34 -07:00 committed by GitHub
parent 868e00253f
commit c7a28ac7e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View file

@ -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

View file

@ -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);