1
1
mirror of https://github.com/n8n-io/n8n.git synced 2024-09-22 02:29:40 +03:00

test(editor): Add e2e tests for inline expression editor (#4936)

🧪 Add tests for inline expression editor
This commit is contained in:
Iván Ovejero 2022-12-15 15:36:28 +01:00 committed by GitHub
parent fe0f982437
commit 4208040495
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 77 additions and 4 deletions

View File

@ -0,0 +1,66 @@
import { WorkflowPage as WorkflowPageClass } from '../pages/workflow';
const WorkflowPage = new WorkflowPageClass();
describe('Inline expression editor', () => {
before(() => {
cy.task('reset');
cy.skipSetup();
});
beforeEach(() => {
WorkflowPage.actions.visit();
WorkflowPage.actions.addInitialNodeToCanvas('Manual Trigger');
WorkflowPage.actions.addNodeToCanvas('Hacker News');
WorkflowPage.actions.openNodeNdv('Hacker News');
WorkflowPage.actions.openInlineExpressionEditor();
});
it('should resolve primitive resolvables', () => {
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('1 + 2');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^3$/);
WorkflowPage.getters.inlineExpressionEditorInput().clear();
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('"ab');
WorkflowPage.getters.inlineExpressionEditorInput().type('{rightArrow}+');
WorkflowPage.getters.inlineExpressionEditorInput().type('"cd');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^abcd$/);
WorkflowPage.getters.inlineExpressionEditorInput().clear();
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('true && false');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^false$/);
});
it('should resolve object resolvables', () => {
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('{{} a: 1');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^\[Object: \{"a":1\}\]$/);
WorkflowPage.getters.inlineExpressionEditorInput().clear();
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('{{} a: 1 }.a{del}{del}');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^1$/);
});
it('should resolve array resolvables', () => {
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('[1, 2, 3');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^\[Array: \[1,2,3\]\]$/);
WorkflowPage.getters.inlineExpressionEditorInput().clear();
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('[1, 2, 3');
WorkflowPage.getters.inlineExpressionEditorInput().type('{rightArrow}[0');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^1$/);
});
it('should resolve $parameter[]', () => {
WorkflowPage.getters.inlineExpressionEditorInput().type('{{');
WorkflowPage.getters.inlineExpressionEditorInput().type('$parameter["operation');
WorkflowPage.getters.inlineExpressionEditorOutput().contains(/^get$/);
});
});

View File

@ -13,7 +13,7 @@ describe('Expression editor modal', () => {
WorkflowPage.actions.addInitialNodeToCanvas('Manual Trigger');
WorkflowPage.actions.addNodeToCanvas('Hacker News');
WorkflowPage.actions.openNodeNdv('Hacker News');
WorkflowPage.actions.openExpressionEditor();
WorkflowPage.actions.openExpressionEditorModal();
});
it('should resolve primitive resolvables', () => {

View File

@ -58,6 +58,9 @@ export class WorkflowPage extends BasePage {
workflowSettingsTimeoutWorkflowSwitch: () => cy.getByTestId('workflow-settings-timeout-workflow'),
workflowSettingsTimeoutForm: () => cy.getByTestId('workflow-settings-timeout-form'),
workflowSettingsSaveButton: () => cy.getByTestId('workflow-settings-save-button').find('button'),
inlineExpressionEditorInput: () => cy.getByTestId('inline-expression-editor-input'),
inlineExpressionEditorOutput: () => cy.getByTestId('inline-expression-editor-output'),
};
actions = {
visit: () => {
@ -79,10 +82,14 @@ export class WorkflowPage extends BasePage {
openNodeNdv: (nodeTypeName: string) => {
this.getters.canvasNodeByName(nodeTypeName).dblclick();
},
openExpressionEditor: () => {
openExpressionEditorModal: () => {
cy.contains('Expression').invoke('show').click();
cy.getByTestId('expander').invoke('show').click();
},
openInlineExpressionEditor: () => {
cy.contains('Expression').invoke('show').click();
this.getters.inlineExpressionEditorInput().click();
},
typeIntoParameterInput: (parameterName: string, content: string) => {
this.getters.ndvParameterInput(parameterName).type(content);
},

View File

@ -1,5 +1,5 @@
<template>
<div ref="root" class="ph-no-capture"></div>
<div ref="root" class="ph-no-capture" data-test-id="inline-expression-editor-input"></div>
</template>
<script lang="ts">

View File

@ -1,5 +1,5 @@
<template>
<div ref="root" class="ph-no-capture"></div>
<div ref="root" class="ph-no-capture" data-test-id="inline-expression-editor-output"></div>
</template>
<script lang="ts">