pipe sdkLanguage
This commit is contained in:
parent
3dbf4b3d7a
commit
a66e4c0e5f
|
|
@ -20,14 +20,16 @@ import './networkResourceDetails.css';
|
||||||
import { TabbedPane } from '@web/components/tabbedPane';
|
import { TabbedPane } from '@web/components/tabbedPane';
|
||||||
import { CodeMirrorWrapper } from '@web/components/codeMirrorWrapper';
|
import { CodeMirrorWrapper } from '@web/components/codeMirrorWrapper';
|
||||||
import { ToolbarButton } from '@web/components/toolbarButton';
|
import { ToolbarButton } from '@web/components/toolbarButton';
|
||||||
import { fetchRequestPostData, generateCurlCommand, generateFetchCall } from '../third_party/devtools';
|
import { generateCurlCommand, generateFetchCall } from '../third_party/devtools';
|
||||||
import { CopyToClipboardTextButton } from './copyToClipboard';
|
import { CopyToClipboardTextButton } from './copyToClipboard';
|
||||||
import { generatePlaywrightRequestCall } from '@isomorphic/codegen';
|
import { generatePlaywrightRequestCall } from '@isomorphic/codegen';
|
||||||
|
import type { Language } from '@isomorphic/locatorGenerators';
|
||||||
|
|
||||||
export const NetworkResourceDetails: React.FunctionComponent<{
|
export const NetworkResourceDetails: React.FunctionComponent<{
|
||||||
resource: ResourceSnapshot;
|
resource: ResourceSnapshot;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
}> = ({ resource, onClose }) => {
|
sdkLanguage?: Language;
|
||||||
|
}> = ({ resource, onClose, sdkLanguage }) => {
|
||||||
const [selectedTab, setSelectedTab] = React.useState('request');
|
const [selectedTab, setSelectedTab] = React.useState('request');
|
||||||
|
|
||||||
return <TabbedPane
|
return <TabbedPane
|
||||||
|
|
@ -37,7 +39,7 @@ export const NetworkResourceDetails: React.FunctionComponent<{
|
||||||
{
|
{
|
||||||
id: 'request',
|
id: 'request',
|
||||||
title: 'Request',
|
title: 'Request',
|
||||||
render: () => <RequestTab resource={resource}/>,
|
render: () => <RequestTab resource={resource} sdkLanguage={sdkLanguage} />,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'response',
|
id: 'response',
|
||||||
|
|
@ -56,11 +58,10 @@ export const NetworkResourceDetails: React.FunctionComponent<{
|
||||||
|
|
||||||
const RequestTab: React.FunctionComponent<{
|
const RequestTab: React.FunctionComponent<{
|
||||||
resource: ResourceSnapshot;
|
resource: ResourceSnapshot;
|
||||||
}> = ({ resource }) => {
|
sdkLanguage?: Language;
|
||||||
|
}> = ({ resource, sdkLanguage }) => {
|
||||||
const [requestBody, setRequestBody] = React.useState<{ text: string, mimeType?: string } | null>(null);
|
const [requestBody, setRequestBody] = React.useState<{ text: string, mimeType?: string } | null>(null);
|
||||||
|
|
||||||
const isJavascript = true; // TODO
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const readResources = async () => {
|
const readResources = async () => {
|
||||||
if (resource.request.postData) {
|
if (resource.request.postData) {
|
||||||
|
|
@ -99,7 +100,7 @@ const RequestTab: React.FunctionComponent<{
|
||||||
<div className='network-request-details-copy'>
|
<div className='network-request-details-copy'>
|
||||||
<CopyToClipboardTextButton description='Copy as cURL' value={() => generateCurlCommand(resource)} />
|
<CopyToClipboardTextButton description='Copy as cURL' value={() => generateCurlCommand(resource)} />
|
||||||
<CopyToClipboardTextButton description='Copy as Fetch' value={() => generateFetchCall(resource)} />
|
<CopyToClipboardTextButton description='Copy as Fetch' value={() => generateFetchCall(resource)} />
|
||||||
{isJavascript && <CopyToClipboardTextButton description='Copy as Playwright' value={async () => generatePlaywrightRequestCall(resource.request, requestBody?.text)} />}
|
{sdkLanguage === 'javascript' && <CopyToClipboardTextButton description='Copy as Playwright' value={async () => generatePlaywrightRequestCall(resource.request, requestBody?.text)} />}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{requestBody && <div className='network-request-details-header'>Request Body</div>}
|
{requestBody && <div className='network-request-details-header'>Request Body</div>}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import { GridView, type RenderedGridCell } from '@web/components/gridView';
|
||||||
import { SplitView } from '@web/components/splitView';
|
import { SplitView } from '@web/components/splitView';
|
||||||
import type { ContextEntry } from '../types/entries';
|
import type { ContextEntry } from '../types/entries';
|
||||||
import { NetworkFilters, defaultFilterState, type FilterState, type ResourceType } from './networkFilters';
|
import { NetworkFilters, defaultFilterState, type FilterState, type ResourceType } from './networkFilters';
|
||||||
|
import type { Language } from '@isomorphic/locatorGenerators';
|
||||||
|
|
||||||
type NetworkTabModel = {
|
type NetworkTabModel = {
|
||||||
resources: Entry[],
|
resources: Entry[],
|
||||||
|
|
@ -66,7 +67,8 @@ export const NetworkTab: React.FunctionComponent<{
|
||||||
boundaries: Boundaries,
|
boundaries: Boundaries,
|
||||||
networkModel: NetworkTabModel,
|
networkModel: NetworkTabModel,
|
||||||
onEntryHovered?: (entry: Entry | undefined) => void,
|
onEntryHovered?: (entry: Entry | undefined) => void,
|
||||||
}> = ({ boundaries, networkModel, onEntryHovered }) => {
|
sdkLanguage?: Language,
|
||||||
|
}> = ({ boundaries, networkModel, onEntryHovered, sdkLanguage }) => {
|
||||||
const [sorting, setSorting] = React.useState<Sorting | undefined>(undefined);
|
const [sorting, setSorting] = React.useState<Sorting | undefined>(undefined);
|
||||||
const [selectedEntry, setSelectedEntry] = React.useState<RenderedEntry | undefined>(undefined);
|
const [selectedEntry, setSelectedEntry] = React.useState<RenderedEntry | undefined>(undefined);
|
||||||
const [filterState, setFilterState] = React.useState(defaultFilterState);
|
const [filterState, setFilterState] = React.useState(defaultFilterState);
|
||||||
|
|
@ -115,7 +117,7 @@ export const NetworkTab: React.FunctionComponent<{
|
||||||
sidebarIsFirst={true}
|
sidebarIsFirst={true}
|
||||||
orientation='horizontal'
|
orientation='horizontal'
|
||||||
settingName='networkResourceDetails'
|
settingName='networkResourceDetails'
|
||||||
main={<NetworkResourceDetails resource={selectedEntry.resource} onClose={() => setSelectedEntry(undefined)} />}
|
main={<NetworkResourceDetails resource={selectedEntry.resource} onClose={() => setSelectedEntry(undefined)} sdkLanguage={sdkLanguage} />}
|
||||||
sidebar={grid}
|
sidebar={grid}
|
||||||
/>}
|
/>}
|
||||||
</>;
|
</>;
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ const PropertiesView: React.FunctionComponent<{
|
||||||
id: 'network',
|
id: 'network',
|
||||||
title: 'Network',
|
title: 'Network',
|
||||||
count: networkModel.resources.length,
|
count: networkModel.resources.length,
|
||||||
render: () => <NetworkTab boundaries={boundaries} networkModel={networkModel} />
|
render: () => <NetworkTab boundaries={boundaries} networkModel={networkModel} sdkLanguage={sdkLanguage} />
|
||||||
};
|
};
|
||||||
|
|
||||||
const tabs: TabbedPaneTabModel[] = [
|
const tabs: TabbedPaneTabModel[] = [
|
||||||
|
|
|
||||||
|
|
@ -225,7 +225,7 @@ export const Workbench: React.FunctionComponent<{
|
||||||
id: 'network',
|
id: 'network',
|
||||||
title: 'Network',
|
title: 'Network',
|
||||||
count: networkModel.resources.length,
|
count: networkModel.resources.length,
|
||||||
render: () => <NetworkTab boundaries={boundaries} networkModel={networkModel} onEntryHovered={setHighlightedEntry}/>
|
render: () => <NetworkTab boundaries={boundaries} networkModel={networkModel} onEntryHovered={setHighlightedEntry} sdkLanguage={model?.sdkLanguage} />
|
||||||
};
|
};
|
||||||
const attachmentsTab: TabbedPaneTabModel = {
|
const attachmentsTab: TabbedPaneTabModel = {
|
||||||
id: 'attachments',
|
id: 'attachments',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue