Skip to content

Commit 3c54bcb

Browse files
authored
Release 3.2.0
Release 3.2.0
2 parents 0f5adeb + 14b509e commit 3c54bcb

567 files changed

Lines changed: 25809 additions & 5288 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ai/commands/e2e-generate.md

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,45 @@
11
---
2-
description: Explore a page using Playwright MCP and generate E2E tests
3-
argument-hint: <url> [focus-area]
2+
description: Explore a page using Playwright MCP and generate E2E tests for a Jira ticket
3+
argument-hint: <ticket-id or ticket-url>
44
---
55

66
# Generate E2E Tests
77

8-
Use Playwright MCP to explore a page, discover testable functionality, and generate E2E tests.
8+
Use Playwright MCP to explore a page, discover testable functionality, and generate E2E tests based on a Jira ticket.
99

1010
**Follow all standards in `.ai/rules/e2e-testing.md`**
1111

12+
**Reference:** @tests/e2e-playwright/TEST_PLAN.md
13+
14+
## Prerequisites
15+
16+
- App must be running at `http://localhost:8080` for Playwright exploration
17+
1218
## Input
1319

14-
1. **URL** (required) - Page to explore (e.g., `http://localhost:8080/browser`)
15-
2. **Focus area** (optional) - Specific functionality (e.g., "add key", "settings")
20+
1. **Ticket ID or URL** (required)
1621

1722
## Process
1823

19-
### Step 1: Check Test Plan
24+
### Step 1: Fetch Jira Ticket Details
2025

21-
Review `tests/e2e-playwright/TEST_PLAN.md` to find tests to implement:
22-
- ✅ = Already implemented (skip)
26+
Use the Jira API to get ticket information:
27+
- Summary and description
28+
- Acceptance criteria
29+
- Related components/features
30+
31+
### Step 2: Check Test Plan
32+
33+
Review `tests/e2e-playwright/TEST_PLAN.md` to find related tests:
34+
- ✅ = Already implemented (skip or verify)
2335
- 🔲 = Not implemented (create new)
2436

25-
### Step 2: Explore the Page with Playwright MCP
37+
### Step 3: Explore the Page with Playwright MCP
38+
39+
Navigate to the relevant page based on the ticket's feature area:
2640

