-
Notifications
You must be signed in to change notification settings - Fork 3.9k
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
fix: Update for fix #38035
fix: Update for fix #38035
Conversation
WalkthroughThe changes in this pull request focus on modifying a test specification in Changes
Possibly related PRs
Suggested labels
Suggested reviewers
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (3)
app/client/cypress/e2e/Regression/ClientSide/BugTests/DS_Bug26941_Spec.ts (3)
Line range hint
17-19
: Replace hardcoded wait with proper assertionsThe
RunAPI
call includes a hardcoded wait time of 2000ms. According to Cypress best practices, we should avoid fixed waits.-apiPage.RunAPI(false, 2000, { +apiPage.RunAPI(false, { expectedPath: "response.body.data.body.data.isExecutionSuccess", expectedRes: false, });
Line range hint
31-37
: Use cy.intercept instead of cy.get(@postExecute)Using cy.get with aliases can be flaky. Consider using cy.intercept for network requests.
-cy.get("@postExecute").then((interception: any) => { +cy.intercept('POST', '**/api/**').as('apiCall'); +cy.wait('@apiCall').then((interception: any) => { debuggerHelper.AssertDownStreamLogError( interception.response.body.data.pluginErrorDetails .downstreamErrorMessage, ); });
Line range hint
39-44
: Combine related assertionsMultiple related assertions should be combined for better test efficiency.
-apiPage.RunAPI(false, 2000, { +apiPage.RunAPI(false, { expectedPath: "response.body.data.body.data.isExecutionSuccess", expectedRes: false, -}); -agHelper.AssertElementAbsence( - debuggerHelper.locators._debuggerDownStreamErrMsg, -); +}).then(() => { + agHelper.AssertElementAbsence( + debuggerHelper.locators._debuggerDownStreamErrMsg, + ); +});
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (1)
app/client/cypress/e2e/Regression/ClientSide/BugTests/DS_Bug26941_Spec.ts
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
app/client/cypress/e2e/Regression/ClientSide/BugTests/DS_Bug26941_Spec.ts (1)
Pattern 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.
🔇 Additional comments (1)
app/client/cypress/e2e/Regression/ClientSide/BugTests/DS_Bug26941_Spec.ts (1)
Line range hint 1-48
: Verify test stability with multiple runs
The test involves API calls and error handling. We should ensure it's stable across multiple runs.
✅ Verification successful
Test appears stable with proper error handling and assertions
The test follows established patterns for API testing in the codebase:
- Uses proper API response validation with
RunAPI
and expected success flags - Implements header manipulation similar to other stable API tests
- Includes appropriate error assertions with
AssertDownStreamLogError
- Contains adequate wait times (2000ms) between API calls
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for test stability by looking for similar tests and their history
# Search for similar API error handling tests
fd -e ts -e js . app/client/cypress/e2e | xargs rg -l "RunAPI.*isExecutionSuccess.*false"
# Look for potential flaky tests with similar patterns
rg "cy\.get\(@postExecute\)" app/client/cypress/e2e
Length of output: 145
Script:
#!/bin/bash
# Let's try a different approach to find similar API tests and error handling patterns
# Search for API test files with error handling
rg -l "RunAPI.*false" app/client/cypress/e2e/Regression/ClientSide
# Look for similar header manipulation tests
rg -l "EnterHeader" app/client/cypress/e2e
# Check the implementation of apiPage.RunAPI to understand expected behavior
ast-grep --pattern 'RunAPI($$$) {
$$$
}'
# Look for other tests using debuggerHelper.AssertDownStreamLogError
rg -l "AssertDownStreamLogError" app/client/cypress/e2e
Length of output: 1587
Script:
#!/bin/bash
# Let's examine the implementation of similar tests to check for stability patterns
# Check the content of ApiError_spec.ts for error handling patterns
rg -A 5 "RunAPI.*false" app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ApiError_spec.ts
# Look at API_Bugs_Spec.js for header validation patterns
rg -A 5 "EnterHeader" app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_Bugs_Spec.js
# Check if there are any retry mechanisms or wait conditions in similar tests
rg "cy\.(wait|intercept)" app/client/cypress/e2e/Regression/ClientSide/BugTests/DS_Bug26941_Spec.ts
# Look for any existing test stability patterns in the test utils
rg "waitFor|retry|timeout" app/client/cypress/support/Objects/ObjectsCore.ts
Length of output: 970
## Description > [!TIP] > _Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team)._ > > _Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR._ Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.IDE" ### 🔍 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/12230287831> > Commit: 11ad63e > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12230287831&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.IDE` > Spec: > <hr>Mon, 09 Dec 2024 07:11:58 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Improved error handling in API tests by refining test logic for invalid header values. - Ensured correct validation of error messages during API calls with modified inputs. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Description
Tip
Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team).
Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.
Fixes #
Issue Number
or
Fixes
Issue URL
Warning
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.
Automation
/ok-to-test tags="@tag.IDE"
🔍 Cypress test results
Tip
🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/12230287831
Commit: 11ad63e
Cypress dashboard.
Tags:
@tag.IDE
Spec:
Mon, 09 Dec 2024 07:11:58 UTC
Communication
Should the DevRel and Marketing teams inform users about this change?
Summary by CodeRabbit