mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
test: Add e2e tests for node creator (#4714)
* test: Add basic e2e tests for node creator * add spec to check if all nodes are rendered * revert SearchBar.vue changes * fixed manual key typo Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> * Add custom component tests * Fix wrongly resolved merge conflcit Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
This commit is contained in:
55
cypress/pages/features/node-creator.ts
Normal file
55
cypress/pages/features/node-creator.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { BasePage } from "../base";
|
||||
import { INodeTypeDescription } from '../../packages/workflow';
|
||||
|
||||
export class NodeCreator extends BasePage {
|
||||
url = '/workflow/new';
|
||||
getters = {
|
||||
plusButton: () => cy.getByTestId('node-creator-plus-button'),
|
||||
canvasAddButton: () => cy.getByTestId('canvas-add-button'),
|
||||
searchBar: () => cy.getByTestId('search-bar'),
|
||||
getCreatorItem: (label: string) => this.getters.creatorItem().contains(label).parents('[data-test-id="item-iterator-item"]'),
|
||||
getNthCreatorItem: (n: number) => this.getters.creatorItem().eq(n),
|
||||
nodeCreator: () => cy.getByTestId('node-creator'),
|
||||
nodeCreatorTabs: () => cy.getByTestId('node-creator-type-selector'),
|
||||
selectedTab: () => this.getters.nodeCreatorTabs().find('.is-active'),
|
||||
categorizedItems: () => cy.getByTestId('categorized-items'),
|
||||
creatorItem: () => cy.getByTestId('item-iterator-item'),
|
||||
communityNodeTooltip: () => cy.getByTestId('node-item-community-tooltip'),
|
||||
noResults: () => cy.getByTestId('categorized-no-results'),
|
||||
activeSubcategory: () => cy.getByTestId('categorized-items-subcategory'),
|
||||
expandedCategories: () => this.getters.creatorItem().find('>div').filter('.active').invoke('text'),
|
||||
};
|
||||
actions = {
|
||||
openNodeCreator: () => {
|
||||
this.getters.plusButton().click();
|
||||
this.getters.nodeCreator().should('be.visible')
|
||||
},
|
||||
selectNode: (displayName: string) => {
|
||||
this.getters.getCreatorItem(displayName).click();
|
||||
},
|
||||
selectTab: (tab: string) => {
|
||||
this.getters.nodeCreatorTabs().contains(tab).click();
|
||||
},
|
||||
toggleCategory: (category: string) => {
|
||||
this.getters.getCreatorItem(category).click()
|
||||
},
|
||||
categorizeNodes: (nodes: INodeTypeDescription[]) => {
|
||||
const categorizedNodes = nodes.reduce((acc, node) => {
|
||||
const categories = (node?.codex?.categories || []).map((category: string) => category.trim());
|
||||
|
||||
categories.forEach((category: {[key: string]: INodeTypeDescription[]}) => {
|
||||
// Node creator should show only the latest version of a node
|
||||
const newerVersion = nodes.find((n: INodeTypeDescription) => n.name === node.name && (n.version > node.version || Array.isArray(n.version)));
|
||||
|
||||
if (acc[category] === undefined) {
|
||||
acc[category] = [];
|
||||
}
|
||||
acc[category].push(newerVersion ?? node);
|
||||
});
|
||||
return acc;
|
||||
}, {})
|
||||
|
||||
return categorizedNodes;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user