From 6a5830959f5fb493a4119869b8298d8ed702c84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20G=C3=B3mez=20Morales?= Date: Thu, 12 Dec 2024 14:03:59 +0100 Subject: [PATCH] =?UTF-8?q?perf(editor):=20SchemaView=20performance=20impr?= =?UTF-8?q?ovement=20by=20=E2=89=8890%=20=F0=9F=9A=80=20=20(#12180)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/e2e/14-mapping.cy.ts | 1 - cypress/e2e/5-ndv.cy.ts | 8 +- cypress/pages/ndv.ts | 3 - .../@n8n/api-types/src/frontend-settings.ts | 1 - packages/cli/src/config/schema.ts | 7 - packages/cli/src/services/frontend.service.ts | 1 - packages/editor-ui/src/__tests__/defaults.ts | 1 - .../src/components/ExpressionEditModal.vue | 5 +- packages/editor-ui/src/components/RunData.vue | 7 +- .../src/components/RunDataSchema.test.ts | 304 -- .../src/components/RunDataSchema.vue | 643 ----- .../src/components/RunDataSchemaItem.vue | 333 --- .../src/components/VirtualSchema.test.ts | 2 +- .../__snapshots__/RunDataSchema.test.ts.snap | 2453 ----------------- .../__snapshots__/VirtualSchema.test.ts.snap | 8 +- 15 files changed, 13 insertions(+), 3764 deletions(-) delete mode 100644 packages/editor-ui/src/components/RunDataSchema.test.ts delete mode 100644 packages/editor-ui/src/components/RunDataSchema.vue delete mode 100644 packages/editor-ui/src/components/RunDataSchemaItem.vue delete mode 100644 packages/editor-ui/src/components/__snapshots__/RunDataSchema.test.ts.snap diff --git a/cypress/e2e/14-mapping.cy.ts b/cypress/e2e/14-mapping.cy.ts index 3bbbd0b293459..e19959453f847 100644 --- a/cypress/e2e/14-mapping.cy.ts +++ b/cypress/e2e/14-mapping.cy.ts @@ -185,7 +185,6 @@ describe('Data mapping', () => { workflowPage.actions.openNode('Set1'); ndv.actions.executePrevious(); - ndv.actions.expandSchemaViewNode(SCHEDULE_TRIGGER_NODE_NAME); const dataPill = ndv.getters .inputDataContainer() diff --git a/cypress/e2e/5-ndv.cy.ts b/cypress/e2e/5-ndv.cy.ts index 96b917d4c3d47..9da1338233dbe 100644 --- a/cypress/e2e/5-ndv.cy.ts +++ b/cypress/e2e/5-ndv.cy.ts @@ -77,7 +77,7 @@ describe('NDV', () => { workflowPage.actions.openNode('Switch'); cy.get('.cm-line').realMouseMove(100, 100); - cy.get('.fa-angle-down').click(); + cy.get('.fa-angle-down').first().click(); ndv.getters.backToCanvas().click(); workflowPage.actions.executeWorkflow(); workflowPage.actions.openNode('Merge'); @@ -204,7 +204,7 @@ describe('NDV', () => { .contains(key) .should('be.visible'); }); - getObjectValueItem().find('label').click({ force: true }); + getObjectValueItem().find('.toggle').click({ force: true }); expandedObjectProps.forEach((key) => { ndv.getters .outputPanel() @@ -245,8 +245,8 @@ describe('NDV', () => { ndv.getters.outputPanel().find('[class*=_pagination]').should('not.exist'); ndv.getters .outputPanel() - .find('[data-test-id=run-data-schema-item] [data-test-id=run-data-schema-item]') - .should('have.length', 20); + .find('[data-test-id=run-data-schema-item]') + .should('have.length.above', 10); }); }); diff --git a/cypress/pages/ndv.ts b/cypress/pages/ndv.ts index 516a0a1ea862c..4550da8e2a328 100644 --- a/cypress/pages/ndv.ts +++ b/cypress/pages/ndv.ts @@ -227,9 +227,6 @@ export class NDV extends BasePage { this.getters.inputSelect().find('.el-select').click(); this.getters.inputOption().contains(nodeName).click(); }, - expandSchemaViewNode: (nodeName: string) => { - this.getters.schemaViewNodeName().contains(nodeName).click(); - }, addDefaultPinnedData: () => { this.actions.editPinnedData(); this.actions.savePinnedData(); diff --git a/packages/@n8n/api-types/src/frontend-settings.ts b/packages/@n8n/api-types/src/frontend-settings.ts index 00b87b968eeb9..1fe0fcd85798c 100644 --- a/packages/@n8n/api-types/src/frontend-settings.ts +++ b/packages/@n8n/api-types/src/frontend-settings.ts @@ -172,6 +172,5 @@ export interface FrontendSettings { blockFileAccessToN8nFiles: boolean; }; betaFeatures: FrontendBetaFeatures[]; - virtualSchemaView: boolean; easyAIWorkflowOnboarded: boolean; } diff --git a/packages/cli/src/config/schema.ts b/packages/cli/src/config/schema.ts index 1891d8193d7f0..54fa07e7f5dcb 100644 --- a/packages/cli/src/config/schema.ts +++ b/packages/cli/src/config/schema.ts @@ -405,11 +405,4 @@ export const schema = { doc: 'Set this to 1 to enable the new partial execution logic by default.', }, }, - - virtualSchemaView: { - doc: 'Whether to display the virtualized schema view', - format: Boolean, - default: false, - env: 'N8N_VIRTUAL_SCHEMA_VIEW', - }, }; diff --git a/packages/cli/src/services/frontend.service.ts b/packages/cli/src/services/frontend.service.ts index 535239d5a46bc..0e1a64e0e7d9f 100644 --- a/packages/cli/src/services/frontend.service.ts +++ b/packages/cli/src/services/frontend.service.ts @@ -231,7 +231,6 @@ export class FrontendService { blockFileAccessToN8nFiles: this.securityConfig.blockFileAccessToN8nFiles, }, betaFeatures: this.frontendConfig.betaFeatures, - virtualSchemaView: config.getEnv('virtualSchemaView'), easyAIWorkflowOnboarded: false, }; } diff --git a/packages/editor-ui/src/__tests__/defaults.ts b/packages/editor-ui/src/__tests__/defaults.ts index 61c8213232c05..3771840d6a2dc 100644 --- a/packages/editor-ui/src/__tests__/defaults.ts +++ b/packages/editor-ui/src/__tests__/defaults.ts @@ -126,6 +126,5 @@ export const defaultSettings: FrontendSettings = { enabled: false, }, betaFeatures: [], - virtualSchemaView: false, easyAIWorkflowOnboarded: false, }; diff --git a/packages/editor-ui/src/components/ExpressionEditModal.vue b/packages/editor-ui/src/components/ExpressionEditModal.vue index e1f7309a7165a..07dcee3c3a938 100644 --- a/packages/editor-ui/src/components/ExpressionEditModal.vue +++ b/packages/editor-ui/src/components/ExpressionEditModal.vue @@ -14,7 +14,7 @@ import type { INodeProperties } from 'n8n-workflow'; import { NodeConnectionType } from 'n8n-workflow'; import { outputTheme } from './ExpressionEditorModal/theme'; import ExpressionOutput from './InlineExpressionEditor/ExpressionOutput.vue'; -import RunDataSchema from './RunDataSchema.vue'; +import VirtualSchema from '@/components/VirtualSchema.vue'; import OutputItemSelect from './InlineExpressionEditor/OutputItemSelect.vue'; import { useI18n } from '@/composables/useI18n'; import { useDebounce } from '@/composables/useDebounce'; @@ -167,14 +167,13 @@ const onResizeThrottle = useThrottleFn(onResize, 10); - diff --git a/packages/editor-ui/src/components/RunData.vue b/packages/editor-ui/src/components/RunData.vue index 803bc86a0e6ad..a0d859ec5c13c 100644 --- a/packages/editor-ui/src/components/RunData.vue +++ b/packages/editor-ui/src/components/RunData.vue @@ -46,7 +46,6 @@ import { useExternalHooks } from '@/composables/useExternalHooks'; import { useI18n } from '@/composables/useI18n'; import { useNodeHelpers } from '@/composables/useNodeHelpers'; import { useNodeType } from '@/composables/useNodeType'; -import { useSettingsStore } from '@/stores/settings.store'; import type { PinDataSource, UnpinDataSource } from '@/composables/usePinnedData'; import { usePinnedData } from '@/composables/usePinnedData'; import { useTelemetry } from '@/composables/useTelemetry'; @@ -88,10 +87,8 @@ const LazyRunDataJson = defineAsyncComponent( async () => await import('@/components/RunDataJson.vue'), ); -const LazyRunDataSchema = defineAsyncComponent(async () => - useSettingsStore().settings.virtualSchemaView - ? await import('@/components/VirtualSchema.vue') - : await import('@/components/RunDataSchema.vue'), +const LazyRunDataSchema = defineAsyncComponent( + async () => await import('@/components/VirtualSchema.vue'), ); const LazyRunDataHtml = defineAsyncComponent( async () => await import('@/components/RunDataHtml.vue'), diff --git a/packages/editor-ui/src/components/RunDataSchema.test.ts b/packages/editor-ui/src/components/RunDataSchema.test.ts deleted file mode 100644 index 3cbe68836ff22..0000000000000 --- a/packages/editor-ui/src/components/RunDataSchema.test.ts +++ /dev/null @@ -1,304 +0,0 @@ -import { createComponentRenderer } from '@/__tests__/render'; -import RunDataJsonSchema from '@/components/RunDataSchema.vue'; -import { useWorkflowsStore } from '@/stores/workflows.store'; -import { userEvent } from '@testing-library/user-event'; -import { cleanup, within, waitFor } from '@testing-library/vue'; -import { createPinia, setActivePinia } from 'pinia'; -import { - createTestNode, - defaultNodeDescriptions, - mockNodeTypeDescription, -} from '@/__tests__/mocks'; -import { IF_NODE_TYPE, SET_NODE_TYPE } from '@/constants'; -import { useNodeTypesStore } from '@/stores/nodeTypes.store'; -import { mock } from 'vitest-mock-extended'; -import type { IWorkflowDb } from '@/Interface'; -import { NodeConnectionType, type IDataObject } from 'n8n-workflow'; -import * as nodeHelpers from '@/composables/useNodeHelpers'; - -const mockNode1 = createTestNode({ - name: 'Set1', - type: SET_NODE_TYPE, - typeVersion: 1, - disabled: false, -}); - -const mockNode2 = createTestNode({ - name: 'Set2', - type: SET_NODE_TYPE, - typeVersion: 1, - disabled: false, -}); - -const disabledNode = createTestNode({ - name: 'Disabled Node', - type: SET_NODE_TYPE, - typeVersion: 1, - disabled: true, -}); - -const ifNode = createTestNode({ - name: 'If', - type: IF_NODE_TYPE, - typeVersion: 1, - disabled: false, -}); - -const aiTool = createTestNode({ - name: 'AI Tool', - type: '@n8n/n8n-nodes-langchain.memoryBufferWindow', - typeVersion: 1, - disabled: false, -}); - -async function setupStore() { - const workflow = mock({ - id: '123', - name: 'Test Workflow', - connections: {}, - active: true, - nodes: [mockNode1, mockNode2, disabledNode, ifNode, aiTool], - }); - - const pinia = createPinia(); - setActivePinia(pinia); - - const workflowsStore = useWorkflowsStore(); - const nodeTypesStore = useNodeTypesStore(); - - nodeTypesStore.setNodeTypes([ - ...defaultNodeDescriptions, - mockNodeTypeDescription({ - name: IF_NODE_TYPE, - outputs: [NodeConnectionType.Main, NodeConnectionType.Main], - }), - ]); - workflowsStore.workflow = workflow; - - return pinia; -} - -function mockNodeOutputData(nodeName: string, data: IDataObject[], outputIndex = 0) { - const originalNodeHelpers = nodeHelpers.useNodeHelpers(); - vi.spyOn(nodeHelpers, 'useNodeHelpers').mockImplementation(() => { - return { - ...originalNodeHelpers, - getNodeInputData: vi.fn((node, _, output) => { - if (node.name === nodeName && output === outputIndex) { - return data.map((json) => ({ json })); - } - return []; - }), - }; - }); -} - -describe('RunDataSchema.vue', () => { - let renderComponent: ReturnType; - - beforeEach(async () => { - cleanup(); - renderComponent = createComponentRenderer(RunDataJsonSchema, { - global: { - stubs: ['font-awesome-icon'], - }, - pinia: await setupStore(), - props: { - mappingEnabled: true, - runIndex: 1, - outputIndex: 0, - totalRuns: 2, - paneType: 'input', - connectionType: 'main', - search: '', - nodes: [ - { name: 'Set1', indicies: [], depth: 1 }, - { name: 'Set2', indicies: [], depth: 2 }, - ], - }, - }); - }); - - it('renders schema for empty data', async () => { - const { getAllByTestId } = renderComponent(); - expect(getAllByTestId('run-data-schema-empty').length).toBe(1); - - // Expand second node - await userEvent.click(getAllByTestId('run-data-schema-node-name')[1]); - expect(getAllByTestId('run-data-schema-empty').length).toBe(2); - }); - - it('renders schema for data', async () => { - useWorkflowsStore().pinData({ - node: mockNode1, - data: [ - { json: { name: 'John', age: 22, hobbies: ['surfing', 'traveling'] } }, - { json: { name: 'Joe', age: 33, hobbies: ['skateboarding', 'gaming'] } }, - ], - }); - useWorkflowsStore().pinData({ - node: mockNode2, - data: [ - { json: { name: 'John', age: 22, hobbies: ['surfing', 'traveling'] } }, - { json: { name: 'Joe', age: 33, hobbies: ['skateboarding', 'gaming'] } }, - ], - }); - - const { getAllByTestId } = renderComponent(); - const nodes = getAllByTestId('run-data-schema-node'); - expect(nodes.length).toBe(2); - const firstNodeName = await within(nodes[0]).findByTestId('run-data-schema-node-name'); - const firstNodeItemCount = await within(nodes[0]).findByTestId( - 'run-data-schema-node-item-count', - ); - expect(firstNodeName).toHaveTextContent('Set1'); - expect(firstNodeItemCount).toHaveTextContent('2 items'); - expect(within(nodes[0]).getByTestId('run-data-schema-node-schema')).toMatchSnapshot(); - - const secondNodeName = await within(nodes[1]).findByTestId('run-data-schema-node-name'); - expect(secondNodeName).toHaveTextContent('Set2'); - - // Expand second node - await userEvent.click(secondNodeName); - expect(within(nodes[1]).getByTestId('run-data-schema-node-schema')).toMatchSnapshot(); - }); - - it('renders schema in output pane', async () => { - const { container } = renderComponent({ - props: { - nodes: [], - paneType: 'output', - node: mockNode1, - data: [ - { name: 'John', age: 22, hobbies: ['surfing', 'traveling'] }, - { name: 'Joe', age: 33, hobbies: ['skateboarding', 'gaming'] }, - ], - }, - }); - - expect(container).toMatchSnapshot(); - }); - - it('renders schema with spaces and dots', () => { - useWorkflowsStore().pinData({ - node: mockNode1, - data: [ - { - json: { - 'hello world': [ - { - test: { - 'more to think about': 1, - }, - 'test.how': 'ignore', - }, - ], - }, - }, - ], - }); - - const { container } = renderComponent(); - expect(container).toMatchSnapshot(); - }); - - it('renders no data to show for data empty objects', () => { - useWorkflowsStore().pinData({ - node: mockNode1, - data: [{ json: {} }, { json: {} }], - }); - - const { getAllByTestId } = renderComponent(); - expect(getAllByTestId('run-data-schema-empty').length).toBe(1); - }); - - it('renders disabled nodes correctly', () => { - const { getByTestId } = renderComponent({ - props: { - nodes: [{ name: disabledNode.name, indicies: [], depth: 1 }], - }, - }); - expect(getByTestId('run-data-schema-disabled')).toBeInTheDocument(); - expect(getByTestId('run-data-schema-node-name')).toHaveTextContent( - `${disabledNode.name} (Deactivated)`, - ); - }); - - it('renders schema for correct output branch', async () => { - mockNodeOutputData( - 'If', - [ - { id: 1, name: 'John' }, - { id: 2, name: 'Jane' }, - ], - 1, - ); - const { getByTestId } = renderComponent({ - props: { - nodes: [{ name: 'If', indicies: [1], depth: 2 }], - }, - }); - - await waitFor(() => { - expect(getByTestId('run-data-schema-node-name')).toHaveTextContent('If'); - expect(getByTestId('run-data-schema-node-item-count')).toHaveTextContent('2 items'); - expect(getByTestId('run-data-schema-node-schema')).toMatchSnapshot(); - }); - }); - - it('renders previous nodes schema for AI tools', async () => { - mockNodeOutputData( - 'If', - [ - { id: 1, name: 'John' }, - { id: 2, name: 'Jane' }, - ], - 0, - ); - const { getByTestId } = renderComponent({ - props: { - nodes: [ - { - name: 'If', - indicies: [], // indicies are not set for AI tools - depth: 2, - }, - ], - node: aiTool, - }, - }); - - await waitFor(() => { - expect(getByTestId('run-data-schema-node-name')).toHaveTextContent('If'); - expect(getByTestId('run-data-schema-node-item-count')).toHaveTextContent('2 items'); - expect(getByTestId('run-data-schema-node-schema')).toMatchSnapshot(); - }); - }); - - it('renders its own data for AI tools in debug mode', async () => { - const { getByTestId } = renderComponent({ - props: { - nodes: [], // in debug mode nodes are empty - node: aiTool, - data: [{ output: 'AI tool output' }], - }, - }); - - await waitFor(() => { - expect(getByTestId('run-data-schema-node-schema')).toMatchSnapshot(); - }); - }); - - test.each([[[{ tx: false }, { tx: false }]], [[{ tx: '' }, { tx: '' }]], [[{ tx: [] }]]])( - 'renders schema instead of showing no data for %o', - (data) => { - useWorkflowsStore().pinData({ - node: mockNode1, - data: data.map((item) => ({ json: item })), - }); - - const { queryByTestId } = renderComponent(); - expect(queryByTestId('run-data-schema-empty')).not.toBeInTheDocument(); - }, - ); -}); diff --git a/packages/editor-ui/src/components/RunDataSchema.vue b/packages/editor-ui/src/components/RunDataSchema.vue deleted file mode 100644 index aa1e821de1067..0000000000000 --- a/packages/editor-ui/src/components/RunDataSchema.vue +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - - diff --git a/packages/editor-ui/src/components/RunDataSchemaItem.vue b/packages/editor-ui/src/components/RunDataSchemaItem.vue deleted file mode 100644 index 43751ccb9d580..0000000000000 --- a/packages/editor-ui/src/components/RunDataSchemaItem.vue +++ /dev/null @@ -1,333 +0,0 @@ - - - - - diff --git a/packages/editor-ui/src/components/VirtualSchema.test.ts b/packages/editor-ui/src/components/VirtualSchema.test.ts index 0a000ea24e1a6..f648b1de3c3be 100644 --- a/packages/editor-ui/src/components/VirtualSchema.test.ts +++ b/packages/editor-ui/src/components/VirtualSchema.test.ts @@ -110,7 +110,7 @@ function mockNodeOutputData(nodeName: string, data: IDataObject[], outputIndex = }); } -describe('RunDataSchema.vue', () => { +describe('VirtualSchema.vue', () => { let renderComponent: ReturnType; const DynamicScrollerStub = { diff --git a/packages/editor-ui/src/components/__snapshots__/RunDataSchema.test.ts.snap b/packages/editor-ui/src/components/__snapshots__/RunDataSchema.test.ts.snap deleted file mode 100644 index 5d4d5c4e4dea9..0000000000000 --- a/packages/editor-ui/src/components/__snapshots__/RunDataSchema.test.ts.snap +++ /dev/null @@ -1,2453 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`RunDataSchema.vue > renders its own data for AI tools in debug mode 1`] = ` -
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - output - - - - -
- - - - - - - - - AI tool output - - - - - - -
- - - -
- -
-
-
-
-`; - -exports[`RunDataSchema.vue > renders previous nodes schema for AI tools 1`] = ` -
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - id - - - - -
- - - - - - - - - 1 - - - - - - -
- - - -
-
-
-
- - - - - - - - name - - - - -
- - - - - - - - - John - - - - - - -
- - - -
- -
-
-
-
-
-`; - -exports[`RunDataSchema.vue > renders schema for correct output branch 1`] = ` -
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - id - - - - -
- - - - - - - - - 1 - - - - - - -
- - - -
-
-
-
- - - - - - - - name - - - - -
- - - - - - - - - John - - - - - - -
- - - -
- -
-
-
-
-
-`; - -exports[`RunDataSchema.vue > renders schema for data 1`] = ` -
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - name - - - - -
- - - - - - - - - John - - - - - - -
- - - -
-
-
-
- - - - - - - - age - - - - -
- - - - - - - - - 22 - - - - - - -
- - - -
-
-
-
- - - - - - - - hobbies - - - - -
- -
- - -
-
- -
-
-
- - - - - - - hobbies - - - - - - - - [0] - - - - -
- - - - - - - - - surfing - - - - - - -
- - - -
-
-
-
- - - - - - - hobbies - - - - - - - - [1] - - - - -
- - - - - - - - - traveling - - - - - - -
- - - -
- -
-
-
- -
-
-
-
-
-`; - -exports[`RunDataSchema.vue > renders schema for data 2`] = ` -
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - name - - - - -
- - - - - - - - - John - - - - - - -
- - - -
-
-
-
- - - - - - - - age - - - - -
- - - - - - - - - 22 - - - - - - -
- - - -
-
-
-
- - - - - - - - hobbies - - - - -
- -
- - -
-
- -
-
-
- - - - - - - hobbies - - - - - - - - [0] - - - - -
- - - - - - - - - surfing - - - - - - -
- - - -
-
-
-
- - - - - - - hobbies - - - - - - - - [1] - - - - -
- - - - - - - - - traveling - - - - - - -
- - - -
- -
-
-
- -
-
-
-
-
-`; - -exports[`RunDataSchema.vue > renders schema in output pane 1`] = ` -
-
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - name - - - - -
- - - - - - - - - John - - - - - - -
- - - -
-
-
-
- - - - - - - - age - - - - -
- - - - - - - - - 22 - - - - - - -
- - - -
-
-
-
- - - - - - - - hobbies - - - - -
- -
- - -
-
- -
-
-
- - - - - - - hobbies - - - - - - - - [0] - - - - -
- - - - - - - - - surfing - - - - - - -
- - - -
-
-
-
- - - - - - - hobbies - - - - - - - - [1] - - - - -
- - - - - - - - - traveling - - - - - - -
- - - -
- -
-
-
- -
-
-
-
-
-
-`; - -exports[`RunDataSchema.vue > renders schema with spaces and dots 1`] = ` -
-
- - -
-
-
- -
-
-
-
-
- - -
- - -
- -
-
-
-
- Set1 - -
- -
- - - -
-
- - -
-
-
-
- - -
- - -
-
- -
-
-
- - - - - - - - hello world - - - - -
- -
- - -
-
- -
-
-
- - - - - - - hello world - - - - - - - - [0] - - - - -
- -
- - -
-
- -
-
-
- - - - - - - - test - - - - -
- -
- - -
-
- -
-
-
- - - - - - - - more to think about - - - - -
- - - - - - - - - 1 - - - - - - -
- - - -
- -
-
-
-
-
-
- - - - - - - - test.how - - - - -
- - - - - - - - - ignore - - - - - - -
- - - -
- -
-
-
- -
-
-
- -
-
-
-
-
-
- - - -
-
-
-
-
- -
-
-
-
-
- - -
- - -
- -
-
-
-
- Set2 - -
- -
- - - -
-
- - - - - - - -
-
- -
-
-`; diff --git a/packages/editor-ui/src/components/__snapshots__/VirtualSchema.test.ts.snap b/packages/editor-ui/src/components/__snapshots__/VirtualSchema.test.ts.snap index 7c1fa631396af..d7d666d2bbbf8 100644 --- a/packages/editor-ui/src/components/__snapshots__/VirtualSchema.test.ts.snap +++ b/packages/editor-ui/src/components/__snapshots__/VirtualSchema.test.ts.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`RunDataSchema.vue > renders previous nodes schema for AI tools 1`] = ` +exports[`VirtualSchema.vue > renders previous nodes schema for AI tools 1`] = `
renders previous nodes schema for AI tools 1`] = `
`; -exports[`RunDataSchema.vue > renders schema for correct output branch 1`] = ` +exports[`VirtualSchema.vue > renders schema for correct output branch 1`] = `
renders schema for correct output branch 1`] = `
`; -exports[`RunDataSchema.vue > renders schema in output pane 1`] = ` +exports[`VirtualSchema.vue > renders schema in output pane 1`] = `
renders schema in output pane 1`] = `
`; -exports[`RunDataSchema.vue > renders schema with spaces and dots 1`] = ` +exports[`VirtualSchema.vue > renders schema with spaces and dots 1`] = `