mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
chore: Update NDV e2e tests for Canvas V2 (#12214)
This commit is contained in:
parent
73a2aa0c00
commit
d937e5abe8
|
@ -111,6 +111,7 @@ describe('NDV', () => {
|
||||||
cy.get('[class*=hasIssues]').should('have.length', 1);
|
cy.get('[class*=hasIssues]').should('have.length', 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Correctly failing in V2 - node issues are only shows after execution
|
||||||
it('should show all validation errors when opening pasted node', () => {
|
it('should show all validation errors when opening pasted node', () => {
|
||||||
cy.createFixtureWorkflow('Test_workflow_ndv_errors.json', 'Validation errors');
|
cy.createFixtureWorkflow('Test_workflow_ndv_errors.json', 'Validation errors');
|
||||||
workflowPage.getters.canvasNodes().should('have.have.length', 1);
|
workflowPage.getters.canvasNodes().should('have.have.length', 1);
|
||||||
|
@ -213,9 +214,11 @@ describe('NDV', () => {
|
||||||
.should('not.be.visible');
|
.should('not.be.visible');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not display pagination for schema', () => {
|
it('should not display pagination for schema', () => {
|
||||||
setupSchemaWorkflow();
|
setupSchemaWorkflow();
|
||||||
ndv.getters.backToCanvas().click();
|
ndv.getters.backToCanvas().click();
|
||||||
|
workflowPage.actions.deselectAll();
|
||||||
workflowPage.getters.canvasNodeByName('Set').click();
|
workflowPage.getters.canvasNodeByName('Set').click();
|
||||||
workflowPage.actions.addNodeToCanvas(
|
workflowPage.actions.addNodeToCanvas(
|
||||||
'Customer Datastore (n8n training)',
|
'Customer Datastore (n8n training)',
|
||||||
|
@ -407,8 +410,18 @@ describe('NDV', () => {
|
||||||
return cy.get(`[data-node-placement=${position}]`);
|
return cy.get(`[data-node-placement=${position}]`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Correctly failing in V2 - due to floating navigation not updating the selected node
|
||||||
it('should traverse floating nodes with mouse', () => {
|
it('should traverse floating nodes with mouse', () => {
|
||||||
cy.createFixtureWorkflow('Floating_Nodes.json', 'Floating Nodes');
|
cy.createFixtureWorkflow('Floating_Nodes.json', 'Floating Nodes');
|
||||||
|
|
||||||
|
cy.ifCanvasVersion(
|
||||||
|
() => {},
|
||||||
|
() => {
|
||||||
|
// Needed in V2 as all nodes remain selected when clicking on a selected node
|
||||||
|
workflowPage.actions.deselectAll();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
workflowPage.getters.canvasNodes().first().dblclick();
|
workflowPage.getters.canvasNodes().first().dblclick();
|
||||||
getFloatingNodeByPosition('inputMain').should('not.exist');
|
getFloatingNodeByPosition('inputMain').should('not.exist');
|
||||||
getFloatingNodeByPosition('outputMain').should('exist');
|
getFloatingNodeByPosition('outputMain').should('exist');
|
||||||
|
@ -419,6 +432,7 @@ describe('NDV', () => {
|
||||||
getFloatingNodeByPosition('inputMain').should('exist');
|
getFloatingNodeByPosition('inputMain').should('exist');
|
||||||
getFloatingNodeByPosition('outputMain').should('exist');
|
getFloatingNodeByPosition('outputMain').should('exist');
|
||||||
ndv.actions.close();
|
ndv.actions.close();
|
||||||
|
// These two lines are broken in V2
|
||||||
workflowPage.getters.selectedNodes().should('have.length', 1);
|
workflowPage.getters.selectedNodes().should('have.length', 1);
|
||||||
workflowPage.getters
|
workflowPage.getters
|
||||||
.selectedNodes()
|
.selectedNodes()
|
||||||
|
@ -426,10 +440,8 @@ describe('NDV', () => {
|
||||||
.should('contain', `Node ${i + 1}`);
|
.should('contain', `Node ${i + 1}`);
|
||||||
workflowPage.getters.selectedNodes().first().dblclick();
|
workflowPage.getters.selectedNodes().first().dblclick();
|
||||||
});
|
});
|
||||||
|
|
||||||
getFloatingNodeByPosition('outputMain').click({ force: true });
|
getFloatingNodeByPosition('outputMain').click({ force: true });
|
||||||
ndv.getters.nodeNameContainer().should('contain', 'Chain');
|
ndv.getters.nodeNameContainer().should('contain', 'Chain');
|
||||||
|
|
||||||
// Traverse 4 connected node backwards
|
// Traverse 4 connected node backwards
|
||||||
Array.from(Array(4).keys()).forEach((i) => {
|
Array.from(Array(4).keys()).forEach((i) => {
|
||||||
getFloatingNodeByPosition('inputMain').click({ force: true });
|
getFloatingNodeByPosition('inputMain').click({ force: true });
|
||||||
|
@ -453,8 +465,17 @@ describe('NDV', () => {
|
||||||
.should('contain', MANUAL_TRIGGER_NODE_DISPLAY_NAME);
|
.should('contain', MANUAL_TRIGGER_NODE_DISPLAY_NAME);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Correctly failing in V2 - due to floating navigation not updating the selected node
|
||||||
it('should traverse floating nodes with keyboard', () => {
|
it('should traverse floating nodes with keyboard', () => {
|
||||||
cy.createFixtureWorkflow('Floating_Nodes.json', 'Floating Nodes');
|
cy.createFixtureWorkflow('Floating_Nodes.json', 'Floating Nodes');
|
||||||
|
cy.ifCanvasVersion(
|
||||||
|
() => {},
|
||||||
|
() => {
|
||||||
|
// Needed in V2 as all nodes remain selected when clicking on a selected node
|
||||||
|
workflowPage.actions.deselectAll();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
workflowPage.getters.canvasNodes().first().dblclick();
|
workflowPage.getters.canvasNodes().first().dblclick();
|
||||||
getFloatingNodeByPosition('inputMain').should('not.exist');
|
getFloatingNodeByPosition('inputMain').should('not.exist');
|
||||||
getFloatingNodeByPosition('outputMain').should('exist');
|
getFloatingNodeByPosition('outputMain').should('exist');
|
||||||
|
@ -465,6 +486,7 @@ describe('NDV', () => {
|
||||||
getFloatingNodeByPosition('inputMain').should('exist');
|
getFloatingNodeByPosition('inputMain').should('exist');
|
||||||
getFloatingNodeByPosition('outputMain').should('exist');
|
getFloatingNodeByPosition('outputMain').should('exist');
|
||||||
ndv.actions.close();
|
ndv.actions.close();
|
||||||
|
// These two lines are broken in V2
|
||||||
workflowPage.getters.selectedNodes().should('have.length', 1);
|
workflowPage.getters.selectedNodes().should('have.length', 1);
|
||||||
workflowPage.getters
|
workflowPage.getters
|
||||||
.selectedNodes()
|
.selectedNodes()
|
||||||
|
@ -492,6 +514,7 @@ describe('NDV', () => {
|
||||||
getFloatingNodeByPosition('inputSub').should('not.exist');
|
getFloatingNodeByPosition('inputSub').should('not.exist');
|
||||||
getFloatingNodeByPosition('outputSub').should('not.exist');
|
getFloatingNodeByPosition('outputSub').should('not.exist');
|
||||||
ndv.actions.close();
|
ndv.actions.close();
|
||||||
|
// These two lines are broken in V2
|
||||||
workflowPage.getters.selectedNodes().should('have.length', 1);
|
workflowPage.getters.selectedNodes().should('have.length', 1);
|
||||||
workflowPage.getters
|
workflowPage.getters
|
||||||
.selectedNodes()
|
.selectedNodes()
|
||||||
|
@ -717,6 +740,7 @@ describe('NDV', () => {
|
||||||
.should('have.value', 'Error fetching options from Notion');
|
.should('have.value', 'Error fetching options from Notion');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Correctly failing in V2 - NodeCreator is not opened after clicking on the link
|
||||||
it('Should open appropriate node creator after clicking on connection hint link', () => {
|
it('Should open appropriate node creator after clicking on connection hint link', () => {
|
||||||
const nodeCreator = new NodeCreator();
|
const nodeCreator = new NodeCreator();
|
||||||
const hintMapper = {
|
const hintMapper = {
|
||||||
|
@ -734,6 +758,7 @@ describe('NDV', () => {
|
||||||
|
|
||||||
Object.entries(hintMapper).forEach(([node, group]) => {
|
Object.entries(hintMapper).forEach(([node, group]) => {
|
||||||
workflowPage.actions.openNode(node);
|
workflowPage.actions.openNode(node);
|
||||||
|
// This fails to open the NodeCreator
|
||||||
cy.get('[data-action=openSelectiveNodeCreator]').contains('Insert one').click();
|
cy.get('[data-action=openSelectiveNodeCreator]').contains('Insert one').click();
|
||||||
nodeCreator.getters.activeSubcategory().should('contain', group);
|
nodeCreator.getters.activeSubcategory().should('contain', group);
|
||||||
cy.realPress('Escape');
|
cy.realPress('Escape');
|
||||||
|
|
|
@ -333,8 +333,14 @@ export class WorkflowPage extends BasePage {
|
||||||
this.actions.contextMenuAction('select_all');
|
this.actions.contextMenuAction('select_all');
|
||||||
},
|
},
|
||||||
deselectAll: () => {
|
deselectAll: () => {
|
||||||
this.actions.openContextMenu();
|
cy.ifCanvasVersion(
|
||||||
this.actions.contextMenuAction('deselect_all');
|
() => {
|
||||||
|
this.actions.openContextMenu();
|
||||||
|
this.actions.contextMenuAction('deselect_all');
|
||||||
|
},
|
||||||
|
// rightclick doesn't work with vueFlow canvas
|
||||||
|
() => this.getters.nodeViewBackground().click('topLeft'),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
openExpressionEditorModal: () => {
|
openExpressionEditorModal: () => {
|
||||||
cy.contains('Expression').invoke('show').click();
|
cy.contains('Expression').invoke('show').click();
|
||||||
|
|
Loading…
Reference in a new issue