Skip to content

test: Sign in and Sign up cases#39028

Merged
sagar-qa007 merged 2 commits intoreleasefrom
test/signinsignupcases
Feb 5, 2025
Merged

test: Sign in and Sign up cases#39028
sagar-qa007 merged 2 commits intoreleasefrom
test/signinsignupcases

Conversation

@sagar-qa007
Copy link
Contributor

@sagar-qa007 sagar-qa007 commented Feb 5, 2025

Description

Added new cases

Fixes # https://app.zenhub.com/workspaces/qa-63316faf86bb2e170ed2e46b/issues/gh/appsmithorg/appsmith/39027

Automation

/ok-to-test tags="@tag.SignIn"

🔍 Cypress test results

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/13152773763
Commit: 6a16e3a
Cypress dashboard.
Tags: @tag.SignIn
Spec:


Wed, 05 Feb 2025 09:48:35 UTC

Communication

Should the DevRel and Marketing teams inform users about this change?

  • Yes
  • No

Summary by CodeRabbit

  • New Features

    • Enhanced authentication: Users can now log in using either a username or an email address.
    • Improved sign-up flow for a smoother and more accessible account creation experience.
  • Tests

    • Expanded automation ensuring robust and consistent sign-in and sign-up processes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 5, 2025

Walkthrough

This pull request introduces a new Cypress test file for verifying sign-in and sign-up flows. It adds two automated tests: one for user registration via the sign-up form and one for user authentication via sign-in. In addition, locator files for both login and signup pages are modified to support email input and facilitate element selection, and a new tag (@tag.SignIn) is appended to the Cypress tags for easier test categorization. No changes were made to public APIs.

Changes

File(s) Change Summary
app/client/cypress/e2e/Regression/ClientSide/Login/SignInSignUp_spec.ts Introduces new Cypress tests covering sign-up and sign-in functionalities with form interactions and API logout.
app/client/cypress/locators/LoginPage.json, app/client/cypress/locators/SignupPage.json Updates the login page selector to include email input and adds a new locator for the signup link.
app/client/cypress/tags.js Adds a new tag @tag.SignIn to the exported tags.

Sequence Diagram(s)

sequenceDiagram
    participant T as Test Runner
    participant API as API
    participant App as Application
    participant UI as User Interface

    %% Sign Up Flow
    T->>API: Request logout via API
    T->>UI: Visit home page
    UI-->>T: Display "Forget Password" and sign-up link
    T->>UI: Click sign-up link
    UI-->>T: Redirect to sign-up page
    T->>UI: Enter email and temporary password
    T->>App: Submit sign-up form
    App-->>T: Return consolidated sign-up data
    T->>UI: Verify welcome page and expected text presence
Loading
sequenceDiagram
    participant T as Test Runner
    participant API as API
    participant App as Application
    participant UI as User Interface

    %% Sign In Flow
    T->>API: Request logout via API
    T->>App: Invoke custom login function with email & password
    App-->>T: Return successful login confirmation
    T->>UI: Verify successful sign-in on dashboard
Loading

Possibly related PRs

Suggested labels

ok-to-test

Suggested reviewers

  • ApekshaBhosale
  • NandanAnantharamu

Poem

In the code garden, tests now bloom bright,
Sign-ups and sign-ins taking flight each night.
From API calls to UI’s gentle sway,
Our automation dances in a clever display.
Cheers to robust tests and code done right! 🚀
Happy coding, as our suite shines light!

Tip

🌐 Web search-backed reviews and chat
  • We have enabled web search-based reviews and chat for all users. This feature allows CodeRabbit to access the latest documentation and information on the web.
  • You can disable this feature by setting web_search: false in the knowledge_base settings.
  • Please share any feedback in the Discord discussion.
✨ Finishing Touches
  • 📝 Generate Docstrings (Beta)

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added skip-changelog Adding this label to a PR prevents it from being listed in the changelog Test labels Feb 5, 2025
@sagar-qa007 sagar-qa007 added the ok-to-test Required label for CI label Feb 5, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🔭 Outside diff range comments (1)
app/client/cypress/locators/SignupPage.json (1)

4-4: Use data-testid for button selector

Replace type attribute selector with data-testid.

-    "submitBtn": "button[type='submit']",
+    "submitBtn": "[data-testid='t--submit-button']",
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 44d2b7e and 6a16e3a.

📒 Files selected for processing (4)
  • app/client/cypress/e2e/Regression/ClientSide/Login/SignInSignUp_spec.ts (1 hunks)
  • app/client/cypress/locators/LoginPage.json (1 hunks)
  • app/client/cypress/locators/SignupPage.json (1 hunks)
  • app/client/cypress/tags.js (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`app/client/cypress/**/**.*`: Review the following e2e test ...

app/client/cypress/**/**.*: Review the following e2e test code written using the Cypress test library. Ensure that:

  • Follow best practices for Cypress code and e2e automation.
  • Avoid using cy.wait in code.
  • Avoid using cy.pause in code.
  • Avoid using agHelper.sleep().
  • Use locator variables for locators and do not use plain strings.
  • Use data-* attributes for selectors.
  • Avoid Xpaths, Attributes and CSS path.
  • Avoid selectors like .btn.submit or button[type=submit].
  • Perform logins via API with LoginFromAPI.
  • Perform logout via API with LogOutviaAPI.
  • Perform signup via API with SignupFromAPI.
  • Avoid using it.only.
  • Avoid using after and aftereach in test cases.
  • Use multiple assertions for expect statements.
  • Avoid using strings for assertions.
  • Do not use duplicate filenames even with different paths.
  • Avoid using agHelper.Sleep, this.Sleep in any file in code.
  • app/client/cypress/tags.js
  • app/client/cypress/locators/SignupPage.json
  • app/client/cypress/locators/LoginPage.json
  • app/client/cypress/e2e/Regression/ClientSide/Login/SignInSignUp_spec.ts
⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: client-unit-tests / client-unit-tests
  • GitHub Check: client-lint / client-lint
  • GitHub Check: client-build / client-build
🔇 Additional comments (1)
app/client/cypress/tags.js (1)

57-57: LGTM!

The new tag follows the existing pattern and maintains alphabetical order.

cy.get(loginPage.submitBtn).click();
cy.wait("@getConsolidatedData");
agHelper.AssertURL("/signup-success?");
agHelper.AssertContains("Brand New");
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Avoid using string assertions

Replace direct string assertion with data-testid or constants.

-    agHelper.AssertContains("Brand New");
+    agHelper.AssertElementVisible(welcomePage.welcomeMessage);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
agHelper.AssertContains("Brand New");
agHelper.AssertElementVisible(welcomePage.welcomeMessage);

Comment on lines +10 to +26
it("1. User can sign up to application with form.", () => {
homePage.LogOutviaAPI();
agHelper.VisitNAssert("/");
agHelper.WaitUntilEleAppear(SignupPageLocators.forgetPasswordLink);
agHelper.AssertElementExist(SignupPageLocators.signupLink);
agHelper.GetNClick(SignupPageLocators.signupLink);
agHelper.AssertURL("/user/signup");
cy.get(loginPage.username).type(emailOne);
cy.get(loginPage.password).type(tempPassword, { log: false });
cy.get(loginPage.submitBtn).click();
cy.wait("@getConsolidatedData");
agHelper.AssertURL("/signup-success?");
agHelper.AssertContains("Brand New");
agHelper.GetNClick(welcomePage.proficiencyGroupButton, 0);
agHelper.GetNClick(welcomePage.useCaseGroupButton, 0);
agHelper.ClickButton("Get started");
});
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Use SignupFromAPI instead of form-based signup

According to the coding guidelines, signup should be performed via API using SignupFromAPI.

-  it("1. User can sign up to application with form.", () => {
-    homePage.LogOutviaAPI();
-    agHelper.VisitNAssert("/");
-    agHelper.WaitUntilEleAppear(SignupPageLocators.forgetPasswordLink);
-    agHelper.AssertElementExist(SignupPageLocators.signupLink);
-    agHelper.GetNClick(SignupPageLocators.signupLink);
-    agHelper.AssertURL("/user/signup");
-    cy.get(loginPage.username).type(emailOne);
-    cy.get(loginPage.password).type(tempPassword, { log: false });
-    cy.get(loginPage.submitBtn).click();
-    cy.wait("@getConsolidatedData");
-    agHelper.AssertURL("/signup-success?");
-    agHelper.AssertContains("Brand New");
-    agHelper.GetNClick(welcomePage.proficiencyGroupButton, 0);
-    agHelper.GetNClick(welcomePage.useCaseGroupButton, 0);
-    agHelper.ClickButton("Get started");
+  it("1. User can sign up to application via API.", () => {
+    homePage.SignupFromAPI(emailOne, tempPassword);
+    // Verify post-signup flow
+    agHelper.AssertURL("/signup-success?");
+    agHelper.GetNClick(welcomePage.proficiencyGroupButton, 0);
+    agHelper.GetNClick(welcomePage.useCaseGroupButton, 0);
+    agHelper.ClickButton("Get started");
   });
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
it("1. User can sign up to application with form.", () => {
homePage.LogOutviaAPI();
agHelper.VisitNAssert("/");
agHelper.WaitUntilEleAppear(SignupPageLocators.forgetPasswordLink);
agHelper.AssertElementExist(SignupPageLocators.signupLink);
agHelper.GetNClick(SignupPageLocators.signupLink);
agHelper.AssertURL("/user/signup");
cy.get(loginPage.username).type(emailOne);
cy.get(loginPage.password).type(tempPassword, { log: false });
cy.get(loginPage.submitBtn).click();
cy.wait("@getConsolidatedData");
agHelper.AssertURL("/signup-success?");
agHelper.AssertContains("Brand New");
agHelper.GetNClick(welcomePage.proficiencyGroupButton, 0);
agHelper.GetNClick(welcomePage.useCaseGroupButton, 0);
agHelper.ClickButton("Get started");
});
it("1. User can sign up to application via API.", () => {
homePage.SignupFromAPI(emailOne, tempPassword);
// Verify post-signup flow
agHelper.AssertURL("/signup-success?");
agHelper.GetNClick(welcomePage.proficiencyGroupButton, 0);
agHelper.GetNClick(welcomePage.useCaseGroupButton, 0);
agHelper.ClickButton("Get started");
});

cy.get(loginPage.username).type(emailOne);
cy.get(loginPage.password).type(tempPassword, { log: false });
cy.get(loginPage.submitBtn).click();
cy.wait("@getConsolidatedData");
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove cy.wait and use proper assertions

Replace cy.wait("@getConsolidatedData") with proper assertions to validate the response.

-    cy.wait("@getConsolidatedData");
+    cy.intercept("GET", "/api/v1/users/consolidated-data").as("getConsolidatedData");
+    cy.wait("@getConsolidatedData").then((interception) => {
+      expect(interception.response.statusCode).to.eq(200);
+    });
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
cy.wait("@getConsolidatedData");
cy.intercept("GET", "/api/v1/users/consolidated-data").as("getConsolidatedData");
cy.wait("@getConsolidatedData").then((interception) => {
expect(interception.response.statusCode).to.eq(200);
});

"signupLink":".t--sign-up"
"username": "input[name='username'], input[name='email']",
"password": "input[name='password']",
"submitBtn": "button[type='submit']",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Use data-testid for button selector

Replace type attribute selector with data-testid.

-    "submitBtn": "button[type='submit']",
+    "submitBtn": "[data-testid='t--submit-button']",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"submitBtn": "button[type='submit']",
"submitBtn": "[data-testid='t--submit-button']",

@sagar-qa007
Copy link
Contributor Author

/ci-test-limit-count run_count=20 update_snapshot=false specs_to_run=cypress/e2e/Regression/ClientSide/Login/SignInSignUp_spec.ts

@github-actions
Copy link

github-actions bot commented Feb 5, 2025

@github-actions
Copy link

github-actions bot commented Feb 5, 2025

Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/13153151578.
Cypress dashboard: Click here!
The following are new failures, please fix them before merging the PR:
To know the list of identified flaky tests - Refer here

***** Repeat Run Summary ***** Total Tests with repeat: 40 Total Passed: 40 Total Failed: 0 Total Skipped: 0 *****************************

Copy link
Contributor

@NandanAnantharamu NandanAnantharamu left a comment

Choose a reason for hiding this comment

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

Lgtm

@sagar-qa007 sagar-qa007 merged commit 2b04919 into release Feb 5, 2025
52 checks passed
@sagar-qa007 sagar-qa007 deleted the test/signinsignupcases branch February 5, 2025 09:50
@coderabbitai coderabbitai bot mentioned this pull request Feb 6, 2025
2 tasks
github-actions bot pushed a commit to Zeral-Zhang/appsmith that referenced this pull request Feb 7, 2025
## Description
Added new cases


Fixes #
https://app.zenhub.com/workspaces/qa-63316faf86bb2e170ed2e46b/issues/gh/appsmithorg/appsmith/39027

## Automation

/ok-to-test tags="@tag.SignIn"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/13152773763>
> Commit: 6a16e3a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13152773763&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.SignIn`
> Spec:
> <hr>Wed, 05 Feb 2025 09:48:35 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced authentication: Users can now log in using either a username
or an email address.
- Improved sign-up flow for a smoother and more accessible account
creation experience.

- **Tests**
- Expanded automation ensuring robust and consistent sign-in and sign-up
processes.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@coderabbitai coderabbitai bot mentioned this pull request Mar 26, 2025
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Required label for CI skip-changelog Adding this label to a PR prevents it from being listed in the changelog Test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants