Skip to content

Conversation

@vsvamsi1
Copy link
Contributor

@vsvamsi1 vsvamsi1 commented Nov 5, 2025

Description

Added cypress test cases to validate page slug and application slug persistence flows. We are also validating the deployed application to ascertain if the static url work after being enabled and routes deleted after it has being disabled.

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

🔍 Cypress test results

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/19159763732
Commit: c6771d6
Cypress dashboard.
Tags: @tag.Settings
Spec:


Fri, 07 Nov 2025 06:29:12 UTC

Communication

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

  • Yes
  • No

Summary by CodeRabbit

  • New Features

    • Static URL is enabled by default: apps and pages get auto-generated, editable slugs with live validation, URL preview, persistence across reloads, and deploy-time routing.
  • Tests

    • Added end-to-end coverage for slug generation, editing, validation, persistence, cancellation, disable/reenable flows, and deployed-route behavior.

@vsvamsi1 vsvamsi1 self-assigned this Nov 5, 2025
@vsvamsi1 vsvamsi1 added the ok-to-test Required label for CI label Nov 5, 2025
@vsvamsi1 vsvamsi1 requested a review from ashit-rath November 5, 2025 12:43
@vsvamsi1 vsvamsi1 changed the title test cases for static url flow chore: test cases for static url flow Nov 5, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 5, 2025

Walkthrough

Adds static URL test support: enables feature flag, registers Cypress intercepts for static-url APIs, introduces end-to-end tests for app/page slug generation and persistence, adds locators for static URL UI, and adds a test-id span in PageSettings.

Changes

Cohort / File(s) Summary
Feature Flag
app/client/cypress/support/Objects/FeatureFlags.ts
Added release_static_url_enabled: true to defaultFlags.
Cypress Commands (intercepts)
app/client/cypress/support/commands.js
Registered intercepts/aliases for static-url APIs: GET /api/v1/applications/*/static-url/suggest-app-slug, PATCH /api/v1/applications/*/static-url, GET /api/v1/applications/*/static-url/*, GET /api/v1/pages/*/static-url/verify/*, PATCH /api/v1/pages/static-url, DELETE /api/v1/applications/*/static-url.
E2E Test: App Slug Persistence
app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
New test suite (5 tests) covering app-slug auto-generation, edit/validation, persist via confirm modal, cancel behavior, and delete/regenerate on disable/re-enable.
E2E Test: Page Slug Persistence
app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
New comprehensive suite validating page-slug generation/persistence, duplicate handling, deploy-time route verification, pre/post-static route behavior, and disable flow.
Test Locators
app/client/cypress/locators/AdminsSettings.js
Added locators: pageRoute, generalSettingsAppName, generalSettingsStaticUrl, generalSettingsStaticAppSlug, staticUrlConfirmationConfirm, staticUrlConfirmationModal, staticUrlConfirmationCancel, pageSettingsName, pageSettingsStaticPageSlug.
UI Test ID
app/client/src/pages/.../PageSettings.tsx
Replaced fragment wrapper with <span data-testid="t--page-route"> around pathPreview.splitRelativePath.

Sequence Diagram(s)

sequenceDiagram
    participant Test
    participant UI as General Settings UI
    participant API
    participant Store as Backend

    Test->>UI: Toggle Static URL ON
    UI->>API: GET /api/v1/applications/*/static-url/suggest-app-slug
    API-->>UI: suggested slug
    UI->>Test: show slug input

    Test->>UI: Edit slug
    UI->>API: GET /api/v1/applications/*/static-url/* (validate)
    API-->>UI: availability
    Test->>UI: Confirm
    UI->>API: PATCH /api/v1/applications/*/static-url
    API->>Store: persist slug
    API-->>UI: success
    Test->>UI: Reload -> UI fetch persisted slug
