test: Address flaky setup e2e (no-changelog) (#6085)

* test: Add /setup intercept for `skipSetup` command (no-changelog)

* Drop all tables for e2e reset, intercept account setup request

* Fix linting issues

* Allow to skip setup account request intercept and linting fixes

* Make sure variables are loaded

* Use PATCH for enabling of e2e features

* Do not exclude migration table from truncation

* Add user sign-up intercept
This commit is contained in:
OlegIvaniv
2023-05-03 14:06:06 +02:00
committed by GitHub
parent 700cc39cbc
commit e88232ede2
6 changed files with 65 additions and 35 deletions

View File

@@ -105,18 +105,22 @@ Cypress.Commands.add('signup', ({ firstName, lastName, password, url }) => {
signupPage.getters.form().within(() => {
cy.url().then((url) => {
cy.intercept('/rest/users/*').as('userSignup')
signupPage.getters.firstName().type(firstName);
signupPage.getters.lastName().type(lastName);
signupPage.getters.password().type(password);
signupPage.getters.submit().click();
cy.wait('@userSignup');
});
});
});
Cypress.Commands.add('setup', ({ email, firstName, lastName, password }) => {
Cypress.Commands.add('setup', ({ email, firstName, lastName, password }, skipIntercept = false) => {
const signupPage = new SignupPage();
cy.intercept('GET', signupPage.url).as('setupPage');
cy.visit(signupPage.url);
cy.wait('@setupPage');
signupPage.getters.form().within(() => {
cy.url().then((url) => {
@@ -125,7 +129,13 @@ Cypress.Commands.add('setup', ({ email, firstName, lastName, password }) => {
signupPage.getters.firstName().type(firstName);
signupPage.getters.lastName().type(lastName);
signupPage.getters.password().type(password);
cy.intercept('POST', '/rest/owner/setup').as('setupRequest');
signupPage.getters.submit().click();
if(!skipIntercept) {
cy.wait('@setupRequest');
}
} else {
cy.log('User already signed up');
}
@@ -168,7 +178,9 @@ Cypress.Commands.add('skipSetup', () => {
const workflowPage = new WorkflowPage();
const Confirmation = new MessageBox();
cy.intercept('GET', signupPage.url).as('setupPage');
cy.visit(signupPage.url);
cy.wait('@setupPage');
signupPage.getters.form().within(() => {
cy.url().then((url) => {
@@ -199,7 +211,11 @@ Cypress.Commands.add('setupOwner', (payload) => {
});
Cypress.Commands.add('enableFeature', (feature) => {
cy.task('enable-feature', feature);
cy.task('set-feature', { feature, enabled: true });
});
Cypress.Commands.add('disableFeature', (feature) => {
cy.task('set-feature', { feature, enabled: false });
});
Cypress.Commands.add('grantBrowserPermissions', (...permissions: string[]) => {

View File

@@ -36,13 +36,14 @@ declare global {
signin(payload: SigninPayload): void;
signout(): void;
signup(payload: SignupPayload): void;
setup(payload: SetupPayload): void;
setup(payload: SetupPayload, skipIntercept?: boolean): void;
setupOwner(payload: SetupPayload): void;
inviteUsers(payload: InviteUsersPayload): void;
interceptREST(method: string, url: string): Chainable<Interception>;
skipSetup(): void;
resetAll(): void;
enableFeature(feature: string): void;
disableFeature(feature: string): void;
waitForLoad(waitForIntercepts?: boolean): void;
grantBrowserPermissions(...permissions: string[]): void;
readClipboard(): Chainable<string>;