## Description
> [!TIP]
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Git" it=true
### 🔍 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/12548211703>
> Commit: 28ec34d9b20246ce54b7deab8e9fa8e136bbd7ff
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12548211703&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Mon, 30 Dec 2024 15:48:17 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**
- Added optional integration tests trigger across multiple GitHub
Actions workflows
- Enhanced test configuration and reporting mechanisms
- **Chores**
- Updated workflow input parameters and descriptions
- Improved test execution and artifact management
- **Documentation**
- Added clarifying comments in test scripts about test prerequisites
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
When we're tagging a version that's not the latest version, then don't
update the `latest` Docker image on Docker hub. Like, if the current
latest is `v1.20`, and we publish the hotfix tag `v1.18.1` to fix a
critical bug in `v1.18`, then we only want to publish the Docker image
at the tag `v1.18.1`, and _not_ update `latest`. We want `latest` to
continue to point to `v1.20`.
Tested on a separate private repo, confirmed working.
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Tests have not run on the HEAD
21b3f9fe1ec7beea8b1f72b20f5406fb14fca4aa yet
> <hr>Sat, 21 Dec 2024 05:33:37 UTC
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a streamlined GitHub Actions workflow for Docker image
tagging.
- Added a summary log for workflow execution details.
- Enhanced Docker tag generation with validation and error handling.
- **Bug Fixes**
- Improved validation for GitHub reference formats to prevent failures.
- **Documentation**
- Updated workflow names and outputs for clarity and ease of use.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Specify the specs we want to run, in a plain code fence, where the first
line has to exactly be `/test`. The remaining lines have to be one spec
file per line.
Like this:
```
/test
cypress/e2e/Regression/ClientSide/Fork/ForkApplication_spec.ts
cypress/e2e/Regression/ClientSide/JSLibrary/Library_spec.ts
```
1. It's not possible to run with tags and specs and the same time. This
will need a slightly larger effort. But we'll get there.
2. The status message shows spec files like they are space-separated,
and isn't very easy to read. Don't take it too seriously yet, we'll
improve.
3. Globs _should_ also work fine. The `spec` content, _almost_ directly
lands into the `--spec` argument of Cypress. See docs at
https://docs.cypress.io/guides/guides/command-line#cypress-run-spec-lt-spec-gt.
4. Multiple runners is disabled for this, have to solve it separately.
The `ci-test-limited.yml` also doesn't do multiple runners either.
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9803353429>
> Commit: e99ae387c9a239ae51155af45977c285474cfbaf
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9803353429&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags:
> Spec: cypress/e2e/Regression/ClientSide/Fork/ForkApplication_spec.ts
> cypress/e2e/Regression/ClientSide/JSLibrary/Library_spec.ts
>
> It seems like **no tests ran** 😔. We are not able to recognize it,
please check <a
href="https://github.com/appsmithorg/appsmith/actions/runs/9803353429"
target="_blank">workflow here</a>.
> <hr>Fri, 05 Jul 2024 05:20:23 UTC
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Enhanced GitHub Actions workflows to improve test specification
handling and reporting.
- Refactored tag parsing logic in scripts for more accurate and
informative outputs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
And use script to update PR description with Cypress status
## Summary by CodeRabbit
- **Enhancements**
- Improved GitHub Actions workflows for PR automation and Cypress tests.
- Enhanced test failure messages with links to Cypress dashboard and
flaky test identification.
- **User Experience**
- Cypress test status messages now include emoji prefixes for "tip"
(green) and "caution" (red) alerts.
- **Bug Fixes**
- Corrected error handling in scripts to provide more accurate failure
statuses.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Gets common validation code for tags, for both `/ok-to-test` and `/test`
commands. Currently, for invalid tags in `/test` command, we aren't
updating the PR description with details of the tag parsing failure.
This PR fixes that, after finally bringing all the logic into Javascript
needed to solve this.
**/test sanity**
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9715326227>
> Commit: 260ec1888db114ae710b518abf36c54c6bfd2a9b
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9715326227&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated GitHub Actions workflow to trigger on 'release' and 'pg'
branches for 'ok-to-test' labeled PRs.
- Simplified tag parsing and validation logic in automation scripts.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Replacing more of `nefrob/pr-description@v1.1.2` with our GitHub Script.
This is moving towards Javascript CI, and hopefully an unit-testable CI.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Replaced `nefrob/pr-description` action with `actions/github-script`
for handling test responses in PR automation.
- Improved guidance on modifying PR body for correct tag usage and
linked to relevant documentation.
- Enhanced script content to handle warnings and failures more
effectively in PR workflow automation.
- **New Features**
- Updated the `write-cypress-status` script to support different alert
types and prefixes, ensuring better validation and formatting of alerts.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Specifying the `/test` command like this:
```
/test IDE
```
Doesn't pick up the `@tag.IDE` tag, but using `/test ide` does. This is
because of incorrect case-matching logic. This PR fixes this.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Enhanced case-insensitivity for tag matching to reduce errors.
- Improved error messaging for unmatched tags to provide clearer
feedback.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR switches the steps updating PR description to a local Javascript
script, run using `actions/github-script`, instead of depending on an
external third-party action.
Why? Besides reducing our dependency on third-party actions, which have
been found to break with surprises, we need this to fix a bug with the
`/test` command. The `/test` command, when is written with invalid tags,
reports the error in the workflow run, but doesn't update the PR
description. Because of how it's written in Javascript, we need a
Javascript way to update the description to fix that. This will provide
for that.
Further PRs will replace other uses of PR description update steps with
this.
**/test sanity**
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9556890596>
> Commit: 00d06858f6f7d14c6393cb16c894ddfd808b7cf8
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9556890596&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated GitHub Actions workflow to enhance pull request automation
with Cypress test results.
- Improved PR body updates with detailed test outcomes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
We have a check when running Cypress tests to ensure that no new `.js`
files are added under Cypress folder. This PR moves this check to a
separate JS file. There's another check that does some ADS compliance,
which I'll port in a follow-up PR.
Why am I hitting on this? One, to move away from `umani/changed-files`
workflow, which has randomly failed for us in the past, and id doesn't
do so much special for us anyway. Two, this workflow is the last usage
of `APPSMITH_CI_TEST_PAT` secret, so I should be able to remove that
secret as well. One less secret.
Adds support for a `/test` command, without breaking the existing
`/ok-to-test` habits.
This is a _sloppy_ version of `/ok-to-test`. Turns out humans are
sloppy. So let's embrace the human. 🤯
Example incantation:
```
/test sanity workflow
```
The sloppy parser at work:

Of course, if a PR body contains `/ok-to-test`, that takes precedence,
and any `/test` is ignored.
We're also moving the logic of parsing the tags to a separate Javascript
file. It's still not in a form that's easily testable, perhaps, but I
hope this is a start for us to get to a "unit-tested CI". ❤️
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>