Skip to content

Commit ed73b26

Browse files
authored
fix: do not zip live stack traces in ui mode (#37887)
1 parent 6f965ad commit ed73b26

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

packages/playwright-core/src/server/localUtils.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,8 @@ export async function zip(progress: Progress, stackSessions: Map<string, StackSe
6060
const stackSession = params.stacksId ? stackSessions.get(params.stacksId) : undefined;
6161
if (stackSession?.callStacks.length) {
6262
await progress.race(stackSession.writer);
63-
if (process.env.PW_LIVE_TRACE_STACKS) {
64-
zipFile.addFile(stackSession.file, 'trace.stacks');
65-
} else {
66-
const buffer = Buffer.from(JSON.stringify(serializeClientSideCallMetadata(stackSession.callStacks)));
67-
zipFile.addBuffer(buffer, 'trace.stacks');
68-
}
63+
const buffer = Buffer.from(JSON.stringify(serializeClientSideCallMetadata(stackSession.callStacks)));
64+
zipFile.addBuffer(buffer, 'trace.stacks');
6965
}
7066

7167
// Collect sources from stacks.

tests/playwright-test/ui-mode-trace.spec.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,3 +657,39 @@ test('basic fail', async ({ page }) => {
657657
await page.getByTestId('test-tree').getByText('basic fail').dblclick();
658658
await expect(page.getByRole('tabpanel', { name: 'Actions' })).toContainText('Failed');
659659
});
660+
661+
test('should be able to create and dispose APIRequestContext inside Promise.all', async ({ runUITest }) => {
662+
const { page } = await runUITest({
663+
'a.test.ts': `
664+
import { test, request } from '@playwright/test';
665+
test('create api request contexts', async ({ }) => {
666+
await Promise.all(Array.from({ length: 100 }).map(async () => {
667+
let delay = Math.floor(Math.random() * 501);
668+
await new Promise(res => setTimeout(res, delay));
669+
670+
const apiContext = await request.newContext();
671+
delay = Math.floor(Math.random() * 501);
672+
await new Promise(res => setTimeout(res, delay));
673+
await apiContext.dispose();
674+
}));
675+
});
676+
`,
677+
});
678+
679+
await page.getByText('create api request contexts').dblclick();
680+
681+
await expect(page.getByTestId('status-line')).toHaveText('1/1 passed (100%)');
682+
683+
await page.getByText('Errors', { exact: true }).click();
684+
await expect(page.locator('.tab-errors')).toHaveText('No errors');
685+
686+
const listItem = page.getByTestId('actions-tree').getByRole('treeitem');
687+
await expect(
688+
listItem,
689+
'action list'
690+
).toHaveText([
691+
/Before Hooks[\d.]+m?s/,
692+
...Array.from({ length: 100 }).map(() => /Create request context[\d.]+m?s/),
693+
/After Hooks[\d.]+m?s/,
694+
]);
695+
});

0 commit comments

Comments
 (0)