Loading
sequenceDiagram
    participant Test
    participant UI as General Settings UI
    participant API
    participant Store as Backend

    Test->>UI: Toggle Static URL OFF
    UI->>Test: show confirmation modal
    Test->>UI: Confirm delete
    UI->>API: DELETE /api/v1/applications/*/static-url
    API->>Store: remove slug
    API-->>UI: success

    Test->>UI: Toggle Static URL ON
    UI->>API: GET /api/v1/applications/*/static-url/suggest-app-slug
    API-->>UI: new suggested slug
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Focus review on:
    • correctness and duplication of intercept registrations in commands.js.
    • network route patterns/aliases matching backend API contract.
    • E2E timing, waits, and reload/deploy assertions (flakiness risk).
    • locator names and the new data-testid in PageSettings matching tests.

Poem

Tiny slugs in toggles wake,
Tests ensure no route will break,
Modals guard what changes mean,
Suggestions born from app-name sheen,
CI hums while routes find their break. 🐛✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description check ⚠️ Warning PR description is incomplete. Missing issue reference, issue link validation, and detailed context/motivation for the changes. Add valid issue reference (Fixes #{IssueNumber} or Fixes {IssueURL}), provide detailed motivation, list dependencies, and include relevant documentation links.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: adding test cases for the static URL flow, which aligns with all file additions in the changeset.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch testCases

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added the skip-changelog Adding this label to a PR prevents it from being listed in the changelog label Nov 5, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6a590b6 and fce138f.

📒 Files selected for processing (4)
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts (1 hunks)
  • app/client/cypress/support/Objects/FeatureFlags.ts (1 hunks)
  • app/client/cypress/support/commands.js (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
app/client/cypress/**/**.*

⚙️ CodeRabbit configuration file

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.

Files:

  • app/client/cypress/support/commands.js
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/support/Objects/FeatureFlags.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
🧠 Learnings (15)
📓 Common learnings
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-10-08T15:32:39.374Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-10-08T15:32:34.115Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-07-24T08:29:41.208Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_spec.js:44-47
Timestamp: 2024-11-13T09:07:54.931Z
Learning: When reviewing code in `app/client/cypress/**` paths, ensure that suggestions are appropriate for test code and not for `src` code. Avoid applying source code checks to test code unless relevant.
📚 Learning: 2025-10-30T07:15:20.287Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/utils/helpers.tsx:1124-1136
Timestamp: 2025-10-30T07:15:20.287Z
Learning: In app/client/src/utils/helpers.tsx, within the getUpdateRouteForSlugPath function, the pageSlug parameter extracted from the route includes the trailing hyphen (e.g., "home-page-" not "home-page"). Additionally, when the static slug conversion branch is executed, params.basePageId is guaranteed to be defined because the code path requires successful page data fetch from the server as a precondition.

Applied to files:

  • app/client/cypress/support/commands.js
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-11-13T09:07:54.931Z
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_spec.js:44-47
Timestamp: 2024-11-13T09:07:54.931Z
Learning: When reviewing code in `app/client/cypress/**` paths, ensure that suggestions are appropriate for test code and not for `src` code. Avoid applying source code checks to test code unless relevant.

Applied to files:

  • app/client/cypress/support/commands.js
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2025-10-28T03:30:58.299Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/sagas/InitSagas.ts:260-271
Timestamp: 2025-10-28T03:30:58.299Z
Learning: In app/client/src/sagas/InitSagas.ts, when constructing consolidatedApiParams for static page URLs, the code intentionally reuses applicationId and defaultPageId fields to pass staticApplicationSlug and staticPageSlug values respectively. This is by design, even though ConsolidatedApiParams type has dedicated staticApplicationSlug and staticPageSlug fields.

Applied to files:

  • app/client/cypress/support/commands.js
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-10-08T15:32:39.374Z
Learnt from: sagar-qa007
Repo: appsmithorg/appsmith PR: 35412
File: app/client/cypress/e2e/Regression/ClientSide/OneClickBinding/TableWidget/mysql_spec.ts:99-99
Timestamp: 2024-10-08T15:32:39.374Z
Learning: In Cypress tests within the `app/client/cypress` directory, avoid using `agHelper.Sleep`, `this.Sleep`, and other related sleep functions to prevent non-deterministic behaviors and ensure tests are more reliable and maintainable. Instead, use Cypress methods like `cy.get()`, `cy.contains()`, and `cy.intercept()` to wait for specific conditions.

Applied to files:

  • app/client/cypress/support/commands.js
📚 Learning: 2025-01-13T15:14:42.085Z
Learnt from: brayn003
Repo: appsmithorg/appsmith PR: 38635
File: app/client/cypress/e2e/Regression/ClientSide/Git/GitSync/MergeViaRemote_spec.ts:81-82
Timestamp: 2025-01-13T15:14:42.085Z
Learning: In Cypress test files, unsafe optional chaining is acceptable when the intention is for the test to fail if the expected data structure is not present, as it helps validate the API response structure.

Applied to files:

  • app/client/cypress/support/commands.js
📚 Learning: 2024-07-09T04:38:40.422Z
Learnt from: Shivam-z
Repo: appsmithorg/appsmith PR: 34786
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image3_Spec.ts:22-24
Timestamp: 2024-07-09T04:38:40.422Z
Learning: When handling errors in Cypress, use `cy.on('uncaught:exception')` instead of `.catch()` as Cypress commands do not support the `.catch()` method.

Applied to files:

  • app/client/cypress/support/commands.js
📚 Learning: 2024-07-26T21:12:57.228Z
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-10-08T15:32:34.115Z
Learnt from: sagar-qa007
Repo: appsmithorg/appsmith PR: 34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: Learnt from: sagar-qa007
PR: appsmithorg/appsmith#34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-07-16T06:44:55.118Z
Learning: Avoid using sleep functions like `agHelper.Sleep`, `this.Sleep`, and other related sleep functions in Cypress tests within the `app/client/cypress` directory to prevent non-deterministic behaviors and ensure tests are more reliable and maintainable.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-07-26T21:12:57.228Z
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Radio/Radio2_spec.ts:404-407
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The `Radio2_spec.ts` file is not part of the initial phase for the removal of static waits in the pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1".

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
📚 Learning: 2024-11-13T09:11:36.959Z
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js:35-37
Timestamp: 2024-11-13T09:11:36.959Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js`, when writing Cypress end-to-end tests for the Image Widget in JavaScript, use `viewWidgetsPage.imageinner` as the selector when asserting 'src' and 'alt' attributes to maintain consistency.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2025-10-28T09:17:22.519Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/pages/AppIDE/components/AppSettings/components/PageSettings.tsx:330-359
Timestamp: 2025-10-28T09:17:22.519Z
Learning: In the Appsmith codebase, slug normalization for static URLs (application slugs and page slugs) handles lowercase conversion on the backend. The frontend helper `filterAccentedAndSpecialCharacters` in `app/client/src/pages/AppIDE/components/AppSettings/utils.ts` intentionally preserves the user's input casing to avoid modifying the entered value too drastically, as the backend will normalize to lowercase during persistence.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-07-24T08:29:41.208Z
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-07-24T08:29:41.208Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts
📚 Learning: 2024-12-15T17:45:48.303Z
Learnt from: brayn003
Repo: appsmithorg/appsmith PR: 38171
File: app/client/src/git/components/DefaultBranch/DefaultBranchCE.tsx:1-14
Timestamp: 2024-12-15T17:45:48.303Z
Learning: In `app/client/src/git/components/DefaultBranch/DefaultBranchCE.tsx`, the feature flag check is performed at a higher level, so it's acceptable to have `isGitProtectedFeatureLicensed={false}` in this component.

Applied to files:

  • app/client/cypress/support/Objects/FeatureFlags.ts
📚 Learning: 2024-07-26T21:12:57.228Z
Learnt from: dipyamanbiswas07
Repo: appsmithorg/appsmith PR: 29282
File: app/client/cypress/e2e/Regression/ClientSide/Templates/Fork_Template_spec.js:11-17
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The user has clarified that intercepts are called in end-to-end tests, and therefore resetting the feature flag in an `afterEach` hook is not required in their test setup.

Applied to files:

  • app/client/cypress/support/Objects/FeatureFlags.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: perform-test / rts-build / build
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: client-lint / client-lint
  • GitHub Check: client-unit-tests / client-unit-tests
  • GitHub Check: client-build / client-build
  • GitHub Check: client-prettier / prettier-check

@vsvamsi1 vsvamsi1 added ok-to-test Required label for CI and removed ok-to-test Required label for CI labels Nov 5, 2025
@vsvamsi1 vsvamsi1 added ok-to-test Required label for CI and removed ok-to-test Required label for CI labels Nov 6, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3da4848 and 6124fd3.

📒 Files selected for processing (6)
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts (1 hunks)
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts (1 hunks)
  • app/client/cypress/locators/AdminsSettings.js (1 hunks)
  • app/client/cypress/support/Objects/FeatureFlags.ts (1 hunks)
  • app/client/cypress/support/commands.js (1 hunks)
  • app/client/src/pages/AppIDE/components/AppSettings/components/PageSettings.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • app/client/cypress/support/commands.js
  • app/client/cypress/support/Objects/FeatureFlags.ts
🧰 Additional context used
📓 Path-based instructions (1)
app/client/cypress/**/**.*

⚙️ CodeRabbit configuration file

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.

Files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
  • app/client/cypress/locators/AdminsSettings.js
🧠 Learnings (12)
📓 Common learnings
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts:32-225
Timestamp: 2025-11-05T12:58:32.469Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 2-5 depend on state from previous tests (e.g., slug values modified in earlier tests). The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts:0-0
Timestamp: 2025-11-05T12:56:49.229Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 4-6 depend on state (`page1Slug`, `page2Slug`) set in Tests 2-3. The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-10-08T15:32:39.374Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.
Learnt from: sagar-qa007
Repo: appsmithorg/appsmith PR: 34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: Learnt from: sagar-qa007
PR: appsmithorg/appsmith#34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-07-16T06:44:55.118Z
Learning: Avoid using sleep functions like `agHelper.Sleep`, `this.Sleep`, and other related sleep functions in Cypress tests within the `app/client/cypress` directory to prevent non-deterministic behaviors and ensure tests are more reliable and maintainable.
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_spec.js:44-47
Timestamp: 2024-11-13T09:07:54.931Z
Learning: When reviewing code in `app/client/cypress/**` paths, ensure that suggestions are appropriate for test code and not for `src` code. Avoid applying source code checks to test code unless relevant.
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-07-24T08:29:41.208Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-10-08T15:32:34.115Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/utils/helpers.tsx:1124-1136
Timestamp: 2025-10-30T07:15:20.287Z
Learning: In app/client/src/utils/helpers.tsx, within the getUpdateRouteForSlugPath function, the pageSlug parameter extracted from the route includes the trailing hyphen (e.g., "home-page-" not "home-page"). Additionally, when the static slug conversion branch is executed, params.basePageId is guaranteed to be defined because the code path requires successful page data fetch from the server as a precondition.
📚 Learning: 2025-11-05T12:58:32.469Z
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts:32-225
Timestamp: 2025-11-05T12:58:32.469Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 2-5 depend on state from previous tests (e.g., slug values modified in earlier tests). The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
📚 Learning: 2025-11-05T12:56:49.229Z
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts:0-0
Timestamp: 2025-11-05T12:56:49.229Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 4-6 depend on state (`page1Slug`, `page2Slug`) set in Tests 2-3. The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
  • app/client/cypress/locators/AdminsSettings.js
📚 Learning: 2024-10-08T15:32:34.115Z
Learnt from: sagar-qa007
Repo: appsmithorg/appsmith PR: 34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-10-08T15:32:34.115Z
Learning: Learnt from: sagar-qa007
PR: appsmithorg/appsmith#34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settings_Spec.ts:14-56
Timestamp: 2024-07-16T06:44:55.118Z
Learning: Avoid using sleep functions like `agHelper.Sleep`, `this.Sleep`, and other related sleep functions in Cypress tests within the `app/client/cypress` directory to prevent non-deterministic behaviors and ensure tests are more reliable and maintainable.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
📚 Learning: 2025-10-30T07:15:20.287Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/utils/helpers.tsx:1124-1136
Timestamp: 2025-10-30T07:15:20.287Z
Learning: In app/client/src/utils/helpers.tsx, within the getUpdateRouteForSlugPath function, the pageSlug parameter extracted from the route includes the trailing hyphen (e.g., "home-page-" not "home-page"). Additionally, when the static slug conversion branch is executed, params.basePageId is guaranteed to be defined because the code path requires successful page data fetch from the server as a precondition.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
  • app/client/src/pages/AppIDE/components/AppSettings/components/PageSettings.tsx
📚 Learning: 2025-10-28T03:30:58.299Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/sagas/InitSagas.ts:260-271
Timestamp: 2025-10-28T03:30:58.299Z
Learning: In app/client/src/sagas/InitSagas.ts, when constructing consolidatedApiParams for static page URLs, the code intentionally reuses applicationId and defaultPageId fields to pass staticApplicationSlug and staticPageSlug values respectively. This is by design, even though ConsolidatedApiParams type has dedicated staticApplicationSlug and staticPageSlug fields.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
  • app/client/cypress/locators/AdminsSettings.js
📚 Learning: 2025-10-28T09:17:22.519Z
Learnt from: ashit-rath
Repo: appsmithorg/appsmith PR: 41312
File: app/client/src/pages/AppIDE/components/AppSettings/components/PageSettings.tsx:330-359
Timestamp: 2025-10-28T09:17:22.519Z
Learning: In the Appsmith codebase, slug normalization for static URLs (application slugs and page slugs) handles lowercase conversion on the backend. The frontend helper `filterAccentedAndSpecialCharacters` in `app/client/src/pages/AppIDE/components/AppSettings/utils.ts` intentionally preserves the user's input casing to avoid modifying the entered value too drastically, as the backend will normalize to lowercase during persistence.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
📚 Learning: 2024-07-24T08:29:41.208Z
Learnt from: abhishek-bandameedi
Repo: appsmithorg/appsmith PR: 35133
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Checkbox/CheckBox2_spec.js:0-0
Timestamp: 2024-07-24T08:29:41.208Z
Learning: In Cypress tests for the Appsmith project, ensure the use of locator variables for selectors and include multiple assertions for comprehensive testing.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
  • app/client/cypress/locators/AdminsSettings.js
📚 Learning: 2024-07-26T21:12:57.228Z
Learnt from: Aishwarya-U-R
Repo: appsmithorg/appsmith PR: 29405
File: app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js:37-41
Timestamp: 2024-07-26T21:12:57.228Z
Learning: The pull request titled "test: Cypress | Replace static with Dynamic waits - Part 1" is part of a phased approach where only certain test specifications are targeted for static wait removal in the initial phase. Future phases will address additional specs.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
📚 Learning: 2024-10-08T15:32:34.114Z
Learnt from: sagar-qa007
Repo: appsmithorg/appsmith PR: 34955
File: app/client/cypress/e2e/Regression/ClientSide/ActionExecution/General_settingsTe_Spec.ts:33-33
Timestamp: 2024-10-08T15:32:34.114Z
Learning: 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.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/AppSlugPersistance_Spec.ts
📚 Learning: 2024-11-13T09:07:54.931Z
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_spec.js:44-47
Timestamp: 2024-11-13T09:07:54.931Z
Learning: When reviewing code in `app/client/cypress/**` paths, ensure that suggestions are appropriate for test code and not for `src` code. Avoid applying source code checks to test code unless relevant.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
📚 Learning: 2024-11-13T09:11:36.959Z
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js:35-37
Timestamp: 2024-11-13T09:11:36.959Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js`, when writing Cypress end-to-end tests for the Image Widget in JavaScript, use `viewWidgetsPage.imageinner` as the selector when asserting 'src' and 'alt' attributes to maintain consistency.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PageSlugPersistance_Spec.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: perform-test / rts-build / build
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: client-check-cyclic-deps / check-cyclic-dependencies
  • GitHub Check: client-prettier / prettier-check
  • GitHub Check: client-lint / client-lint
  • GitHub Check: client-unit-tests / client-unit-tests
  • GitHub Check: client-build / client-build

@vsvamsi1 vsvamsi1 requested a review from ashit-rath November 6, 2025 20:02
ashit-rath
ashit-rath previously approved these changes Nov 7, 2025
@vsvamsi1 vsvamsi1 added ok-to-test Required label for CI and removed ok-to-test Required label for CI labels Nov 7, 2025
@vsvamsi1 vsvamsi1 enabled auto-merge (squash) November 7, 2025 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants