fix: keep ordering

This commit is contained in:
Simon Knott 2025-02-20 10:50:52 +01:00
parent 66347fb5cf
commit 13a391b3e8
No known key found for this signature in database
GPG key ID: 8CEDC00028084AEC
2 changed files with 21 additions and 15 deletions

View file

@ -68,7 +68,12 @@ export function useConsoleTabModel(model: modelUtil.MultiTraceModel | undefined,
else else
entries.push({ ...entry, repeat: 1 }); entries.push({ ...entry, repeat: 1 });
} }
for (const event of model.events) { const logEvents = [...model.events, ...model.stdio].sort((a, b) => {
const aTimestamp = 'time' in a ? a.time : a.timestamp;
const bTimestamp = 'time' in b ? b.time : b.timestamp;
return aTimestamp - bTimestamp;
})
for (const event of logEvents) {
if (event.type === 'console') { if (event.type === 'console') {
const body = event.args && event.args.length ? format(event.args) : formatAnsi(event.text); const body = event.args && event.args.length ? format(event.args) : formatAnsi(event.text);
const url = event.location.url; const url = event.location.url;
@ -94,22 +99,21 @@ export function useConsoleTabModel(model: modelUtil.MultiTraceModel | undefined,
timestamp: event.time, timestamp: event.time,
}); });
} }
} if (event.type === 'stderr' || event.type === 'stdout') {
for (const event of model.stdio) { let html = '';
let html = ''; if (event.text)
if (event.text) html = ansi2html(event.text.trim()) || '';
html = ansi2html(event.text.trim()) || ''; if (event.base64)
if (event.base64) html = ansi2html(atob(event.base64).trim()) || '';
html = ansi2html(atob(event.base64).trim()) || '';
addEntry({ addEntry({
nodeMessage: { html }, nodeMessage: { html },
isError: event.type === 'stderr', isError: event.type === 'stderr',
isWarning: false, isWarning: false,
timestamp: event.timestamp, timestamp: event.timestamp,
}); });
}
} }
entries.sort((a, b) => a.timestamp - b.timestamp);
return { entries }; return { entries };
}, [model]); }, [model]);

View file

@ -120,6 +120,7 @@ test('should collapse repeated console messages for test', async ({ runUITest })
import { test, expect } from '@playwright/test'; import { test, expect } from '@playwright/test';
test('print', async ({ page }) => { test('print', async ({ page }) => {
await page.evaluate(() => { await page.evaluate(() => {
console.log('page message')
for (let i = 0; i < 10; ++i) for (let i = 0; i < 10; ++i)
console.log('page message') console.log('page message')
}); });
@ -146,6 +147,7 @@ test('should collapse repeated console messages for test', async ({ runUITest })
await expect(page.getByRole('tabpanel', { name: 'Console' })).toMatchAriaSnapshot(` await expect(page.getByRole('tabpanel', { name: 'Console' })).toMatchAriaSnapshot(`
- tabpanel "Console": - tabpanel "Console":
- list: - list:
- listitem: /page message/
- listitem: /10 page message/ - listitem: /10 page message/
- listitem: /10 node message/ - listitem: /10 node message/
- listitem: /10 page message/ - listitem: /10 page message/