fix(editor): Trial banner does not disappear after sign out (no-changelog) (#6930)
to test in staging use version `PR-6930-ado-990-trial-banner-does-not-disappear-after-sign-out` <img width="875" alt="image" src="https://github.com/n8n-io/n8n/assets/16496553/dfffe60f-bec3-4c48-bd9c-5990c68afa52">
This commit is contained in:
67
cypress/e2e/27-opt-in-trial-banner.cy.ts
Normal file
67
cypress/e2e/27-opt-in-trial-banner.cy.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { BannerStack, MainSidebar, WorkflowPage } from '../pages';
|
||||
import planData from '../fixtures/Plan_data_opt_in_trial.json';
|
||||
import { INSTANCE_OWNER } from '../constants';
|
||||
|
||||
const mainSidebar = new MainSidebar();
|
||||
const bannerStack = new BannerStack();
|
||||
const workflowPage = new WorkflowPage();
|
||||
|
||||
describe('BannerStack', { disableAutoLogin: true }, () => {
|
||||
before(() => {
|
||||
const now = new Date();
|
||||
const fiveDaysFromNow = new Date(now.getTime() + 5 * 24 * 60 * 60 * 1000);
|
||||
planData.expirationDate = fiveDaysFromNow.toJSON();
|
||||
});
|
||||
|
||||
it('should render trial banner for opt-in cloud user', () => {
|
||||
cy.intercept('GET', '/rest/settings', (req) => {
|
||||
req.on('response', (res) => {
|
||||
res.send({
|
||||
data: { ...res.body.data, deployment: { type: 'cloud' }, n8nMetadata: { userId: 1 } },
|
||||
});
|
||||
});
|
||||
}).as('loadSettings');
|
||||
|
||||
cy.intercept('GET', '/rest/admin/cloud-plan', {
|
||||
body: planData,
|
||||
}).as('getPlanData');
|
||||
|
||||
cy.signin({ email: INSTANCE_OWNER.email, password: INSTANCE_OWNER.password });
|
||||
|
||||
cy.visit(workflowPage.url);
|
||||
|
||||
cy.wait('@getPlanData');
|
||||
|
||||
bannerStack.getters.banner().should('be.visible');
|
||||
|
||||
mainSidebar.actions.signout();
|
||||
|
||||
bannerStack.getters.banner().should('not.be.visible');
|
||||
|
||||
cy.signin({ email: INSTANCE_OWNER.email, password: INSTANCE_OWNER.password });
|
||||
|
||||
cy.visit(workflowPage.url);
|
||||
|
||||
bannerStack.getters.banner().should('be.visible');
|
||||
|
||||
mainSidebar.actions.signout();
|
||||
});
|
||||
|
||||
it('should not render opt-in-trial banner for non cloud deployment', () => {
|
||||
cy.intercept('GET', '/rest/settings', (req) => {
|
||||
req.on('response', (res) => {
|
||||
res.send({
|
||||
data: { ...res.body.data, deployment: { type: 'default' } },
|
||||
});
|
||||
});
|
||||
}).as('loadSettings');
|
||||
|
||||
cy.signin({ email: INSTANCE_OWNER.email, password: INSTANCE_OWNER.password });
|
||||
|
||||
cy.visit(workflowPage.url);
|
||||
|
||||
bannerStack.getters.banner().should('not.be.visible');
|
||||
|
||||
mainSidebar.actions.signout();
|
||||
});
|
||||
});
|
||||
29
cypress/fixtures/Plan_data_opt_in_trial.json
Normal file
29
cypress/fixtures/Plan_data_opt_in_trial.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": 200,
|
||||
"planId": 1,
|
||||
"pruneExecutionsInterval": 168,
|
||||
"monthlyExecutionsLimit": 1000,
|
||||
"activeWorkflowsLimit": 20,
|
||||
"credentialsLimit": 100,
|
||||
"supportTier": "community",
|
||||
"displayName": "Trial",
|
||||
"enabledFeatures": ["userManagement", "advancedExecutionFilters", "sharing"],
|
||||
"licenseFeatures": {
|
||||
"feat:sharing": true,
|
||||
"feat:advancedExecutionFilters": true,
|
||||
"quota:users": -1,
|
||||
"quota:maxVariables": -1,
|
||||
"feat:variables": true,
|
||||
"feat:apiDisabled": true
|
||||
},
|
||||
"metadata": {
|
||||
"version": "v1",
|
||||
"group": "trial",
|
||||
"slug": "trial-2",
|
||||
"trial": {
|
||||
"length": 14,
|
||||
"gracePeriod": 3
|
||||
}
|
||||
},
|
||||
"expirationDate": "2023-08-30T15:47:27.611Z"
|
||||
}
|
||||
8
cypress/pages/bannerStack.ts
Normal file
8
cypress/pages/bannerStack.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { BasePage } from './base';
|
||||
|
||||
export class BannerStack extends BasePage {
|
||||
getters = {
|
||||
banner: () => cy.getByTestId('banner-stack'),
|
||||
};
|
||||
actions = {};
|
||||
}
|
||||
@@ -7,3 +7,4 @@ export * from './settings-users';
|
||||
export * from './settings-log-streaming';
|
||||
export * from './sidebar';
|
||||
export * from './ndv';
|
||||
export * from './bannerStack';
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { BasePage } from '../base';
|
||||
import { WorkflowsPage } from '../workflows';
|
||||
|
||||
export class MainSidebar extends BasePage {
|
||||
getters = {
|
||||
@@ -9,7 +10,7 @@ export class MainSidebar extends BasePage {
|
||||
workflows: () => this.getters.menuItem('Workflows'),
|
||||
credentials: () => this.getters.menuItem('Credentials'),
|
||||
executions: () => this.getters.menuItem('Executions'),
|
||||
userMenu: () => cy.getByTestId('main-sidebar-user-menu'),
|
||||
userMenu: () => cy.get('div[class="action-dropdown-container"]'),
|
||||
};
|
||||
actions = {
|
||||
goToSettings: () => {
|
||||
@@ -26,5 +27,15 @@ export class MainSidebar extends BasePage {
|
||||
openUserMenu: () => {
|
||||
this.getters.userMenu().find('[role="button"]').last().click();
|
||||
},
|
||||
openUserMenu: () => {
|
||||
this.getters.userMenu().click();
|
||||
},
|
||||
signout: () => {
|
||||
const workflowsPage = new WorkflowsPage();
|
||||
cy.visit(workflowsPage.url);
|
||||
this.actions.openUserMenu();
|
||||
cy.getByTestId('user-menu-item-logout').click();
|
||||
cy.wrap(Cypress.session.clearAllSavedSessions());
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user