diff --git a/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx b/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx
index 3500b93b1f..785ce623ca 100644
--- a/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx
+++ b/packages/trace-viewer/src/ui/embeddedWorkbenchLoader.tsx
@@ -91,7 +91,7 @@ export const EmbeddedWorkbenchLoader: React.FunctionComponent = () => {
Locator
-
{
+ {
// Updating text needs to go first - react can squeeze a render between the state updates.
setHighlightedLocator(text);
setIsInspecting(false);
diff --git a/packages/trace-viewer/src/ui/modelUtil.ts b/packages/trace-viewer/src/ui/modelUtil.ts
index b639a4c03d..8badcbd87e 100644
--- a/packages/trace-viewer/src/ui/modelUtil.ts
+++ b/packages/trace-viewer/src/ui/modelUtil.ts
@@ -22,7 +22,6 @@ import type { ActionEntry, ContextEntry, PageEntry } from '../types/entries';
import type { StackFrame } from '@protocol/channels';
const contextSymbol = Symbol('context');
-const pageSymbol = Symbol('page');
const nextInContextSymbol = Symbol('next');
const prevInListSymbol = Symbol('prev');
const eventsSymbol = Symbol('events');
@@ -148,7 +147,6 @@ function indexModel(context: ContextEntry) {
for (let i = 0; i < context.actions.length; ++i) {
const action = context.actions[i] as any;
action[contextSymbol] = context;
- action[pageSymbol] = context.pages.find(page => page.pageId === action.pageId);
}
let lastNonRouteAction = undefined;
for (let i = context.actions.length - 1; i >= 0; i--) {
@@ -353,10 +351,6 @@ export function prevInList(action: ActionTraceEvent): ActionTraceEvent {
return (action as any)[prevInListSymbol];
}
-export function pageForAction(action: ActionTraceEvent): PageEntry {
- return (action as any)[pageSymbol];
-}
-
export function stats(action: ActionTraceEvent): { errors: number, warnings: number } {
let errors = 0;
let warnings = 0;
diff --git a/packages/trace-viewer/src/ui/recorder/recorderView.tsx b/packages/trace-viewer/src/ui/recorder/recorderView.tsx
index ed36efbbb6..6ff6b665d3 100644
--- a/packages/trace-viewer/src/ui/recorder/recorderView.tsx
+++ b/packages/trace-viewer/src/ui/recorder/recorderView.tsx
@@ -213,7 +213,6 @@ const PropertiesView: React.FunctionComponent<{
id: 'inspector',
title: 'Locator',
render: () => (items: T[], metric: (v: T) => number, target: number) {
- return items.find((item, index) => {
- if (index === items.length - 1)
- return true;
- const next = items[index + 1];
- return Math.abs(metric(item) - target) < Math.abs(metric(next) - target);
- });
-}
-
export const SnapshotTabsView: React.FunctionComponent<{
action: ActionTraceEvent | undefined,
model?: MultiTraceModel,
@@ -53,7 +43,6 @@ export const SnapshotTabsView: React.FunctionComponent<{
openPage?: (url: string, target?: string) => Window | any,
}> = ({ action, sdkLanguage, testIdAttributeName, isInspecting, setIsInspecting, highlightedLocator, setHighlightedLocator, openPage }) => {
const [snapshotTab, setSnapshotTab] = React.useState<'action'|'before'|'after'>('action');
- const showScreenshotInsteadOfSnapshot = false;
const snapshots = React.useMemo(() => {
return collectSnapshots(action);
@@ -65,7 +54,7 @@ export const SnapshotTabsView: React.FunctionComponent<{
return
- setIsInspecting(!isInspecting)} disabled={showScreenshotInsteadOfSnapshot} />
+ setIsInspecting(!isInspecting)} />
{['action', 'before', 'after'].map(tab => {
return ;
})}
- {
+ {
if (!openPage)
openPage = window.open;
const win = openPage(snapshotUrls?.popoutUrl || '', '_blank');
@@ -86,7 +75,7 @@ export const SnapshotTabsView: React.FunctionComponent<{
});
}} />
- {!showScreenshotInsteadOfSnapshot &&
}
- {showScreenshotInsteadOfSnapshot &&
}
+ />
;
};
@@ -194,38 +179,6 @@ export const SnapshotView: React.FunctionComponent<{
;
};
-export const ScreenshotView: React.FunctionComponent<{
- action: ActionTraceEvent | undefined,
- snapshotUrls: SnapshotUrls | undefined,
- snapshot: Snapshot | undefined,
-}> = ({ action, snapshotUrls, snapshot }) => {
- const [snapshotInfo, setSnapshotInfo] = React.useState
({ viewport: kDefaultViewport, url: '' });
- React.useEffect(() => {
- fetchSnapshotInfo(snapshotUrls?.snapshotInfoUrl).then(setSnapshotInfo);
- }, [snapshotUrls?.snapshotInfoUrl]);
-
- const page = action ? pageForAction(action) : undefined;
- const screencastFrame = React.useMemo(() => {
- if (snapshotInfo.wallTime && page?.screencastFrames[0]?.frameSwapWallTime)
- return findClosest(page.screencastFrames, frame => frame.frameSwapWallTime!, snapshotInfo.wallTime);
-
- if (snapshotInfo.timestamp && page?.screencastFrames)
- return findClosest(page.screencastFrames, frame => frame.timestamp, snapshotInfo.timestamp);
- },
- [page?.screencastFrames, snapshotInfo.timestamp, snapshotInfo.wallTime]);
-
- const point = snapshot?.point;
-
- return
- {screencastFrame && (
- <>
- {point && }
-
- >
- )}
- ;
-};
-
const SnapshotWrapper: React.FunctionComponent> = ({ snapshotInfo, children }) => {
diff --git a/packages/trace-viewer/src/ui/workbench.tsx b/packages/trace-viewer/src/ui/workbench.tsx
index f5471ca81c..8e22917053 100644
--- a/packages/trace-viewer/src/ui/workbench.tsx
+++ b/packages/trace-viewer/src/ui/workbench.tsx
@@ -55,8 +55,7 @@ export const Workbench: React.FunctionComponent<{
openPage?: (url: string, target?: string) => Window | any,
onOpenExternally?: (location: modelUtil.SourceLocation) => void,
revealSource?: boolean,
- showSettings?: boolean,
-}> = ({ model, showSourcesFirst, rootDir, fallbackLocation, isLive, hideTimeline, status, annotations, inert, openPage, onOpenExternally, revealSource, showSettings }) => {
+}> = ({ model, showSourcesFirst, rootDir, fallbackLocation, isLive, hideTimeline, status, annotations, inert, openPage, onOpenExternally, revealSource }) => {
const [selectedCallId, setSelectedCallId] = React.useState(undefined);
const [revealedError, setRevealedError] = React.useState(undefined);
const [highlightedCallId, setHighlightedCallId] = React.useState();
@@ -68,7 +67,6 @@ export const Workbench: React.FunctionComponent<{
const [highlightedLocator, setHighlightedLocator] = React.useState('');
const [selectedTime, setSelectedTime] = React.useState();
const [sidebarLocation, setSidebarLocation] = useSetting<'bottom' | 'right'>('propertiesSidebarLocation', 'bottom');
- const showScreenshot = false;
const setSelectedAction = React.useCallback((action: modelUtil.ActionTraceEventInContext | undefined) => {
setSelectedCallId(action?.callId);
@@ -164,7 +162,6 @@ export const Workbench: React.FunctionComponent<{
id: 'inspector',
title: 'Locator',
render: () =>
-
Trace Viewer uses Service Workers to show traces. To view trace:
diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts
index 0ae5716e2f..37666fc1c6 100644
--- a/tests/library/trace-viewer.spec.ts
+++ b/tests/library/trace-viewer.spec.ts
@@ -1422,24 +1422,6 @@ test('should serve css without content-type', async ({ page, runAndTrace, server
await expect(snapshotFrame.locator('body')).toHaveCSS('background-color', 'rgb(255, 0, 0)', { timeout: 0 });
});
-test.skip('should allow showing screenshots instead of snapshots', async ({ runAndTrace, page, server }) => {
- const traceViewer = await runAndTrace(async () => {
- await page.goto(server.PREFIX + '/one-style.html');
- await page.waitForTimeout(1000); // ensure we could take a screenshot
- });
-
- const screenshot = traceViewer.page.getByAltText(`Screenshot of page.goto`);
- const snapshot = (await traceViewer.snapshotFrame('page.goto')).owner();
- await expect(snapshot).toBeVisible();
- await expect(screenshot).not.toBeVisible();
-
- await traceViewer.page.getByTitle('Settings').click();
- await traceViewer.page.getByText('Show screenshot instead of snapshot').setChecked(true);
-
- await expect(snapshot).not.toBeVisible();
- await expect(screenshot).toBeVisible();
-});
-
test('canvas clipping', async ({ runAndTrace, page, server }) => {
const traceViewer = await runAndTrace(async () => {
await page.goto(server.PREFIX + '/screenshots/canvas.html#canvas-on-edge');
@@ -1466,18 +1448,6 @@ test('canvas clipping in iframe', async ({ runAndTrace, page, server }) => {
await expect(canvas).toHaveAttribute('title', `Playwright displays canvas contents on a best-effort basis. It doesn't support canvas elements inside an iframe yet. If this impacts your workflow, please open an issue so we can prioritize.`);
});
-test.skip('should handle case where neither snapshots nor screenshots exist', async ({ runAndTrace, page, server }) => {
- const traceViewer = await runAndTrace(async () => {
- await page.goto(server.PREFIX + '/one-style.html');
- }, { snapshots: false, screenshots: false });
-
- await traceViewer.page.getByTitle('Settings').click();
- await traceViewer.page.getByText('Show screenshot instead of snapshot').setChecked(true);
-
- const screenshot = traceViewer.page.getByAltText(`Screenshot of page.goto > Action`);
- await expect(screenshot).not.toBeVisible();
-});
-
test('should show only one pointer with multilevel iframes', async ({ page, runAndTrace, server, browserName }) => {
test.fixme(browserName === 'firefox', 'Elements in iframe are not marked');