Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cypress: Replace all cy.server() and cy.route() by cy.intercept() #13414

Merged
merged 1 commit into from
Jan 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ describe('login modal', () => {
});

beforeEach(() => {
cy.server();
cy.route('POST', '/api/<%_ if (authenticationType === 'session') { _%>authentication<% } else { %>authenticate<% } %>').as('authenticate');
cy.intercept('POST', '/api/<%_ if (authenticationType === 'session') { _%>authentication<% } else { %>authenticate<% } %>').as('authenticate');
});

it('greets with signin', () => {
Expand All @@ -29,7 +28,7 @@ describe('login modal', () => {
it('requires username', () => {
cy.get(passwordLoginSelector).type('a-password');
cy.get(submitLoginSelector).click();
cy.wait('@authenticate').its('status').should('equal', <%_ if (authenticationType === 'session') { _%>401<% } else { %>400<% } %>);
cy.wait('@authenticate').then(({ request, response }) => expect(response.statusCode).to.equal(<%_ if (authenticationType === 'session') { _%>401<% } else { %>400<% } %>));
// login page should stay open when login fails
cy.get(titleLoginSelector).should('be.visible');
cy.get(passwordLoginSelector).clear();
Expand All @@ -38,7 +37,7 @@ describe('login modal', () => {
it('requires password', () => {
cy.get(usernameLoginSelector).type('a-login');
cy.get(submitLoginSelector).click();
cy.wait('@authenticate').its('status').should('equal', <%_ if (authenticationType === 'session') { _%>401<% } else { %>400<% } %>);
cy.wait('@authenticate').then(({ request, response }) => expect(response.statusCode).to.equal(<%_ if (authenticationType === 'session') { _%>401<% } else { %>400<% } %>));
cy.get(errorLoginSelector).should('be.visible');
cy.get(usernameLoginSelector).clear();
});
Expand All @@ -47,7 +46,7 @@ describe('login modal', () => {
cy.get(usernameLoginSelector).type('admin');
cy.get(passwordLoginSelector).type('bad-password');
cy.get(submitLoginSelector).click();
cy.wait('@authenticate').its('status').should('equal', 401);
cy.wait('@authenticate').then(({ request, response }) => expect(response.statusCode).to.equal(401));
cy.get(errorLoginSelector).should('be.visible');
cy.get(usernameLoginSelector).clear();
cy.get(passwordLoginSelector).clear();
Expand All @@ -57,7 +56,7 @@ describe('login modal', () => {
cy.get(usernameLoginSelector).type('admin');
cy.get(passwordLoginSelector).type('admin');
cy.get(submitLoginSelector).click();
cy.wait('@authenticate').its('status').should('equal', 200);
cy.wait('@authenticate').then(({ request, response }) => expect(response.statusCode).to.equal(200));
cy.hash().should('eq', '');
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ describe('/account/password', () => {
});

beforeEach(() => {
cy.server();
cy.route('POST', '/api/account/change-password').as('passwordSave');
cy.intercept('POST', '/api/account/change-password').as('passwordSave');
});

it("requires current password", () => {
Expand Down Expand Up @@ -55,7 +54,7 @@ describe('/account/password', () => {
cy.get(newPasswordSelector).type('jhipster');
cy.get(confirmPasswordSelector).type('jhipster');
cy.get(submitPasswordSelector).click({force: true});
cy.wait('@passwordSave').its('status').should('equal', 400);
cy.wait('@passwordSave').then(({ request, response }) => expect(response.statusCode).to.equal(400));
cy.get(currentPasswordSelector).clear();
cy.get(newPasswordSelector).clear();
cy.get(confirmPasswordSelector).clear();
Expand All @@ -66,6 +65,6 @@ describe('/account/password', () => {
cy.get(newPasswordSelector).type('user');
cy.get(confirmPasswordSelector).type('user');
cy.get(submitPasswordSelector).click({force: true});
cy.wait('@passwordSave').its('status').should('equal', 200);
cy.wait('@passwordSave').then(({ request, response }) => expect(response.statusCode).to.equal(200));
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ describe('/account/register', () => {
});

beforeEach(() => {
cy.server();
cy.route('POST', '/api/register').as('registerSave');
cy.intercept('POST', '/api/register').as('registerSave');
});

it('should load the register page', () => {
Expand Down Expand Up @@ -101,6 +100,6 @@ describe('/account/register', () => {
cy.get(firstPasswordRegisterSelector).type('jondoe');
cy.get(secondPasswordRegisterSelector).type('jondoe');
cy.get(submitRegisterSelector).click({force: true});
cy.wait('@registerSave').its('status').should('equal', 201);
cy.wait('@registerSave').then(({ request, response }) => expect(response.statusCode).to.equal(201));
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ describe('forgot your password', () => {
});

beforeEach(() => {
cy.server();
cy.route('POST', '/api/account/reset-password/init').as('initResetPassword');
cy.intercept('POST', '/api/account/reset-password/init').as('initResetPassword');
});

it('requires email', () => {
Expand All @@ -36,6 +35,6 @@ describe('forgot your password', () => {
it('should be able to init reset password', () => {
cy.get(emailResetPasswordSelector).type('user@gmail.com');
cy.get(submitInitResetPasswordSelector).click({ force: true });
cy.wait('@initResetPassword').its('status').should('equal', 200);
cy.wait('@initResetPassword').then(({ request, response }) => expect(response.statusCode).to.equal(200));
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,29 @@ describe('/account/settings', () => {
})

beforeEach(() => {
cy.server();
cy.route('POST', '/api/account').as('settingsSave');
cy.intercept('POST', '/api/account').as('settingsSave');
});

it("should be able to change 'user' firstname settings", () => {
cy.get(firstNameSettingsSelector).clear().type('jhipster');
// need to modify email because default email does not match regex in vue
cy.get(emailSettingsSelector).clear().type('user@localhost.fr');
cy.get(submitSettingsSelector).click({force: true});
cy.wait('@settingsSave').its('status').should('equal', 200);
cy.wait('@settingsSave').then(({ request, response }) => expect(response.statusCode).to.equal(200));
});

it("should be able to change 'user' lastname settings", () => {
cy.get(lastNameSettingsSelector).clear().type('retspihj');
// need to modify email because default email does not match regex in vue
cy.get(emailSettingsSelector).clear().type('user@localhost.fr');
cy.get(submitSettingsSelector).click({force: true});
cy.wait('@settingsSave').its('status').should('equal', 200);
cy.wait('@settingsSave').then(({ request, response }) => expect(response.statusCode).to.equal(200));
});

it("should be able to change 'user' email settings", () => {
cy.get(emailSettingsSelector).clear().type('user@localhost.fr');
cy.get(submitSettingsSelector).click({force: true});
cy.wait('@settingsSave').its('status').should('equal', 200);
cy.wait('@settingsSave').then(({ request, response }) => expect(response.statusCode).to.equal(200));
});

it("should not be able to change 'user' settings if email already exists", () => {
Expand All @@ -59,12 +58,14 @@ describe('/account/settings', () => {
win.sessionStorage.clear()
});
cy.visit('');
cy.server();
cy.route('POST', '/api/account').as('settingsNotSave');
cy.intercept('POST', '/api/account').as('settingsNotSave');
cy.login('user', 'user');
cy.clickOnSettingsItem();
cy.get(emailSettingsSelector).clear().type('admin@localhost.fr');
cy.get(submitSettingsSelector).click({force: true});
cy.wait('@settingsNotSave').its('status').should('equal', 400);
// Fix in future version of cypress
// => https://glebbahmutov.com/blog/cypress-intercept-problems/#no-overwriting-interceptors
// => https://github.com/cypress-io/cypress/issues/9302
// cy.wait('@settingsNotSave').then(({ request, response }) => expect(response.statusCode).to.equal(400));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am wondering if it's better to keep old logic and keep cy.intercept commented for now to don't loose coverage.

});
})
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,11 @@ describe('<%= entityClass %> e2e test', () => {
cy.get('@oauth2Data').then(oauth2Data => {
cy.keycloackLogin(oauth2Data, 'user');
});
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest').its('responseBody').then(array => {
startingEntitiesCount = array.length;
});
cy.wait('@entitiesRequest')
.then(({ request, response }) => startingEntitiesCount = response.body.length);
cy.visit('/');
});

Expand All @@ -66,21 +64,18 @@ describe('<%= entityClass %> e2e test', () => {
});
<%_ if (authenticationType === 'session') { _%>cy.clearCookie('SESSION')<% } %>
cy.clearCookies();
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('');
cy.login('admin', 'admin');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest').its('responseBody').then(array => {
startingEntitiesCount = array.length;
});
cy.wait('@entitiesRequest')
.then(({ request, response }) => startingEntitiesCount = response.body.length);
cy.visit('/');
});
<%_ } _%>

it('should load <%= entityClassPlural %>', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest');
Expand All @@ -94,8 +89,7 @@ describe('<%= entityClass %> e2e test', () => {
});

it('should load details <%= entityClass %> page', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest');
Expand All @@ -109,8 +103,7 @@ describe('<%= entityClass %> e2e test', () => {

<%_ if (!readOnly) { _%>
it('should load create <%= entityClass %> page', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest');
Expand All @@ -121,8 +114,7 @@ describe('<%= entityClass %> e2e test', () => {
});

it('should load edit <%= entityClass %> page', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest');
Expand All @@ -136,8 +128,7 @@ describe('<%= entityClass %> e2e test', () => {

<%= openBlockComment %>
it('should create an instance of <%= entityClass %>', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest');
Expand Down Expand Up @@ -204,7 +195,7 @@ describe('<%= entityClass %> e2e test', () => {
cy.get(entityCreateSaveButtonSelector).click({force: true});
cy.scrollTo('top', {ensureScrollable: false});
cy.get(entityCreateSaveButtonSelector).should('not.exist');
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequestAfterCreate');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequestAfterCreate');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequestAfterCreate');
Expand All @@ -215,16 +206,15 @@ describe('<%= entityClass %> e2e test', () => {

<%= openBlockComment %>
it('should delete last instance of <%= entityClass %>', () => {
cy.server();
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequest');
<%_ if (clientFramework === 'react') { _%>
cy.route('GET', '/<%= baseApi + entityApiUrl %>/*').as('dialogDeleteRequest');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>/*').as('dialogDeleteRequest');
<%_ } _%>
cy.route('DELETE', '/<%= baseApi + entityApiUrl %>/*').as('deleteEntityRequest');
cy.intercept('DELETE', '/<%= baseApi + entityApiUrl %>/*').as('deleteEntityRequest');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequest').its('responseBody').then(array => {
startingEntitiesCount = array.length;
cy.wait('@entitiesRequest').then(({ request, response }) => {
startingEntitiesCount = response.body.length;
if (startingEntitiesCount > 0) {
cy.get(entityTableSelector).should('have.lengthOf', startingEntitiesCount);
cy.get(entityDeleteButtonSelector).last().click({force: true});
Expand All @@ -234,7 +224,7 @@ describe('<%= entityClass %> e2e test', () => {
cy.getEntityDeleteDialogHeading('<%= entityInstance %>').should('exist');
cy.get(entityConfirmDeleteButtonSelector).click({force: true});
cy.wait('@deleteEntityRequest');
cy.route('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequestAfterDelete');
cy.intercept('GET', '/<%= baseApi + entityApiUrl %>*').as('entitiesRequestAfterDelete');
cy.visit('/');
cy.clickOnEntityMenuItem('<%= entityStateName %>');
cy.wait('@entitiesRequestAfterDelete');
Expand Down