ToolJet/cypress-tests/cypress/e2e/authentication/forgotPassword.cy.js
Ajith KV 61a7e983d7
Fixed platform test cases for release v2.9.0 (#6923)
* Add fixes for failing test cases

* Skip the share app test case
2023-07-05 18:17:00 +05:30

185 lines
7.3 KiB
JavaScript

import { commonSelectors } from "../../constants/selectors/common";
import { commonText } from "../../constants/texts/common";
import { fake } from "Fixtures/fake";
import { addNewUserMW } from "Support/utils/userPermissions";
import { logout } from "Support/utils/common";
describe("Password reset functionality", () => {
const data = {};
data.firstName = fake.firstName;
data.lastName = fake.lastName.replaceAll("[^A-Za-z]", "");
data.email = fake.email.toLowerCase();
let passwordResetLink = "";
before(() => {
cy.appUILogin();
addNewUserMW(data.firstName, data.email);
logout();
});
it("Verify wrong password limit", () => {
for (let i = 0; i < 5; i++) {
cy.clearAndType(commonSelectors.workEmailInputField, data.email);
cy.clearAndType(commonSelectors.passwordInputField, "passw");
cy.get(commonSelectors.loginButton).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
"Invalid credentials"
);
}
cy.clearAndType(commonSelectors.workEmailInputField, data.email);
cy.clearAndType(commonSelectors.passwordInputField, "passw");
cy.get(commonSelectors.loginButton).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
"Maximum password retry limit reached, please reset your password using forgot password option"
);
});
it("Verify forgot password page elements and functionality", () => {
cy.visit("/");
cy.get(commonSelectors.forgotPasswordLink).click();
cy.get(commonSelectors.pageLogo).should("be.visible");
cy.get(commonSelectors.forgotPasswordPageHeader).verifyVisibleElement(
"have.text",
commonText.forgotPasswordPageHeader
);
cy.get(commonSelectors.forgotPasswordPageSubHeader).should(($el) => {
expect($el.contents().first().text().trim()).to.eq(
commonText.newToTooljetText
);
});
cy.get(commonSelectors.createAnAccountLink).verifyVisibleElement(
"have.text",
commonText.createAnAccountLink
);
cy.get(commonSelectors.emailInputLabel).verifyVisibleElement(
"have.text",
commonText.emailAddressLabel
);
cy.get(commonSelectors.emailInputField).should("be.visible");
cy.get(commonSelectors.resetPasswordLinkButton)
.verifyVisibleElement("have.text", commonText.resetPasswordLinkButton)
.and("be.disabled");
cy.get(commonSelectors.enterIcon).should("be.visible");
cy.clearAndType(commonSelectors.emailInputField, data.email);
cy.get(commonSelectors.resetPasswordLinkButton).click();
cy.get("body").then(($title) => {
if (!$title.text().includes("Forgot Password")) {
cy.verifyToastMessage(
commonSelectors.toastMessage,
commonText.passwordResetEmailToast
);
cy.get(commonSelectors.pageLogo).should("be.visible");
cy.get(commonSelectors.emailImage).should("be.visible");
cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement(
"have.text",
commonText.emailPageHeader
);
cy.get(commonSelectors.onboardingPageDescription).verifyVisibleElement(
"have.text",
commonText.resetPasswordEmailDescription(data.email)
);
cy.get(commonSelectors.spamMessage).verifyVisibleElement(
"have.text",
commonText.spamMessage
);
cy.get(commonSelectors.onboardingSeperator).should("be.visible");
cy.get(commonSelectors.onboardingSeperatorText).verifyVisibleElement(
"have.text",
commonText.onboardingSeperatorText
);
cy.get(commonSelectors.backToLoginButton).verifyVisibleElement(
"have.text",
commonText.backToLoginButton
);
}
});
cy.task("updateId", {
dbconfig: Cypress.env("app_db"),
sql: `select forgot_password_token from users where email='${data.email}';`,
}).then((resp) => {
passwordResetLink = `/reset-password/${resp.rows[0].forgot_password_token}`;
});
});
it("Verify reset password page and functionality", () => {
cy.visit(passwordResetLink);
cy.get(commonSelectors.pageLogo).should("be.visible");
cy.get(commonSelectors.passwordResetPageHeader).verifyVisibleElement(
"have.text",
commonText.passwordResetPageHeader
);
cy.get(commonSelectors.newPasswordInputLabel).verifyVisibleElement(
"have.text",
commonText.newPasswordInputLabel
);
cy.get(commonSelectors.newPasswordInputField).should("be.visible");
cy.get(commonSelectors.passwordHelperText)
.eq(0)
.verifyVisibleElement("have.text", commonText.passwordHelperText);
cy.get(commonSelectors.confirmPasswordInputFieldLabel).verifyVisibleElement(
"have.text",
commonText.confirmPasswordInputFieldLabel
);
cy.get(commonSelectors.confirmPasswordInputField).should("be.visible");
cy.get(commonSelectors.passwordHelperText)
.eq(1)
.verifyVisibleElement("have.text", commonText.passwordHelperText);
cy.get(commonSelectors.resetPasswordButton)
.verifyVisibleElement("have.text", commonText.resetPasswordButton)
.and("be.disabled");
cy.get(commonSelectors.enterIcon).should("be.visible");
cy.clearAndType(commonSelectors.newPasswordInputField, "Pass");
cy.get(commonSelectors.resetPasswordButton).should("be.disabled");
cy.get(commonSelectors.newPasswordInputField).clear();
cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass");
cy.get(commonSelectors.resetPasswordButton).should("be.disabled");
cy.clearAndType(commonSelectors.newPasswordInputField, "Pass");
cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass");
cy.get(commonSelectors.resetPasswordButton).should("be.disabled");
cy.clearAndType(commonSelectors.newPasswordInputField, "password1");
cy.clearAndType(commonSelectors.confirmPasswordInputField, "password");
cy.get(commonSelectors.resetPasswordButton).should("be.disabled");
cy.clearAndType(commonSelectors.newPasswordInputField, "Password");
cy.clearAndType(commonSelectors.confirmPasswordInputField, "password");
cy.get(commonSelectors.resetPasswordButton).click();
cy.verifyToastMessage(commonSelectors.toastMessage, "Password don't match");
cy.clearAndType(commonSelectors.newPasswordInputField, "Password");
cy.clearAndType(commonSelectors.confirmPasswordInputField, "Password");
cy.get(commonSelectors.resetPasswordButton).should("be.enabled").click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
commonText.passwordResetSuccessToast
);
cy.get(commonSelectors.pageLogo).should("be.visible");
cy.get(commonSelectors.passwordResetPageHeader).verifyVisibleElement(
"have.text",
commonText.passwordResetSuccessPageHeader
);
cy.get(commonSelectors.resetPasswordPageDescription).verifyVisibleElement(
"have.text",
commonText.resetPasswordPageDescription
);
cy.get(commonSelectors.backToLoginButton).verifyVisibleElement(
"have.text",
commonText.backToLoginButton
);
});
it("Verify user login using new password", () => {
cy.visit("/");
cy.clearAndType(commonSelectors.workEmailInputField, data.email);
cy.clearAndType(commonSelectors.passwordInputField, "Password");
cy.get(commonSelectors.loginButton).click();
cy.get(commonSelectors.workspaceName).should("be.visible");
});
});