mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-10 06:34:05 -08:00
71 lines
2.6 KiB
TypeScript
71 lines
2.6 KiB
TypeScript
|
import { randFirstName, randLastName } from "@ngneat/falso";
|
||
|
import { DEFAULT_USER_EMAIL, DEFAULT_USER_PASSWORD } from "../constants";
|
||
|
import { WorkflowPage as WorkflowPageClass } from '../pages/workflow';
|
||
|
|
||
|
const NEW_WORKFLOW_NAME = 'Something else';
|
||
|
const MANUAL_TRIGGER_NODE_NAME = 'Manual Trigger';
|
||
|
const SCHEDULE_TRIGGER_NODE_NAME = 'Schedule Trigger';
|
||
|
|
||
|
const username = DEFAULT_USER_EMAIL;
|
||
|
const password = DEFAULT_USER_PASSWORD;
|
||
|
const firstName = randFirstName();
|
||
|
const lastName = randLastName();
|
||
|
const WorkflowPage = new WorkflowPageClass();
|
||
|
|
||
|
describe('Workflow Actions', () => {
|
||
|
beforeEach(() => {
|
||
|
cy.signup(username, firstName, lastName, password);
|
||
|
cy.on('uncaught:exception', (err, runnable) => {
|
||
|
expect(err.message).to.include('Not logged in');
|
||
|
|
||
|
return false;
|
||
|
})
|
||
|
|
||
|
cy.signin(username, password);
|
||
|
|
||
|
WorkflowPage.actions.visit();
|
||
|
});
|
||
|
|
||
|
it('should be able to save on button slick', () => {
|
||
|
WorkflowPage.actions.saveWorkflowOnButtonClick();
|
||
|
// In Element UI, disabled button turn into spans 🤷♂️
|
||
|
WorkflowPage.getters.saveButton().should('match', 'span');
|
||
|
});
|
||
|
|
||
|
it('should save workflow on keyboard shortcut', () => {
|
||
|
WorkflowPage.actions.saveWorkflowUsingKeyboardShortcut();
|
||
|
WorkflowPage.getters.saveButton().should('match', 'span');
|
||
|
});
|
||
|
|
||
|
it('should not be able to activate unsaved workflow', () => {
|
||
|
WorkflowPage.getters.activatorSwitch().find('input').first().should('be.disabled');
|
||
|
});
|
||
|
|
||
|
it('should not be able to activate workflow without trigger node', () => {
|
||
|
// Manual trigger is not enough to activate the workflow
|
||
|
WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME);
|
||
|
WorkflowPage.actions.saveWorkflowOnButtonClick();
|
||
|
WorkflowPage.getters.activatorSwitch().find('input').first().should('be.disabled');
|
||
|
});
|
||
|
|
||
|
it('should be able to activate workflow', () => {
|
||
|
WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME);
|
||
|
WorkflowPage.actions.saveWorkflowOnButtonClick();
|
||
|
WorkflowPage.actions.activateWorkflow();
|
||
|
WorkflowPage.getters.activatorSwitch().should('have.class', 'is-checked');
|
||
|
});
|
||
|
|
||
|
it('should save new workflow after renaming', () => {
|
||
|
WorkflowPage.actions.renameWorkflow(NEW_WORKFLOW_NAME);
|
||
|
WorkflowPage.getters.saveButton().should('match', 'span');
|
||
|
});
|
||
|
|
||
|
it('should rename workflow', () => {
|
||
|
WorkflowPage.actions.addNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME);
|
||
|
WorkflowPage.actions.saveWorkflowOnButtonClick();
|
||
|
WorkflowPage.actions.renameWorkflow(NEW_WORKFLOW_NAME);
|
||
|
WorkflowPage.getters.saveButton().should('match', 'span');
|
||
|
WorkflowPage.getters.workflowNameInput().invoke('attr', 'title').should('eq', NEW_WORKFLOW_NAME);
|
||
|
});
|
||
|
});
|