2741
```
28-
browser_navigate_Playwright → url
42+
browser_navigate_Playwright → url (e.g., http://localhost:8080)
2943
browser_snapshot_Playwright
3044
browser_click_Playwright → element, ref
3145
browser_snapshot_Playwright (after each action)
@@ -36,34 +50,45 @@ Look for:
3650
- Element roles (button, combobox, grid) → use with `page.getByRole()`
3751
- Form field placeholders → use with `page.getByPlaceholder()`
3852

39-
### Step 3: Check Existing Infrastructure
53+
### Step 4: Check Existing Infrastructure
4054

4155
```bash
4256
ls tests/e2e-playwright/tests/
4357
ls tests/e2e-playwright/pages/
4458
ls tests/e2e-playwright/test-data/
4559
```
4660

47-
### Step 4: Generate Test Artifacts
61+
### Step 5: Generate Test Artifacts
4862

49-
Based on exploration, create/update:
63+
Based on exploration and ticket requirements, create/update:
5064

5165
1. **Page Object** - `tests/e2e-playwright/pages/{feature}/{Feature}Page.ts`
5266
2. **Test Data Factory** - `tests/e2e-playwright/test-data/{feature}/index.ts`
5367
3. **Fixture** (if new page) - Update `tests/e2e-playwright/fixtures/base.ts`
5468
4. **Test File** - `tests/e2e-playwright/tests/{feature}/{action}/*.spec.ts`
5569

56-
### Step 5: Verify
70+
### Step 6: Verify
71+
72+
Run only the new tests using list reporter (no HTML report):
5773

5874
```bash
5975
cd tests/e2e-playwright
60-
npx playwright test --grep "<new-test-name>" --reporter=list
76+
npx playwright test tests/main/{feature}/{action}/ --project=chromium --reporter=list
6177
npm run lint && npx tsc --noEmit
6278
```
6379

64-
### Step 6: Update Test Plan
80+
**Note:** Use `--reporter=list` to avoid Playwright generating and hosting an HTML report. Use `--project=chromium` to run only browser tests (faster feedback).
81+
82+
### Step 7: Update Test Plan
83+
84+
Update `tests/e2e-playwright/TEST_PLAN.md` to match actual tests:
6585

66-
Mark implemented tests as ✅ in `tests/e2e-playwright/TEST_PLAN.md`
86+
- **Rename** test case names to match the actual test titles in spec files
87+
- **Add** new test cases that were created
88+
- **Delete** test cases that were removed or consolidated
89+
- Mark implemented tests as ✅
90+
91+
Test case names in TEST_PLAN.md should exactly match the test titles in spec files (e.g., `should open Help Center and display all menu options`).
6792

6893
## Exploration Checklist
6994

@@ -96,7 +121,12 @@ Mark implemented tests as ✅ in `tests/e2e-playwright/TEST_PLAN.md`
96121
## Example Usage
97122

98123
```
99-
@e2e-generate http://localhost:8080
100-
@e2e-generate http://localhost:8080/browser "add string key"
101-
@e2e-generate http://localhost:8080/workbench
124+
@e2e-generate RI-7992
125+
@e2e-generate https://redislabs.atlassian.net/browse/RI-7992
102126
```
127+
128+
The command will:
129+
1. Fetch ticket details from Jira
130+
2. Determine the relevant page/feature to test
131+
3. Explore the UI at http://localhost:8080
132+
4. Generate appropriate E2E tests based on ticket requirements

.ai/commands/generate-release-notes.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ For each ticket, analyze its essence to categorize it:
8484

8585
* **Only tickets with the "Github-Issue" label should be included in the Bugs/Bug fixes section**
8686
* When processing tickets from JIRA query or CSV, filter bugs to only include those with the "Github-Issue" label
87+
* **Include all bugs that have the "Github-Issue" label**—every such ticket must appear in the Bugs section with no limit or additional filtering
8788
* Other bug tickets (without this label) should be excluded from the Bugs/Bug fixes section
8889
* **Bugs with Github-Issue label should ONLY appear in the Bugs section, NOT in Headlines or Details sections**
90+
* **Always list each of these bugs with the GitHub issue link**: For every ticket in the Bugs section (tickets with "Github-Issue" label), output the line in the form `[#ISSUE-NUMBER](https://github.com/redis/RedisInsight/issues/ISSUE-NUMBER) [Short description]`. Resolve the GitHub issue number from: (1) JIRA labels such as `Github-4658` (use the number part), (2) JIRA description or linked PR body (e.g. "References #5381", "Closes #5382"), or (3) search on GitHub (repo: redis/RedisInsight) for the issue or PR that matches the bug (e.g. by JIRA key like RI-7894 or by summary). If the number cannot be determined, still include the short description but add a note to look up the link.
8991

9092
**Feature indicators:**
9193

@@ -105,9 +107,9 @@ Use the template from `docs/release-notes/RELEASE_NOTES_TEMPLATE.md` as a refere
105107

106108
### Format Selection
107109

108-
* **If only bugs (with "Github-Issue" label)**: Use simple "Bug fixes" section only
110+
* **If only bugs (with "Github-Issue" label)**: Use simple "Bug fixes" section only; include every ticket that has the "Github-Issue" label
109111
* **If features/improvements exist**: Use full format with "Headlines", "Details", and "Bugs" sections
110-
* Note: The "Bugs" section should only include tickets with the "Github-Issue" label
112+
* Note: The "Bugs" section must include all tickets with the "Github-Issue" label (include every one)
111113

112114
### Section Organization Rules
113115

@@ -137,9 +139,9 @@ Use the template from `docs/release-notes/RELEASE_NOTES_TEMPLATE.md` as a refere
137139
* [#ISSUE-NUMBER](https://github.com/redis/RedisInsight/issues/ISSUE-NUMBER) [Summary] (for GitHub issues, use link format)
138140

139141
### Bugs (if features exist) OR Bug fixes (if only bugs - see 3.0.2 example)
140-
* **IMPORTANT: Only include tickets with the "Github-Issue" label in this section**
141-
* [Short description of problem and fix] (for JIRA tickets, don't include ticket ID)
142-
* [#ISSUE-NUMBER](https://github.com/redis/RedisInsight/issues/ISSUE-NUMBER) [Summary] (for GitHub issues, use link format)
142+
* **IMPORTANT: Include all tickets with the "Github-Issue" label in this section (every one, no limit). Always list each bug with its GitHub issue link.**
143+
* Each line must be: `[#ISSUE-NUMBER](https://github.com/redis/RedisInsight/issues/ISSUE-NUMBER) [Short description of problem and fix]`
144+
* Resolve ISSUE-NUMBER from JIRA labels (e.g. Github-4658 → 4658), ticket/PR references, or GitHub search if needed.
143145

144146
**SHA-512 Checksums**
145147

@@ -150,8 +152,9 @@ https://redis.io/docs/latest/develop/tools/insight/release-notes/v.[VERSION]/
150152

151153
**Important formatting notes from GitHub releases:**
152154

153-
* **For JIRA tickets**: Do NOT include ticket IDs (like `#<ticket-number>` or `#<ticket-key>`). Instead, provide a very short description of what was the problem and what was fixed. This information can be found in the JIRA ticket description or the GitHub pull request linked to the ticket.
154-
* **For GitHub issues**: Use actual links in format `[#<issue-number>](https://github.com/redis/RedisInsight/issues/<issue-number>)` (not just `#<issue-number>` or `#<ticket-key>`)
155+
* **For the Bugs section (tickets with "Github-Issue" label)**: Always list each bug with its GitHub issue link: `[#<issue-number>](https://github.com/redis/RedisInsight/issues/<issue-number>) [Short description]`. Resolve the issue number from JIRA labels (e.g. `Github-4658`), from "References #NNNN" / "Closes #NNNN" in linked PRs or descriptions, or by searching GitHub (repo: redis/RedisInsight) for the matching issue.
156+
* **For other JIRA tickets** (Headlines/Details): Do NOT include ticket IDs. Provide a very short description of what was added or fixed.
157+
* **For GitHub issues** (when referenced elsewhere): Use actual links in format `[#<issue-number>](https://github.com/redis/RedisInsight/issues/<issue-number>)` (not just `#<issue-number>` or `#<ticket-key>`).
155158
* Use "SHA-512 Checksums" for all releases
156159
* Keep descriptions concise and user-focused
157160
* Headlines should highlight the most impactful user-facing changes

.cursor/agents/test-runner.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
name: test-runner
3+
model: composer-1.5
4+
description: Test automation expert. Use proactively to run tests and fix failures.
5+
---
6+
7+
You are a test automation expert.
8+
9+
When you see code changes, proactively run appropriate tests.
10+
11+
When completing a major task, run all tests to ensure the task is complete.
12+
13+
If tests fail:
14+
15+
1. Analyze the failure output
16+
2. Identify the root cause
17+
3. Fix the issue while preserving test intent
18+
4. Re-run to verify
19+
20+
Report test results with:
21+
22+
- Number of tests passed/failed
23+
- Summary of any failures
24+
- Changes made to fix issues

.github/build/build.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:20.14-alpine
1+
FROM node:22.12.0-alpine
22

33
# runtime args and environment variables
44
ARG DIST=Redis-Insight.tar.gz

.github/build/release-docker.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
set -e
33

44
HELP="Args:
5-
-v - Semver (3.0.3)
5+
-v - Semver (3.2.0)
66
-d - Build image repository (Ex: -d redisinsight)
77
-r - Target repository (Ex: -r redis/redisinsight)
88
"

.github/workflows/enforce-branch-name-rules.yml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Check branch name
13+
env:
14+
BRANCH_NAME: ${{ github.head_ref }}
1315
run: |
14-
echo "Source branch: ${{ github.head_ref }}"
15-
if [[ "${{ github.head_ref }}" != feature/* && \
16-
"${{ github.head_ref }}" != bugfix/* && \
17-
"${{ github.head_ref }}" != release/* && \
18-
"${{ github.head_ref }}" != dependabot/* && \
19-
"${{ github.head_ref }}" != latest && \
20-
"${{ github.head_ref }}" != fe/* && \
21-
"${{ github.head_ref }}" != be/* && \
22-
"${{ github.head_ref }}" != e2e/* && \
23-
"${{ github.head_ref }}" != test/* && \
24-
"${{ github.head_ref }}" != docs/* && \
25-
"${{ github.head_ref }}" != ric/* ]]; then
16+
echo "Source branch: $BRANCH_NAME"
17+
if [[ "$BRANCH_NAME" != feature/* && \
18+
"$BRANCH_NAME" != bugfix/* && \
19+
"$BRANCH_NAME" != release/* && \
20+
"$BRANCH_NAME" != dependabot/* && \
21+
"$BRANCH_NAME" != latest && \
22+
"$BRANCH_NAME" != fe/* && \
23+
"$BRANCH_NAME" != be/* && \
24+
"$BRANCH_NAME" != e2e/* && \
25+
"$BRANCH_NAME" != test/* && \
26+
"$BRANCH_NAME" != docs/* && \
27+
"$BRANCH_NAME" != ric/* ]]; then
2628
echo "❌ Pull requests to 'main' are only allowed from 'feature/**', 'bugfix/**', 'release/**', 'dependabot/**', 'latest', 'test/**', 'docs/**', or 'ric/**' branches."
2729
exit 1
2830
fi

.github/workflows/pipeline-build-macos.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ jobs:
117117
118118
env:
119119
APPLE_ID: ${{ secrets.APPLE_ID }}
120-
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
121120
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
122121
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
123122
USE_HARD_LINKS: ${{ vars.USE_HARD_LINKS }}

.github/workflows/publish-stores.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ jobs:
3333
run: |
3434
appVersion=$(jq -r '.version' redisinsight/package.json)
3535
36+
# Publish desktop image
3637
docker login -u $DOCKER_USER -p $DOCKER_PASS
3738
3839
./.github/build/release-docker.sh \
3940
-d redisinsight \
4041
-r $DOCKER_REPO \
4142
-v $appVersion
4243
44+
# Publish cloud image
4345
docker login -u $DOCKER_V1_USER -p $DOCKER_V1_PASS
4446
4547
./.github/build/release-docker.sh \

.github/workflows/tests-e2e-playwright-docker.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ jobs:
9090
OSS_STANDALONE_V8_HOST: 'host.docker.internal'
9191
OSS_STANDALONE_EMPTY_HOST: 'host.docker.internal'
9292
OSS_STANDALONE_BIG_HOST: 'host.docker.internal'
93+
OSS_STANDALONE_TLS_HOST: 'host.docker.internal'
94+
OSS_CLUSTER_HOST: 'host.docker.internal'
9395

9496
- name: Upload test results
9597
if: ${{ !cancelled() }}

.github/workflows/tests-e2e-playwright-lint.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ jobs:
2323
working-directory: ${{ env.E2E_DIR }}
2424
run: npm run lint
2525

26+
- name: Check formatting
27+
working-directory: ${{ env.E2E_DIR }}
28+
run: npm run format:check
29+
2630
- name: Type check E2E code
2731
working-directory: ${{ env.E2E_DIR }}
28-
run: npx tsc --noEmit
32+
run: npm run type-check
2933

0 commit comments

Comments
 (0)