mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-02 07:01:30 -08:00
* feat(editor): Integrate CodeMirror into expression editor modal (#4563) * ✨ Initial setup * 👕 Fix lint * ⚡ Extract segments * ⚡ Implement var insertion * 👕 Ignore `.d.cts` * ⚡ Refactor to simplify * ✨ Add brace handler * ✨ Fully replace input and output * feat(editor): Adjust resolved expression to match parameter input hint (#4600) * ✨ Initial adjustments * 🐛 Prevent empty decorations * ⚡ Adjust resolved expression to match param input hint * ✏️ Improve comment * 👕 Remove lint rule * ✏️ Fix typo * ✏️ Fix closing brace * ⚡ Clean up `displayableSegments()` * feat(editor): Apply styling to expression editor modal (#4607) 🎨 Apply styling * feat(core): Improve errors in evaluated expression (#4619) * 🐛 Fix env var access for FE * 🔥 Remove excess closing bracket * 🚧 Set up TODO * ✏️ Update copy * ⚡ Deny env vars access to FE * 👕 Remove unneeded lint exception * 📘 Remove unneeded typing * feat(editor): Dynamically delay evaluation resolution (#4625) * ✏️ Update copy * ⚡ Dynamically delay evaluation resolution * 🔥 Remove unneeded computed property * refactor(editor): Pre-review cleanup (#4627) * 🔥 Remove `ExpressionInput` component * 🔥 Remove Quill * ✏️ Rename i18n key * 🎨 Place border on correct element * 🐛 Handle syntax errors * ⚡ Add sample autocompletions * 🐛 Fix auto-extending behavior * feat(editor): Improve escaping behavior (#4641) * 🎨 Hide hint on small screen * ⚡ Improve escaping * refactor(editor): Apply styling feedback to expression editor modal (#4660) * 🎨 Restyle hint * 🎨 Restyle param input hint * 🔥 Remove `e.g.` * ⚡ Tweak delay * 🎨 Restyle output * 🎨 Tweak theme * ✏️ Tweak copy * refactor(editor): Apply feedback 2022.11.22 (#4697) * 🎨 Change background color * ⚡ Focus on mount * ⚡ Account for preexisting braces on injection * 🐛 Fix `$workflow` showing as not saved * ✏️ Tweak copy * 🐛 Fix readonly focus * ⚡ Focus input on paste * ⚡ Sync inputs with modal * ✏️ Tweak copy * refactor(editor): Apply feedback 2022.11.23 (#4705) * ⚡ Allow newlines * ⚡ Set cursor at end of content * ⚡ Do not defocus on paste on Chrome * ⚡ Fix import * 🧪 Add e2e tests * ⚡ Cleanup * ⚡ Add telemetry * 🔥 Remove log * ⚡ Expose error properties * 🧪 Rename test * ⚡ Move `getCurrentWorkflow()` call * ⏪ Revert highlighting removal per feedback * ⚡ Add i18n keys * 🚚 Move computed property to local state * 🎨 Use CSS vars * ⚡ Update `pnpm-lock.yaml` * ⚡ Apply readonly state * ⚡ Use prop * ⚡ Complete fix
66 lines
2.5 KiB
TypeScript
66 lines
2.5 KiB
TypeScript
import { WorkflowPage as WorkflowPageClass } from '../pages/workflow';
|
|
|
|
const WorkflowPage = new WorkflowPageClass();
|
|
|
|
describe('Expression editor modal', () => {
|
|
before(() => {
|
|
cy.task('db:reset');
|
|
cy.skipSetup();
|
|
});
|
|
|
|
beforeEach(() => {
|
|
WorkflowPage.actions.visit();
|
|
WorkflowPage.actions.addInitialNodeToCanvas('Manual Trigger');
|
|
WorkflowPage.actions.addNodeToCanvas('Hacker News');
|
|
WorkflowPage.actions.openNodeNdv('Hacker News');
|
|
WorkflowPage.actions.openExpressionEditor();
|
|
});
|
|
|
|
it('should resolve primitive resolvables', () => {
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('1 + 2');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^3$/);
|
|
WorkflowPage.getters.expressionModalInput().clear();
|
|
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('"ab" + "cd"');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^abcd$/);
|
|
|
|
WorkflowPage.getters.expressionModalInput().clear();
|
|
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('true && false');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^false$/);
|
|
});
|
|
|
|
it('should resolve object resolvables', () => {
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('{{} a: 1');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^\[Object: \{"a":1\}\]$/);
|
|
|
|
WorkflowPage.getters.expressionModalInput().clear();
|
|
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('{{} a: 1 }.a{del}{del}');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^1$/);
|
|
});
|
|
|
|
it('should resolve array resolvables', () => {
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('[1, 2, 3]');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^\[Array: \[1,2,3\]\]$/);
|
|
|
|
WorkflowPage.getters.expressionModalInput().clear();
|
|
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('[1, 2, 3][0]');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^1$/);
|
|
});
|
|
|
|
it('should resolve $parameter[]', () => {
|
|
WorkflowPage.getters.expressionModalInput().type('{{');
|
|
WorkflowPage.getters.expressionModalInput().type('$parameter["operation"]');
|
|
WorkflowPage.getters.expressionModalOutput().contains(/^get$/);
|
|
});
|
|
});
|