chore: align recorder drawer with trace viewer (#26922)

This commit is contained in:
Pavel Feldman 2023-09-06 17:13:25 -07:00 committed by GitHub
parent 874e285adf
commit 61a1924328
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 27 deletions

View file

@ -28,10 +28,6 @@
min-width: 100px; min-width: 100px;
} }
.recorder .toolbar-button.toggled.microscope {
color: #12a3ff;
}
.recorder .toolbar-button.toggled.record { .recorder .toolbar-button.toggled.record {
color: #a1260d; color: #a1260d;
} }
@ -53,13 +49,3 @@ body.dark-mode .recorder .toolbar-button.toggled.record {
.recorder .selector-input { .recorder .selector-input {
flex: auto; flex: auto;
} }
.recorder .toolbar .cm-wrapper {
margin-left: 8px;
display: flex;
padding: 8px;
}
.recorder .toolbar .CodeMirror {
height: auto;
}

View file

@ -17,6 +17,7 @@
import type { CallLog, Mode, Source } from './recorderTypes'; import type { CallLog, Mode, Source } from './recorderTypes';
import { CodeMirrorWrapper } from '@web/components/codeMirrorWrapper'; import { CodeMirrorWrapper } from '@web/components/codeMirrorWrapper';
import { SplitView } from '@web/components/splitView'; import { SplitView } from '@web/components/splitView';
import { TabbedPane } from '@web/components/tabbedPane';
import { Toolbar } from '@web/components/toolbar'; import { Toolbar } from '@web/components/toolbar';
import { ToolbarButton } from '@web/components/toolbarButton'; import { ToolbarButton } from '@web/components/toolbarButton';
import * as React from 'react'; import * as React from 'react';
@ -48,6 +49,7 @@ export const Recorder: React.FC<RecorderProps> = ({
mode, mode,
}) => { }) => {
const [fileId, setFileId] = React.useState<string | undefined>(); const [fileId, setFileId] = React.useState<string | undefined>();
const [selectedTab, setSelectedTab] = React.useState<string>('log');
React.useEffect(() => { React.useEffect(() => {
if (!fileId && sources.length > 0) if (!fileId && sources.length > 0)
@ -140,18 +142,27 @@ export const Recorder: React.FC<RecorderProps> = ({
</Toolbar> </Toolbar>
<SplitView sidebarSize={200} sidebarHidden={mode === 'recording'}> <SplitView sidebarSize={200} sidebarHidden={mode === 'recording'}>
<CodeMirrorWrapper text={source.text} language={source.language} highlight={source.highlight} revealLine={source.revealLine} readOnly={true} lineNumbers={true}/> <CodeMirrorWrapper text={source.text} language={source.language} highlight={source.highlight} revealLine={source.revealLine} readOnly={true} lineNumbers={true}/>
<div className='vbox'> <TabbedPane
<Toolbar> leftToolbar={[<ToolbarButton icon='target' title='Pick locator' toggled={mode === 'inspecting'} onClick={() => {
<ToolbarButton icon='microscope' title='Pick locator' toggled={mode === 'inspecting'} onClick={() => { window.dispatch({ event: 'setMode', params: { mode: mode === 'inspecting' ? 'none' : 'inspecting' } }).catch(() => { });
window.dispatch({ event: 'setMode', params: { mode: mode === 'inspecting' ? 'none' : 'inspecting' } }).catch(() => { }); setSelectedTab('locator');
}}>Pick locator</ToolbarButton> }} />]}
<CodeMirrorWrapper text={locator} language={source.language} readOnly={false} focusOnChange={true} wrapLines={true} onChange={onEditorChange} /> rightToolbar={selectedTab === 'locator' ? [<ToolbarButton icon='files' title='Copy' onClick={() => copy(locator)} />] : []}
<ToolbarButton icon='files' title='Copy' onClick={() => { tabs={[
copy(locator); {
}}></ToolbarButton> id: 'locator',
</Toolbar> title: 'Locator',
<CallLogView language={source.language} log={Array.from(log.values())}/> render: () => <CodeMirrorWrapper text={locator} language={source.language} readOnly={false} focusOnChange={true} onChange={onEditorChange} />
</div> },
{
id: 'log',
title: 'Log',
render: () => <CallLogView language={source.language} log={Array.from(log.values())}/>
},
]}
selectedTab={selectedTab}
setSelectedTab={setSelectedTab}
/>
</SplitView> </SplitView>
</div>; </div>;
}; };

View file

@ -376,7 +376,8 @@ it.describe('pause', () => {
const recorderPage = await recorderPageGetter(); const recorderPage = await recorderPageGetter();
const box1Promise = waitForTestLog<Box>(page, 'Highlight box for test: '); const box1Promise = waitForTestLog<Box>(page, 'Highlight box for test: ');
await recorderPage.click('.toolbar .CodeMirror'); await recorderPage.getByText('Locator', { exact: true }).click();
await recorderPage.locator('.tabbed-pane .CodeMirror').click();
await recorderPage.keyboard.type('getByText(\'Submit\')'); await recorderPage.keyboard.type('getByText(\'Submit\')');
const box1 = await box1Promise; const box1 = await box1Promise;