logLine.message}
+ items={entries}
+ render={entry =>
+ {entry.time}
+ {entry.message}
+
}
+ noHighlightOnHover={true}
/>;
};
diff --git a/packages/trace-viewer/src/ui/workbench.tsx b/packages/trace-viewer/src/ui/workbench.tsx
index 703ff72c503aa..46d8bbfbd4073 100644
--- a/packages/trace-viewer/src/ui/workbench.tsx
+++ b/packages/trace-viewer/src/ui/workbench.tsx
@@ -131,7 +131,7 @@ export const Workbench: React.FunctionComponent<{
const logTab: TabbedPaneTabModel = {
id: 'log',
title: 'Log',
- render: () =>
+ render: () =>
};
const errorsTab: TabbedPaneTabModel = {
id: 'errors',
@@ -199,7 +199,7 @@ export const Workbench: React.FunctionComponent<{
}, [model]);
let time: number = 0;
- if (model && model.endTime >= 0)
+ if (!isLive && model && model.endTime >= 0)
time = model.endTime - model.startTime;
else if (model && model.wallTime)
time = Date.now() - model.wallTime;
diff --git a/packages/web/src/components/listView.tsx b/packages/web/src/components/listView.tsx
index 28bd4e4dd7dfc..3722337f145d1 100644
--- a/packages/web/src/components/listView.tsx
+++ b/packages/web/src/components/listView.tsx
@@ -35,6 +35,7 @@ export type ListViewProps = {
onIconClicked?: (item: T, index: number) => void,
noItemsMessage?: string,
dataTestId?: string,
+ noHighlightOnHover?: boolean,
};
const scrollPositions = new Map();
@@ -57,6 +58,7 @@ export function ListView({
onIconClicked,
noItemsMessage,
dataTestId,
+ noHighlightOnHover,
}: ListViewProps) {
const itemListRef = React.useRef(null);
const [highlightedItem, setHighlightedItem] = React.useState();
@@ -131,7 +133,7 @@ export function ListView({
{noItemsMessage && items.length === 0 && {noItemsMessage}
}
{items.map((item, index) => {
const selectedSuffix = selectedItem === item ? ' selected' : '';
- const highlightedSuffix = highlightedItem === item ? ' highlighted' : '';
+ const highlightedSuffix = !noHighlightOnHover && highlightedItem === item ? ' highlighted' : '';
const errorSuffix = isError?.(item, index) ? ' error' : '';
const warningSuffix = isWarning?.(item, index) ? ' warning' : '';
const indentation = indent?.(item, index) || 0;
diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts
index 34244125ce389..123a1fd70fdf5 100644
--- a/tests/library/trace-viewer.spec.ts
+++ b/tests/library/trace-viewer.spec.ts
@@ -123,10 +123,10 @@ test('should contain action info', async ({ showTraceViewer }) => {
const traceViewer = await showTraceViewer([traceFile]);
await traceViewer.selectAction('locator.click');
await traceViewer.page.getByText('Log', { exact: true }).click();
- const logLines = await traceViewer.logLines.allTextContents();
- expect(logLines.length).toBeGreaterThan(10);
- expect(logLines).toContain('attempting click action');
- expect(logLines).toContain(' click action done');
+ await expect(traceViewer.logLines).toContainText([
+ /\d+m?sattempting click action/,
+ /\d+m?s click action done/,
+ ]);
});
test('should render network bars', async ({ page, runAndTrace, server }) => {