fix(uimode): show trace failure and any error messages on missing trace (#35344)

This commit is contained in:
Adam Gastineau 2025-04-03 11:13:19 -07:00 committed by GitHub
parent 01ea1cafdc
commit 26b9441d86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 2 deletions

View File

@ -32,7 +32,7 @@ export const TraceView: React.FC<{
revealSource?: boolean,
pathSeparator: string,
}> = ({ item, rootDir, onOpenExternally, revealSource, pathSeparator }) => {
const [model, setModel] = React.useState<{ model: MultiTraceModel, isLive: boolean } | undefined>();
const [model, setModel] = React.useState<{ model: MultiTraceModel, isLive: boolean } | undefined>(undefined);
const [counter, setCounter] = React.useState(0);
const pollTimer = React.useRef<NodeJS.Timeout | null>(null);
@ -75,7 +75,9 @@ export const TraceView: React.FC<{
const model = await loadSingleTraceFile(traceLocation);
setModel({ model, isLive: true });
} catch {
setModel(undefined);
const model = new MultiTraceModel([]);
model.errorDescriptors.push(...result.errors.flatMap(error => !!error.message ? [{ message: error.message }] : []));
setModel({ model, isLive: false });
} finally {
setCounter(counter + 1);
}

View File

@ -581,3 +581,27 @@ test('fails', async ({ page }) => {
5 | });
`.trim());
});
test('should indicate current test status', async ({ runUITest }) => {
const { page } = await runUITest({
'a.spec.ts': `
import { test, expect } from '@playwright/test';
test('basic pass', async ({ page }) => {
await page.setContent('<button>Submit</button>');
await new Promise(resolve => setTimeout(resolve, 1000));
expect(1).toBe(1);
});
test('basic fail', async ({ page }) => {
await page.setContent('<button>Submit</button>');
expect(1).toBe(2);
});
`.trim(),
});
await page.getByTestId('test-tree').getByText('basic pass').dblclick();
await expect(page.getByRole('tabpanel', { name: 'Actions' })).toContainText('Running');
await expect(page.getByRole('tabpanel', { name: 'Actions' })).toContainText('Passed');
await page.getByTestId('test-tree').getByText('basic fail').dblclick();
await expect(page.getByRole('tabpanel', { name: 'Actions' })).toContainText('Failed');
});