-
Notifications
You must be signed in to change notification settings - Fork 7.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
96 changed files
with
2,375 additions
and
557 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
import { WorkflowsPage as WorkflowsPageClass } from '../pages/workflows'; | ||
import { WorkflowPage as WorkflowPageClass } from '../pages/workflow'; | ||
|
||
type SuggestedTemplatesStub = { | ||
sections: SuggestedTemplatesSectionStub[]; | ||
} | ||
|
||
type SuggestedTemplatesSectionStub = { | ||
name: string; | ||
title: string; | ||
description: string; | ||
workflows: Array<Object>; | ||
}; | ||
|
||
const WorkflowsListPage = new WorkflowsPageClass(); | ||
const WorkflowPage = new WorkflowPageClass(); | ||
|
||
let fixtureSections: SuggestedTemplatesStub = { sections: [] };; | ||
|
||
describe('Suggested templates - Should render', () => { | ||
|
||
before(() => { | ||
cy.fixture('Suggested_Templates.json').then((data) => { | ||
fixtureSections = data; | ||
}); | ||
}); | ||
|
||
beforeEach(() => { | ||
localStorage.removeItem('SHOW_N8N_SUGGESTED_TEMPLATES'); | ||
cy.intercept('GET', '/rest/settings', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { ...res.body.data, deployment: { type: 'cloud' } }, | ||
}); | ||
}); | ||
}).as('loadSettings'); | ||
cy.intercept('GET', '/rest/cloud/proxy/templates', { | ||
fixture: 'Suggested_Templates.json', | ||
}); | ||
cy.visit(WorkflowsListPage.url); | ||
cy.wait('@loadSettings'); | ||
}); | ||
|
||
it('should render suggested templates page in empty workflow list', () => { | ||
WorkflowsListPage.getters.suggestedTemplatesPageContainer().should('exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesCards().should('have.length', fixtureSections.sections[0].workflows.length); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionDescription().should('contain', fixtureSections.sections[0].description); | ||
}); | ||
|
||
it('should render suggested templates when there are workflows in the list', () => { | ||
WorkflowsListPage.getters.suggestedTemplatesNewWorkflowButton().click(); | ||
cy.createFixtureWorkflow('Test_workflow_1.json', 'Test Workflow'); | ||
cy.visit(WorkflowsListPage.url); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('exist'); | ||
cy.contains(`Explore ${fixtureSections.sections[0].name.toLocaleLowerCase()} workflow templates`).should('exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesCards().should('have.length', fixtureSections.sections[0].workflows.length); | ||
}); | ||
|
||
it('should enable users to signup for suggested templates templates', () => { | ||
// Test the whole flow | ||
WorkflowsListPage.getters.suggestedTemplatesCards().first().click(); | ||
WorkflowsListPage.getters.suggestedTemplatesPreviewModal().should('exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesUseTemplateButton().click(); | ||
cy.url().should('include', '/workflow/new'); | ||
WorkflowPage.getters.infoToast().should('contain', 'Template coming soon!'); | ||
WorkflowPage.getters.infoToast().contains('Notify me when it\'s available').click(); | ||
WorkflowPage.getters.successToast().should('contain', 'We will contact you via email once this template is released.'); | ||
cy.visit(WorkflowsListPage.url); | ||
// Once users have signed up for a template, suggestions should not be shown again | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('not.exist'); | ||
}); | ||
|
||
}); | ||
|
||
describe('Suggested templates - Should not render', () => { | ||
beforeEach(() => { | ||
localStorage.removeItem('SHOW_N8N_SUGGESTED_TEMPLATES'); | ||
cy.visit(WorkflowsListPage.url); | ||
}); | ||
|
||
it('should not render suggested templates templates if not in cloud deployment', () => { | ||
cy.intercept('GET', '/rest/settings', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { ...res.body.data, deployment: { type: 'notCloud' } }, | ||
}); | ||
}); | ||
}); | ||
WorkflowsListPage.getters.suggestedTemplatesPageContainer().should('not.exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('not.exist'); | ||
}); | ||
|
||
it('should not render suggested templates templates if endpoint throws error', () => { | ||
cy.intercept('GET', '/rest/settings', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { ...res.body.data, deployment: { type: 'cloud' } }, | ||
}); | ||
}); | ||
}); | ||
cy.intercept('GET', '/rest/cloud/proxy/templates', { statusCode: 500 }).as('loadTemplates'); | ||
WorkflowsListPage.getters.suggestedTemplatesPageContainer().should('not.exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('not.exist'); | ||
}); | ||
|
||
it('should not render suggested templates templates if endpoint returns empty list', () => { | ||
cy.intercept('GET', '/rest/settings', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { ...res.body.data, deployment: { type: 'cloud' } }, | ||
}); | ||
}); | ||
}); | ||
cy.intercept('GET', '/rest/cloud/proxy/templates', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { collections: [] }, | ||
}); | ||
}); | ||
}); | ||
WorkflowsListPage.getters.suggestedTemplatesPageContainer().should('not.exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('not.exist'); | ||
}); | ||
|
||
it('should not render suggested templates templates if endpoint returns invalid response', () => { | ||
cy.intercept('GET', '/rest/settings', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { ...res.body.data, deployment: { type: 'cloud' } }, | ||
}); | ||
}); | ||
}); | ||
cy.intercept('GET', '/rest/cloud/proxy/templates', (req) => { | ||
req.on('response', (res) => { | ||
res.send({ | ||
data: { somethingElse: [] }, | ||
}); | ||
}); | ||
}); | ||
WorkflowsListPage.getters.suggestedTemplatesPageContainer().should('not.exist'); | ||
WorkflowsListPage.getters.suggestedTemplatesSectionContainer().should('not.exist'); | ||
}); | ||
}); |
Oops, something went wrong.