diff --git a/packages/insomnia/src/common/render.ts b/packages/insomnia/src/common/render.ts index d3aed7997c..4cd6dfd681 100644 --- a/packages/insomnia/src/common/render.ts +++ b/packages/insomnia/src/common/render.ts @@ -576,6 +576,7 @@ export async function getRenderedRequestAndContext( type: renderedRequest.type, url: renderedRequest.url, preRequestScript: renderedRequest.preRequestScript, + postRequestScript: renderedRequest.postRequestScript, }, }; } diff --git a/packages/insomnia/src/models/__tests__/request.test.ts b/packages/insomnia/src/models/__tests__/request.test.ts index 697b8869bb..55e5c71461 100644 --- a/packages/insomnia/src/models/__tests__/request.test.ts +++ b/packages/insomnia/src/models/__tests__/request.test.ts @@ -22,6 +22,7 @@ describe('init()', () => { parameters: [], pathParameters: [], preRequestScript: '', + postRequestScript: '', url: '', settingStoreCookies: true, settingSendCookies: true, @@ -60,6 +61,7 @@ describe('create()', () => { parameters: [], pathParameters: [], preRequestScript: '', + postRequestScript: '', url: '', settingStoreCookies: true, settingSendCookies: true, @@ -394,6 +396,7 @@ describe('migrate()', () => { parameters: [], pathParameters: [], preRequestScript: '', + postRequestScript: '', parentId: null, body: { mimeType: '', diff --git a/packages/insomnia/src/models/request.ts b/packages/insomnia/src/models/request.ts index 3168669b18..454feff665 100644 --- a/packages/insomnia/src/models/request.ts +++ b/packages/insomnia/src/models/request.ts @@ -252,6 +252,7 @@ export interface BaseRequest { method: string; body: RequestBody; preRequestScript: string; + postRequestScript: string; parameters: RequestParameter[]; pathParameters: RequestPathParameter[]; headers: RequestHeader[]; @@ -289,6 +290,7 @@ export function init(): BaseRequest { method: METHOD_GET, body: {}, preRequestScript: '', + postRequestScript: '', parameters: [], headers: [], authentication: {}, diff --git a/packages/insomnia/src/plugins/context/__tests__/data.test.ts b/packages/insomnia/src/plugins/context/__tests__/data.test.ts index bda72d9ecc..6ac3aae669 100644 --- a/packages/insomnia/src/plugins/context/__tests__/data.test.ts +++ b/packages/insomnia/src/plugins/context/__tests__/data.test.ts @@ -197,6 +197,7 @@ describe('app.export.*', () => { parameters: [], pathParameters: [], preRequestScript: '', + postRequestScript: '', parentId: 'wrk_1', settingDisableRenderRequestBody: false, settingEncodeUrl: true, diff --git a/packages/insomnia/src/ui/components/editors/pre-request-script-editor.tsx b/packages/insomnia/src/ui/components/editors/request-script-editor.tsx similarity index 95% rename from packages/insomnia/src/ui/components/editors/pre-request-script-editor.tsx rename to packages/insomnia/src/ui/components/editors/request-script-editor.tsx index c0d50acdc4..ec515287a0 100644 --- a/packages/insomnia/src/ui/components/editors/pre-request-script-editor.tsx +++ b/packages/insomnia/src/ui/components/editors/request-script-editor.tsx @@ -2,8 +2,8 @@ import { Snippet } from 'codemirror'; import { CookieObject, Environment, InsomniaObject, Request as ScriptRequest, RequestInfo, Url, Variables } from 'insomnia-sdk'; import React, { FC, Fragment, useRef } from 'react'; -import { translateHandlersInScript } from '../../../../src/utils/importers/importers/postman'; import { Settings } from '../../../models/settings'; +import { translateHandlersInScript } from '../../../utils/importers/importers/postman'; import { Dropdown, DropdownButton, DropdownItem, DropdownSection, ItemContent } from '../base/dropdown'; import { CodeEditor, CodeEditorHandle } from '../codemirror/code-editor'; @@ -80,7 +80,7 @@ const lintOptions = { // TODO: introduce this functionality for other objects, such as Url, UrlMatchPattern and so on // TODO: introduce function arguments // TODO: provide snippets for environment keys if possible -function getPreRequestScriptSnippets(insomniaObject: InsomniaObject, path: string): Snippet[] { +function getRequestScriptSnippets(insomniaObject: InsomniaObject, path: string): Snippet[] { let snippets: Snippet[] = []; const refs = new Set(); @@ -117,17 +117,17 @@ function getPreRequestScriptSnippets(insomniaObject: InsomniaObject, path: strin }); } else if (Array.isArray(value)) { for (const item of value) { - snippets = snippets.concat(getPreRequestScriptSnippets(item, `${path}.${key}`)); + snippets = snippets.concat(getRequestScriptSnippets(item, `${path}.${key}`)); } } else { - snippets = snippets.concat(getPreRequestScriptSnippets(value, `${path}.${key}`)); + snippets = snippets.concat(getRequestScriptSnippets(value, `${path}.${key}`)); } } return snippets; } -export const PreRequestScriptEditor: FC = ({ +export const RequestScriptEditor: FC = ({ className, defaultValue, onChange, @@ -154,7 +154,7 @@ export const PreRequestScriptEditor: FC = ({ }; // TODO(george): Add more to this object to provide improved autocomplete - const preRequestScriptSnippets = getPreRequestScriptSnippets( + const requestScriptSnippets = getRequestScriptSnippets( new InsomniaObject({ globals: new Environment('globals', {}), iterationData: new Environment('iterationData', {}), @@ -199,8 +199,8 @@ export const PreRequestScriptEditor: FC = ({
= ({ placeholder="..." lintOptions={lintOptions} ref={editorRef} - getAutocompleteSnippets={() => preRequestScriptSnippets} + getAutocompleteSnippets={() => requestScriptSnippets} onPaste={translateHandlersInScript} />
diff --git a/packages/insomnia/src/ui/components/panes/request-pane.tsx b/packages/insomnia/src/ui/components/panes/request-pane.tsx index ce54be5890..2fbd5a08ec 100644 --- a/packages/insomnia/src/ui/components/panes/request-pane.tsx +++ b/packages/insomnia/src/ui/components/panes/request-pane.tsx @@ -20,9 +20,9 @@ import { AuthDropdown } from '../dropdowns/auth-dropdown'; import { ContentTypeDropdown } from '../dropdowns/content-type-dropdown'; import { AuthWrapper } from '../editors/auth/auth-wrapper'; import { BodyEditor } from '../editors/body/body-editor'; -import { PreRequestScriptEditor } from '../editors/pre-request-script-editor'; import { RequestHeadersEditor } from '../editors/request-headers-editor'; import { RequestParametersEditor } from '../editors/request-parameters-editor'; +import { RequestScriptEditor } from '../editors/request-script-editor'; import { ErrorBoundary } from '../error-boundary'; import { Icon } from '../icon'; import { MarkdownPreview } from '../markdown-preview'; @@ -318,7 +318,7 @@ export const RequestPane: FC = ({ key={uniqueKey} errorClassName="tall wide vertically-align font-error pad text-center" > - patchRequest(requestId, { preRequestScript })} @@ -326,6 +326,33 @@ export const RequestPane: FC = ({ /> + + Post-request Script{' '} + {activeRequest.postRequestScript && ( + + + + )} + + } + aria-label={'experimental'} + > + + patchRequest(requestId, { postRequestScript })} + settings={settings} + /> + + extends Comment { queryString?: QueryString[]; url?: string; preRequestScript?: string; + postRequestScript?: string; metaSortKey?: number; }