From 63f0fef66ff4d4eeefdafbd5b284f71a8f07c4a0 Mon Sep 17 00:00:00 2001 From: Nick Taylor Date: Mon, 12 Jul 2021 10:21:26 -0400 Subject: [PATCH] [15 min fix] Added a retry for logging in a user for the custom Cypress login command (#14209) --- cypress/support/commands.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 614a24c34..1e4087353 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -96,11 +96,25 @@ Cypress.Commands.add('loginUser', ({ email, password }) => { const encodedEmail = encodeURIComponent(email); const encodedPassword = encodeURIComponent(password); - return cy.request( - 'POST', - '/users/sign_in', - `utf8=%E2%9C%93&user%5Bemail%5D=${encodedEmail}&user%5Bpassword%5D=${encodedPassword}&user%5Bremember_me%5D=0&user%5Bremember_me%5D=1&commit=Continue`, - ); + function getLoginRequest() { + return cy.request( + 'POST', + '/users/sign_in', + `utf8=%E2%9C%93&user%5Bemail%5D=${encodedEmail}&user%5Bpassword%5D=${encodedPassword}&user%5Bremember_me%5D=0&user%5Bremember_me%5D=1&commit=Continue`, + ); + } + + return getLoginRequest().then((response) => { + if (response.status === 200) { + return response; + } + + cy.log('Login failed. Attempting one more login.'); + + // If we have a login failure, try one more time. + // This is to combat some flaky tests where the login fails occasionnally. + return getLoginRequest(); + }); }); const toPayload = (isEnabled) => (isEnabled ? '1' : '0');