diff --git a/cypress/e2e/19-execution.cy.ts b/cypress/e2e/19-execution.cy.ts index 71ed553c58c52..2598b3f0f9a92 100644 --- a/cypress/e2e/19-execution.cy.ts +++ b/cypress/e2e/19-execution.cy.ts @@ -288,4 +288,126 @@ describe('Execution', () => { workflowPage.getters.successToast().contains('Execution deleted'); }); }); + + describe('connections should be colored differently for pinned data', () => { + beforeEach(() => { + cy.createFixtureWorkflow('Schedule_pinned.json', `Schedule pinned ${uuid()}`); + workflowPage.actions.deselectAll(); + workflowPage.getters.zoomToFitButton().click(); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields1') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields5', 'Edit Fields6') + .should('not.have.class', 'success') + .should('not.have.class', 'pinned'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields7', 'Edit Fields9') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields1', 'Edit Fields2') + .should('not.have.class', 'success') + .should('not.have.class', 'pinned'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields2', 'Edit Fields3') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('not.have.class', 'has-run'); + }); + + it('when executing the workflow', () => { + workflowPage.actions.executeWorkflow(); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields1') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields5', 'Edit Fields6') + .should('have.class', 'success') + .should('not.have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields7', 'Edit Fields9') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields1', 'Edit Fields2') + .should('have.class', 'success') + .should('not.have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields2', 'Edit Fields3') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + }); + + it('when executing a node', () => { + workflowPage.actions.executeNode('Edit Fields3'); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Schedule Trigger', 'Edit Fields1') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields5', 'Edit Fields6') + .should('not.have.class', 'success') + .should('not.have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields7', 'Edit Fields9') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields1', 'Edit Fields2') + .should('have.class', 'success') + .should('not.have.class', 'pinned') + .should('not.have.class', 'has-run'); + + workflowPage.getters + .getConnectionBetweenNodes('Edit Fields2', 'Edit Fields3') + .should('have.class', 'success') + .should('have.class', 'pinned') + .should('have.class', 'has-run'); + }); + }); }); diff --git a/cypress/fixtures/Schedule_pinned.json b/cypress/fixtures/Schedule_pinned.json new file mode 100644 index 0000000000000..e27623b6fae61 --- /dev/null +++ b/cypress/fixtures/Schedule_pinned.json @@ -0,0 +1,313 @@ +{ + "name": "Schedule + pinned", + "nodes": [ + { + "parameters": { + "rule": { + "interval": [ + {} + ] + } + }, + "id": "66358c29-b263-43dd-be25-3b068b0a88eb", + "name": "Schedule Trigger", + "type": "n8n-nodes-base.scheduleTrigger", + "typeVersion": 1.1, + "position": [ + 660, + 340 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "6d903354-4e59-4032-81fe-426a5d6ec33c", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 860, + 240 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "d8a1e9cf-81d3-400f-97d4-ad6167e7b236", + "name": "Edit Fields1", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 860, + 440 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "bdc41148-067e-4649-8f21-5707b128d877", + "name": "Edit Fields2", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1080, + 440 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "d5a4337f-a6b3-4b51-9b02-e668593d9ae8", + "name": "Edit Fields3", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1300, + 440 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "fbc23f60-e7f6-4423-9329-33b0e4809a9a", + "name": "Edit Fields4", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1500, + 440 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "eaee47b0-94ec-4137-bfeb-a6c1a2c63f81", + "name": "Edit Fields5", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1080, + 240 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "eabb6308-21e9-4e59-8f74-9220a03c3186", + "name": "Edit Fields6", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1300, + 240 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "8812a45b-5545-4080-aad8-8e9f7b17ecd7", + "name": "Edit Fields7", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1500, + 240 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "d5ea3c5b-0b3e-4514-93e1-9c88563bab5c", + "name": "Edit Fields9", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1700, + 240 + ] + }, + { + "parameters": { + "options": {} + }, + "id": "7af34474-5cd0-40b1-abea-850858e3b495", + "name": "Edit Fields10", + "type": "n8n-nodes-base.set", + "typeVersion": 3.2, + "position": [ + 1700, + 440 + ] + } + ], + "pinData": { + "Schedule Trigger": [ + { + "json": { + "name": "First item", + "code": 1 + } + }, + { + "json": { + "name": "Second item", + "code": 2 + } + } + ], + "Edit Fields7": [ + { + "json": { + "name": "First item", + "code": 1 + } + }, + { + "json": { + "name": "Second item", + "code": 2 + } + } + ], + "Edit Fields2": [ + { + "json": { + "name": "First item", + "code": 1 + } + }, + { + "json": { + "name": "Second item", + "code": 2 + } + } + ] + }, + "connections": { + "Schedule Trigger": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + }, + { + "node": "Edit Fields1", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields1": { + "main": [ + [ + { + "node": "Edit Fields2", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields2": { + "main": [ + [ + { + "node": "Edit Fields3", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields3": { + "main": [ + [ + { + "node": "Edit Fields4", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields5": { + "main": [ + [ + { + "node": "Edit Fields6", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields6": { + "main": [ + [ + { + "node": "Edit Fields7", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields": { + "main": [ + [ + { + "node": "Edit Fields5", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields7": { + "main": [ + [ + { + "node": "Edit Fields9", + "type": "main", + "index": 0 + } + ] + ] + }, + "Edit Fields4": { + "main": [ + [ + { + "node": "Edit Fields10", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1" + }, + "versionId": "9b6c68c0-f94f-45bc-a604-bf97d17a47ac", + "meta": { + "templateCredsSetupCompleted": true, + "instanceId": "8a47b83b4479b11330fdf21ccc96d4a8117035a968612e452b4c87bfd09c16c7" + }, + "id": "nWzcnYUb3AVaZpHG", + "tags": [] +} diff --git a/packages/editor-ui/src/components/Node.vue b/packages/editor-ui/src/components/Node.vue index 6c9be87f15573..5b199e7a6d277 100644 --- a/packages/editor-ui/src/components/Node.vue +++ b/packages/editor-ui/src/components/Node.vue @@ -1170,17 +1170,6 @@ export default defineComponent({ .drop-add-node-label { z-index: 10; } - -.jtk-connector.success:not(.jtk-hover) { - path:not(.jtk-connector-outline) { - stroke: var(--color-success-light); - } - path[jtk-overlay-id='reverse-arrow'], - path[jtk-overlay-id='endpoint-arrow'], - path[jtk-overlay-id='midpoint-arrow'] { - fill: var(--color-success-light); - } -} + +