mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
feat: Add credentials E2E test suite and page object (#4596)
* fix: Fix inferred type of X cannot be named error after pnpm update * feat: Change page objects to expose actions and getters. Add credential creation suite
This commit is contained in:
@@ -6,7 +6,7 @@ const password = DEFAULT_USER_PASSWORD;
|
||||
const firstName = randFirstName();
|
||||
const lastName = randLastName();
|
||||
|
||||
describe('Authentication flow', () => {
|
||||
describe('Authentication', () => {
|
||||
it('should sign user up', () => {
|
||||
cy.signup(username, firstName, lastName, password);
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@ const lastName = randLastName();
|
||||
const WorkflowsPage = new WorkflowsPageClass();
|
||||
const WorkflowPage = new WorkflowPageClass();
|
||||
|
||||
describe('Workflows flow', () => {
|
||||
describe('Workflows', () => {
|
||||
beforeEach(() => {
|
||||
cy.signup(username, firstName, lastName, password);
|
||||
|
||||
@@ -26,59 +26,61 @@ describe('Workflows flow', () => {
|
||||
});
|
||||
|
||||
it('should create a new workflow using empty state card', () => {
|
||||
WorkflowsPage.get('newWorkflowButtonCard').should('be.visible');
|
||||
WorkflowsPage.get('newWorkflowButtonCard').click();
|
||||
WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible');
|
||||
WorkflowsPage.getters.newWorkflowButtonCard().click();
|
||||
|
||||
cy.createFixtureWorkflow('Test_workflow_1.json', `Empty State Card Workflow ${uuid()}`);
|
||||
|
||||
WorkflowPage.get('workflowTags').should('contain.text', 'some-tag-1');
|
||||
WorkflowPage.get('workflowTags').should('contain.text', 'some-tag-2');
|
||||
WorkflowPage.getters.workflowTags().should('contain.text', 'some-tag-1');
|
||||
WorkflowPage.getters.workflowTags().should('contain.text', 'some-tag-2');
|
||||
})
|
||||
|
||||
it('should create a new workflow using add workflow button', () => {
|
||||
WorkflowsPage.get('newWorkflowButtonCard').should('not.exist');
|
||||
WorkflowsPage.get('createWorkflowButton').click();
|
||||
WorkflowsPage.getters.newWorkflowButtonCard().should('not.exist');
|
||||
WorkflowsPage.getters.createWorkflowButton().click();
|
||||
|
||||
cy.createFixtureWorkflow('Test_workflow_2.json', `Add Workflow Button Workflow ${uuid()}`);
|
||||
|
||||
WorkflowPage.get('workflowTags').should('contain.text', 'other-tag-1');
|
||||
WorkflowPage.get('workflowTags').should('contain.text', 'other-tag-2');
|
||||
WorkflowPage.getters.workflowTags().should('contain.text', 'other-tag-1');
|
||||
WorkflowPage.getters.workflowTags().should('contain.text', 'other-tag-2');
|
||||
})
|
||||
|
||||
it('should search for a workflow', () => {
|
||||
WorkflowsPage.get('searchBar').type('Empty State Card Workflow');
|
||||
WorkflowsPage.getters.searchBar().type('Empty State Card Workflow');
|
||||
|
||||
WorkflowsPage.get('workflowCards').should('have.length', 1);
|
||||
WorkflowsPage.get('workflowCard', 'Empty State Card Workflow').should('contain.text', 'Empty State Card Workflow');
|
||||
WorkflowsPage.getters.workflowCards().should('have.length', 1);
|
||||
WorkflowsPage.getters.workflowCard('Empty State Card Workflow').should('contain.text', 'Empty State Card Workflow');
|
||||
|
||||
WorkflowsPage.get('searchBar').clear().type('Add Workflow Button Workflow');
|
||||
WorkflowsPage.getters.searchBar().clear().type('Add Workflow Button Workflow');
|
||||
|
||||
WorkflowsPage.get('workflowCards').should('have.length', 1);
|
||||
WorkflowsPage.get('workflowCard', 'Add Workflow Button Workflow').should('contain.text', 'Add Workflow Button Workflow');
|
||||
WorkflowsPage.getters.workflowCards().should('have.length', 1);
|
||||
WorkflowsPage.getters.workflowCard('Add Workflow Button Workflow').should('contain.text', 'Add Workflow Button Workflow');
|
||||
|
||||
WorkflowsPage.getters.searchBar().clear().type('Some non-existent workflow');
|
||||
WorkflowsPage.getters.workflowCards().should('not.exist');
|
||||
|
||||
WorkflowsPage.get('searchBar').clear().type('Some non-existent workflow');
|
||||
WorkflowsPage.get('workflowCards').should('not.exist');
|
||||
cy.contains('No workflows found').should('be.visible');
|
||||
})
|
||||
|
||||
it('should delete all the workflows', () => {
|
||||
WorkflowsPage.get('workflowCards').should('have.length', 2);
|
||||
WorkflowsPage.getters.workflowCards().should('have.length', 2);
|
||||
|
||||
WorkflowsPage.get('workflowCards').each(($el) => {
|
||||
WorkflowsPage.getters.workflowCards().each(($el) => {
|
||||
const workflowName = $el.find('[data-test-id="workflow-card-name"]').text();
|
||||
|
||||
WorkflowsPage.get('workflowCardActions', workflowName).click();
|
||||
WorkflowsPage.get('workflowDeleteButton').click();
|
||||
WorkflowsPage.getters.workflowCardActions(workflowName).click();
|
||||
WorkflowsPage.getters.workflowDeleteButton().click();
|
||||
|
||||
cy.get('button').contains('delete').click();
|
||||
})
|
||||
|
||||
WorkflowsPage.get('newWorkflowButtonCard').should('be.visible');
|
||||
WorkflowsPage.get('newWorkflowTemplateCard').should('be.visible');
|
||||
WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible');
|
||||
WorkflowsPage.getters.newWorkflowTemplateCard().should('be.visible');
|
||||
})
|
||||
|
||||
it('should contain empty state cards', () => {
|
||||
WorkflowsPage.get('newWorkflowButtonCard').should('be.visible');
|
||||
WorkflowsPage.get('newWorkflowTemplateCard').should('be.visible');
|
||||
WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible');
|
||||
WorkflowsPage.getters.newWorkflowTemplateCard().should('be.visible');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
41
cypress/e2e/2-credentials.cy.ts
Normal file
41
cypress/e2e/2-credentials.cy.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { DEFAULT_USER_EMAIL, DEFAULT_USER_PASSWORD } from "../constants";
|
||||
import { randFirstName, randLastName } from "@ngneat/falso";
|
||||
import { CredentialsPage, CredentialsModal } from '../pages';
|
||||
// import { v4 as uuid } from 'uuid';
|
||||
|
||||
const username = DEFAULT_USER_EMAIL;
|
||||
const password = DEFAULT_USER_PASSWORD;
|
||||
const firstName = randFirstName();
|
||||
const lastName = randLastName();
|
||||
const credentialsPage = new CredentialsPage();
|
||||
const credentialsModal = new CredentialsModal();
|
||||
|
||||
describe('Credentials', () => {
|
||||
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);
|
||||
cy.visit(credentialsPage.url);
|
||||
});
|
||||
|
||||
it('should create a new credential using empty state', () => {
|
||||
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
||||
|
||||
credentialsModal.getters.newCredentialModal().should('be.visible');
|
||||
credentialsModal.getters.newCredentialTypeSelect().should('be.visible');
|
||||
credentialsModal.getters.newCredentialTypeOption('Notion API').click();
|
||||
|
||||
credentialsModal.getters.newCredentialTypeButton().click();
|
||||
|
||||
credentialsModal.getters.connectionParameter('API Key').type('1234567890');
|
||||
|
||||
credentialsModal.actions.setName('My awesome Notion account');
|
||||
credentialsModal.actions.save();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user