mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
fix(editor): Fix workflow moving E2E tests (#13396)
Some checks failed
Test Master / install-and-build (push) Waiting to run
Test Master / Unit tests (18.x) (push) Blocked by required conditions
Test Master / Unit tests (20.x) (push) Blocked by required conditions
Test Master / Unit tests (22.4) (push) Blocked by required conditions
Test Master / Lint (push) Blocked by required conditions
Test Master / Notify Slack on failure (push) Blocked by required conditions
Benchmark Docker Image CI / build (push) Has been cancelled
Some checks failed
Test Master / install-and-build (push) Waiting to run
Test Master / Unit tests (18.x) (push) Blocked by required conditions
Test Master / Unit tests (20.x) (push) Blocked by required conditions
Test Master / Unit tests (22.4) (push) Blocked by required conditions
Test Master / Lint (push) Blocked by required conditions
Test Master / Notify Slack on failure (push) Blocked by required conditions
Benchmark Docker Image CI / build (push) Has been cancelled
Co-authored-by: Danny Martini <danny@n8n.io>
This commit is contained in:
parent
ca76ef4bc2
commit
073b05b10c
|
@ -225,10 +225,12 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should move resources between projects', () => {
|
it('should move resources between projects', () => {
|
||||||
|
cy.intercept('GET', /\/rest\/(workflows|credentials).*/).as('getResources');
|
||||||
|
|
||||||
cy.signinAsOwner();
|
cy.signinAsOwner();
|
||||||
cy.visit(workflowsPage.url);
|
cy.visit(workflowsPage.url);
|
||||||
|
|
||||||
// Create a workflow and a credential in the Home project
|
cy.log('Create a workflow and a credential in the Home project');
|
||||||
workflowsPage.getters.workflowCards().should('not.have.length');
|
workflowsPage.getters.workflowCards().should('not.have.length');
|
||||||
workflowsPage.getters.newWorkflowButtonCard().click();
|
workflowsPage.getters.newWorkflowButtonCard().click();
|
||||||
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Home project');
|
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Home project');
|
||||||
|
@ -238,12 +240,12 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
projects.getProjectTabCredentials().should('be.visible').click();
|
projects.getProjectTabCredentials().should('be.visible').click();
|
||||||
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
||||||
projects.createCredential('Credential in Home project');
|
projects.createCredential('Credential in Home project');
|
||||||
|
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
|
||||||
// Create a project and add a credential and a workflow to it
|
cy.log('Create a project and add a credential and a workflow to it');
|
||||||
projects.createProject('Project 1');
|
projects.createProject('Project 1');
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
||||||
projects.createCredential('Credential in Project 1');
|
projects.createCredential('Credential in Project 1');
|
||||||
|
@ -252,12 +254,12 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
projects.getProjectTabWorkflows().click();
|
projects.getProjectTabWorkflows().click();
|
||||||
workflowsPage.getters.newWorkflowButtonCard().click();
|
workflowsPage.getters.newWorkflowButtonCard().click();
|
||||||
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 1');
|
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 1');
|
||||||
|
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
|
||||||
// Create another project and add a credential and a workflow to it
|
cy.log('Create another project and add a credential and a workflow to it');
|
||||||
projects.createProject('Project 2');
|
projects.createProject('Project 2');
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
||||||
projects.createCredential('Credential in Project 2');
|
projects.createCredential('Credential in Project 2');
|
||||||
|
@ -268,7 +270,7 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 2');
|
projects.createWorkflow('Test_workflow_1.json', 'Workflow in Project 2');
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
|
||||||
// Move the workflow Personal from Home to Project 1
|
cy.log('Move the workflow Personal from Home to Project 1');
|
||||||
projects.getHomeButton().click();
|
projects.getHomeButton().click();
|
||||||
workflowsPage.getters
|
workflowsPage.getters
|
||||||
.workflowCards()
|
.workflowCards()
|
||||||
|
@ -291,6 +293,7 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
workflowsPage.getters
|
workflowsPage.getters
|
||||||
.workflowCards()
|
.workflowCards()
|
||||||
|
@ -298,7 +301,7 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.filter(':contains("Personal")')
|
.filter(':contains("Personal")')
|
||||||
.should('not.exist');
|
.should('not.exist');
|
||||||
|
|
||||||
// Move the workflow from Project 1 to Project 2
|
cy.log('Move the workflow from Project 1 to Project 2');
|
||||||
projects.getMenuItems().first().click();
|
projects.getMenuItems().first().click();
|
||||||
workflowsPage.getters.workflowCards().should('have.length', 2);
|
workflowsPage.getters.workflowCards().should('have.length', 2);
|
||||||
workflowsPage.getters.workflowCardActions('Workflow in Home project').click();
|
workflowsPage.getters.workflowCardActions('Workflow in Home project').click();
|
||||||
|
@ -316,13 +319,13 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.filter(':contains("Project 2")')
|
.filter(':contains("Project 2")')
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
||||||
|
clearNotifications();
|
||||||
|
|
||||||
// Move the workflow from Project 2 to a member user
|
cy.log('Move the workflow from Project 2 to a member user');
|
||||||
projects.getMenuItems().last().click();
|
projects.getMenuItems().last().click();
|
||||||
workflowsPage.getters.workflowCards().should('have.length', 2);
|
workflowsPage.getters.workflowCards().should('have.length', 2);
|
||||||
workflowsPage.getters.workflowCardActions('Workflow in Home project').click();
|
workflowsPage.getters.workflowCardActions('Workflow in Home project').click();
|
||||||
workflowsPage.getters.workflowMoveButton().click();
|
workflowsPage.getters.workflowMoveButton().click();
|
||||||
clearNotifications();
|
|
||||||
|
|
||||||
projects
|
projects
|
||||||
.getResourceMoveModal()
|
.getResourceMoveModal()
|
||||||
|
@ -337,9 +340,12 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.click();
|
.click();
|
||||||
|
|
||||||
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
||||||
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
workflowsPage.getters.workflowCards().should('have.length', 1);
|
workflowsPage.getters.workflowCards().should('have.length', 1);
|
||||||
|
|
||||||
// Move the workflow from member user back to Home
|
cy.log('Move the workflow from member user back to Home');
|
||||||
projects.getHomeButton().click();
|
projects.getHomeButton().click();
|
||||||
workflowsPage.getters
|
workflowsPage.getters
|
||||||
.workflowCards()
|
.workflowCards()
|
||||||
|
@ -363,13 +369,15 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
|
|
||||||
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
projects.getResourceMoveModal().contains('button', 'Move workflow').click();
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
workflowsPage.getters
|
workflowsPage.getters
|
||||||
.workflowCards()
|
.workflowCards()
|
||||||
.should('have.length', 3)
|
.should('have.length', 3)
|
||||||
.filter(':contains("Personal")')
|
.filter(':contains("Personal")')
|
||||||
.should('have.length', 1);
|
.should('have.length', 1);
|
||||||
|
|
||||||
// Move the credential from Project 1 to Project 2
|
cy.log('Move the credential from Project 1 to Project 2');
|
||||||
projects.getMenuItems().first().click();
|
projects.getMenuItems().first().click();
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
credentialsPage.getters.credentialCards().should('have.length', 1);
|
credentialsPage.getters.credentialCards().should('have.length', 1);
|
||||||
|
@ -389,9 +397,11 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
credentialsPage.getters.credentialCards().should('not.have.length');
|
credentialsPage.getters.credentialCards().should('not.have.length');
|
||||||
|
|
||||||
// Move the credential from Project 2 to admin user
|
cy.log('Move the credential from Project 2 to admin user');
|
||||||
projects.getMenuItems().last().click();
|
projects.getMenuItems().last().click();
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
credentialsPage.getters.credentialCards().should('have.length', 2);
|
credentialsPage.getters.credentialCards().should('have.length', 2);
|
||||||
|
@ -411,9 +421,12 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.filter(`:contains("${INSTANCE_ADMIN.email}")`)
|
.filter(`:contains("${INSTANCE_ADMIN.email}")`)
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
||||||
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
credentialsPage.getters.credentialCards().should('have.length', 1);
|
credentialsPage.getters.credentialCards().should('have.length', 1);
|
||||||
|
|
||||||
// Move the credential from admin user back to instance owner
|
cy.log('Move the credential from admin user back to instance owner');
|
||||||
projects.getHomeButton().click();
|
projects.getHomeButton().click();
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
credentialsPage.getters.credentialCards().should('have.length', 3);
|
credentialsPage.getters.credentialCards().should('have.length', 3);
|
||||||
|
@ -432,9 +445,10 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.should('have.length', 5)
|
.should('have.length', 5)
|
||||||
.filter(`:contains("${INSTANCE_OWNER.email}")`)
|
.filter(`:contains("${INSTANCE_OWNER.email}")`)
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
|
||||||
|
|
||||||
|
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
||||||
clearNotifications();
|
clearNotifications();
|
||||||
|
cy.wait('@getResources');
|
||||||
|
|
||||||
credentialsPage.getters
|
credentialsPage.getters
|
||||||
.credentialCards()
|
.credentialCards()
|
||||||
|
@ -442,7 +456,7 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.filter(':contains("Personal")')
|
.filter(':contains("Personal")')
|
||||||
.should('have.length', 2);
|
.should('have.length', 2);
|
||||||
|
|
||||||
// Move the credential from admin user back to its original project (Project 1)
|
cy.log('Move the credential from admin user back to its original project (Project 1)');
|
||||||
credentialsPage.getters.credentialCardActions('Credential in Project 1').click();
|
credentialsPage.getters.credentialCardActions('Credential in Project 1').click();
|
||||||
credentialsPage.getters.credentialMoveButton().click();
|
credentialsPage.getters.credentialMoveButton().click();
|
||||||
|
|
||||||
|
@ -458,6 +472,7 @@ describe('Projects', { disableAutoLogin: true }, () => {
|
||||||
.filter(':contains("Project 1")')
|
.filter(':contains("Project 1")')
|
||||||
.click();
|
.click();
|
||||||
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
projects.getResourceMoveModal().contains('button', 'Move credential').click();
|
||||||
|
clearNotifications();
|
||||||
|
|
||||||
projects.getMenuItems().first().click();
|
projects.getMenuItems().first().click();
|
||||||
projects.getProjectTabCredentials().click();
|
projects.getProjectTabCredentials().click();
|
||||||
|
|
|
@ -13,10 +13,12 @@ export const infoToast = () => cy.get('.el-notification:has(.el-notification--in
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
export const clearNotifications = () => {
|
export const clearNotifications = () => {
|
||||||
const buttons = successToast().find('.el-notification__closeBtn');
|
const notificationSelector = '.el-notification:has(.el-notification--success)';
|
||||||
buttons.then(($buttons) => {
|
cy.get('body').then(($body) => {
|
||||||
if ($buttons.length) {
|
if ($body.find(notificationSelector).length) {
|
||||||
buttons.click({ multiple: true });
|
cy.get(notificationSelector)
|
||||||
|
.find('.el-notification__closeBtn')
|
||||||
|
.click({ multiple: true, force: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue