Skip to content

Commit d829b44

Browse files
authored
Add workflow for server PR testing (#481)
* fix linting issues * Add workflow server PR testing
1 parent 361834c commit d829b44

4 files changed

Lines changed: 200 additions & 42 deletions

File tree

.claude/skills/generate-changelog/SKILL.md

Lines changed: 60 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ description: Generate changelog entries from merged PRs since the last release.
88
Generate changelog entries by analyzing merged PRs since the last release.
99

1010
Execute these phases in order:
11+
1112
1. **Data Gathering** — find last release, fetch PRs, classify, generate entries
1213
2. **Changelog Update** — write entries into CHANGELOG.md
1314
3. **Review & Approval** — present the actual diff to the user for review
@@ -20,11 +21,13 @@ Execute these phases in order:
2021
### Step 1.1: Find the latest release tag
2122

2223
Run:
24+
2325
```bash
2426
git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1
2527
```
2628

2729
Record as `LAST_TAG`. Get the tag's date:
30+
2831
```bash
2932
git log -1 --format=%aI $LAST_TAG
3033
```
@@ -46,12 +49,13 @@ Use the date portion only from `TAG_DATE` (e.g. `2026-02-09`).
4649
### Step 1.4: Filter PRs
4750

4851
**Skip rules** (in order):
52+
4953
1. PR has the `changelog` label → skip (already tracked in a previous changelog update)
5054
2. Author login is `dependabot` or `dependabot[bot]` → skip
5155
3. Title matches version bump patterns → skip:
52-
- Starts with `Switch to` and contains `-next`
53-
- Title is a bare version like `vX.Y.Z`
54-
- Title starts with `Release v`
56+
- Starts with `Switch to` and contains `-next`
57+
- Title is a bare version like `vX.Y.Z`
58+
- Title starts with `Release v`
5559
4. Title contains `update changelog` (case insensitive) → skip
5660
5. Title is purely CI/metadata (readme badges, workflow config) AND body does NOT contain `[x] This PR should be mentioned in the changelog` → skip
5761

@@ -62,9 +66,9 @@ Use the date portion only from `TAG_DATE` (e.g. `2026-02-09`).
6266
1. If body contains `[x] This PR introduces a breaking change`**breaking**
6367
2. If body contains `[ ] This PR introduces a breaking change`**normal**
6468
3. If no checkbox info, analyze title and body:
65-
- Breaking keywords: "refactor", "rename", "remove", "replace", "migrate", "breaking", "deprecate"
66-
- Clearly non-breaking (bug fix, docs, minor enhancement) → **normal**
67-
- Uncertain → flag for user review
69+
- Breaking keywords: "refactor", "rename", "remove", "replace", "migrate", "breaking", "deprecate"
70+
- Clearly non-breaking (bug fix, docs, minor enhancement) → **normal**
71+
- Uncertain → flag for user review
6872

6973
### Step 1.6: Assign category tags
7074

@@ -75,57 +79,65 @@ Pick the most fitting tag from the vocabulary (Step 1.2) based on PR title and b
7579
#### Entry Format
7680

7781
**Normal changes:**
82+
7883
```
7984
- [tag] Description [#N](https://github.com/OWNER/REPO/pull/N)
8085
```
8186

8287
**Breaking changes** with migration sub-items:
88+
8389
```
8490
- [tag] Description [#N](https://github.com/OWNER/REPO/pull/N)
8591
- Migration detail 1
8692
- Migration detail 2
8793
```
8894

8995
**Multiple PRs for the same change:**
96+
9097
```
9198
- [tag] Description [#N](url) [#M](url)
9299
```
93100

94101
#### Style Guide
95102

96103
**Formatting:**
97-
- Entry prefix: `- ` (dash + exactly 3 spaces)
98-
- Sub-item indent: 4 spaces + `- ` (4 spaces from parent dash)
99-
- Sub-sub-item indent: 8 spaces + `- `
100-
- Single space between `[tag]` and description text
101-
- Single space before PR link at end of line
102-
- PR links are mandatory, full URLs: `[#123](https://github.com/OWNER/REPO/pull/123)`
104+
105+
- Entry prefix: `- ` (dash + exactly 3 spaces)
106+
- Sub-item indent: 4 spaces + `- ` (4 spaces from parent dash)
107+
- Sub-sub-item indent: 8 spaces + `- `
108+
- Single space between `[tag]` and description text
109+
- Single space before PR link at end of line
110+
- PR links are mandatory, full URLs: `[#123](https://github.com/OWNER/REPO/pull/123)`
103111

104112
**Wording:**
105-
- Always start with a **present tense imperative verb** (not past tense)
106-
- Common verbs: Fix, Improve, Add, Update, Extend, Ensure, Introduce, Remove, Refactor, Rename, Provide, Allow, Support
107-
- **Bug fixes**: "Fix a bug that caused/prevented...", "Fix X behavior"
108-
- **Features**: "Introduce...", "Add support for...", "Provide..."
109-
- **Enhancements**: "Improve...", "Extend...", "Ensure that..."
110-
- **Refactors**: "Refactor...", "Rework...", "Rename..."
111-
- Be specific — never "Fix various issues"
113+
114+
- Always start with a **present tense imperative verb** (not past tense)
115+
- Common verbs: Fix, Improve, Add, Update, Extend, Ensure, Introduce, Remove, Refactor, Rename, Provide, Allow, Support
116+
- **Bug fixes**: "Fix a bug that caused/prevented...", "Fix X behavior"
117+
- **Features**: "Introduce...", "Add support for...", "Provide..."
118+
- **Enhancements**: "Improve...", "Extend...", "Ensure that..."
119+
- **Refactors**: "Refactor...", "Rework...", "Rename..."
120+
- Be specific — never "Fix various issues"
112121

113122
**Capitalization:**
114-
- Tags are always lowercase: `[diagram]`, not `[Diagram]`
115-
- Description starts lowercase after the tag (unless proper noun or code element)
116-
- Section headers: Title Case (`### Potentially Breaking Changes`)
123+
124+
- Tags are always lowercase: `[diagram]`, not `[Diagram]`
125+
- Description starts lowercase after the tag (unless proper noun or code element)
126+
- Section headers: Title Case (`### Potentially Breaking Changes`)
117127

118128
**Description cleanup from PR title:**
119-
- Remove issue tracker prefixes (e.g. `GLSP-1234:`, `GH-123:`, `ISSUE-456:`)
120-
- Remove conventional commit prefixes: `fix:`, `feat:`, `chore:`
121-
- Rephrase bug-report style to changelog style:
122-
- BAD: "Edit label UI does not resize on graph zoom"
123-
- GOOD: "Fix edit label UI not resizing on graph zoom"
124-
- Keep concise — one line
129+
130+
- Remove issue tracker prefixes (e.g. `GLSP-1234:`, `GH-123:`, `ISSUE-456:`)
131+
- Remove conventional commit prefixes: `fix:`, `feat:`, `chore:`
132+
- Rephrase bug-report style to changelog style:
133+
- BAD: "Edit label UI does not resize on graph zoom"
134+
- GOOD: "Fix edit label UI not resizing on graph zoom"
135+
- Keep concise — one line
125136

126137
**Breaking changes:**
127-
- Describe what changed, why it's breaking, and how to migrate
128-
- Extract migration sub-items from the PR body's "What it does" section
138+
139+
- Describe what changed, why it's breaking, and how to migrate
140+
- Extract migration sub-items from the PR body's "What it does" section
129141

130142
---
131143

@@ -136,13 +148,15 @@ Pick the most fitting tag from the vocabulary (Step 1.2) based on PR title and b
136148
Read `CHANGELOG.md` in the repository root.
137149

138150
**Active section detection:**
139-
- An active section has the `- active` suffix (e.g. `## v2.7.0 - active`)
140-
- If an active section exists → merge new entries into it
141-
- If the topmost section is a released version (no `- active` suffix) → create a new active section above it
151+
152+
- An active section has the `- active` suffix (e.g. `## v2.7.0 - active`)
153+
- If an active section exists → merge new entries into it
154+
- If the topmost section is a released version (no `- active` suffix) → create a new active section above it
142155

143156
**Creating a new section:**
144-
- Bump the minor version of `LAST_TAG` (e.g. `v2.6.0``v2.7.0`)
145-
- Insert after the title line, before the first `## ` heading:
157+
158+
- Bump the minor version of `LAST_TAG` (e.g. `v2.6.0``v2.7.0`)
159+
- Insert after the title line, before the first `## ` heading:
146160

147161
```markdown
148162
## v2.7.0 - active
@@ -160,9 +174,10 @@ Read `CHANGELOG.md` in the repository root.
160174
Only include "Potentially Breaking Changes" if there are breaking entries.
161175

162176
**Merging into existing active section:**
163-
- Check PR numbers against existing entries to avoid duplicates
164-
- Append new entries to the appropriate subsection
165-
- Create missing subsections as needed
177+
178+
- Check PR numbers against existing entries to avoid duplicates
179+
- Append new entries to the appropriate subsection
180+
- Create missing subsections as needed
166181

167182
### Step 2.2: Write the updated CHANGELOG.md
168183

@@ -185,13 +200,14 @@ Present the diff to the user.
185200
List any entries flagged as uncertain (category or breaking status) and ask the user to resolve them.
186201

187202
Even if nothing is uncertain, ask:
203+
188204
> "Does everything look correct, or would you like to adjust any entries?"
189205
190206
### Step 3.3: Collect user feedback
191207

192-
- **Approve as-is** → done (or proceed to Phase 4 if PR was requested)
193-
- **Request edits** → apply changes, show updated diff, ask again
194-
- **Resolve uncertain items** → apply, show updated diff
208+
- **Approve as-is** → done (or proceed to Phase 4 if PR was requested)
209+
- **Request edits** → apply changes, show updated diff, ask again
210+
- **Resolve uncertain items** → apply, show updated diff
195211

196212
**Do NOT proceed to Phase 4 unless the user explicitly requests a PR.**
197213

@@ -200,11 +216,13 @@ Even if nothing is uncertain, ask:
200216
## Phase 4: PR Creation (Optional)
201217

202218
Only execute this phase if the user explicitly requests a PR (either in their initial prompt or after reviewing the changelog). If the user hasn't mentioned a PR, ask after approval:
219+
203220
> "Would you like me to create a PR for this changelog update, or are you done?"
204221
205222
### Step 4.1: Determine the branch name
206223

207224
Check if `changelog-update` exists on remote:
225+
208226
```bash
209227
git ls-remote --heads origin changelog-update
210228
```
@@ -229,6 +247,7 @@ Report the PR URL.
229247
### Step 4.4: Label referenced PRs
230248

231249
Add the `changelog` label to every PR mentioned in the new entries:
250+
232251
```bash
233252
gh pr edit PR_NUMBER --add-label "changelog"
234253
```
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
name: 'E2E Server PR'
2+
3+
concurrency:
4+
group: e2e-server-pr-${{ github.event.inputs.server_pr }}
5+
cancel-in-progress: true
6+
7+
on:
8+
workflow_dispatch:
9+
inputs:
10+
server_pr:
11+
description: 'glsp-server-node PR number to test against'
12+
required: true
13+
type: string
14+
client_pr:
15+
description: 'glsp-client PR number (optional, defaults to master)'
16+
required: false
17+
type: string
18+
19+
jobs:
20+
resolve-server-ref:
21+
name: Resolve Server PR
22+
runs-on: ubuntu-latest
23+
outputs:
24+
server_ref: ${{ steps.resolve-server.outputs.server_ref }}
25+
client_ref: ${{ steps.resolve-client.outputs.client_ref }}
26+
steps:
27+
- name: Resolve server PR branch
28+
id: resolve-server
29+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
30+
with:
31+
script: |
32+
const prNumber = '${{ github.event.inputs.server_pr }}';
33+
const { data: pr } = await github.rest.pulls.get({
34+
owner: 'eclipse-glsp',
35+
repo: 'glsp-server-node',
36+
pull_number: parseInt(prNumber)
37+
});
38+
core.setOutput('server_ref', pr.head.ref);
39+
core.info(`Resolved server PR #${prNumber} to branch: ${pr.head.ref}`);
40+
41+
- name: Resolve client PR branch
42+
id: resolve-client
43+
if: github.event.inputs.client_pr != ''
44+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
45+
with:
46+
script: |
47+
const prNumber = '${{ github.event.inputs.client_pr }}';
48+
const { data: pr } = await github.rest.pulls.get({
49+
owner: 'eclipse-glsp',
50+
repo: 'glsp-client',
51+
pull_number: parseInt(prNumber)
52+
});
53+
core.setOutput('client_ref', pr.head.ref);
54+
core.info(`Resolved client PR #${prNumber} to branch: ${pr.head.ref}`);
55+
56+
integration-test:
57+
name: E2E Server PR
58+
needs: [resolve-server-ref]
59+
timeout-minutes: 120
60+
runs-on: ubuntu-latest
61+
env:
62+
STANDALONE_URL: 'file://${{ github.workspace }}/glsp-client/examples/workflow-standalone/app/diagram.html'
63+
GLSP_SERVER_PORT: '8081'
64+
GLSP_SERVER_PLAYWRIGHT_MANAGED: 'false'
65+
GLSP_WEBSOCKET_PATH: 'workflow'
66+
GLSP_SERVER_DEBUG: 'true'
67+
GLSP_SERVER_TYPE: 'node'
68+
69+
steps:
70+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
71+
with:
72+
ref: ${{ needs.resolve-server-ref.outputs.client_ref || 'master' }}
73+
path: 'glsp-client'
74+
75+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
76+
with:
77+
repository: 'eclipse-glsp/glsp-server-node'
78+
ref: ${{ needs.resolve-server-ref.outputs.server_ref }}
79+
path: 'glsp-server-node'
80+
81+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
82+
with:
83+
repository: 'eclipse-glsp/glsp-playwright'
84+
path: 'glsp-playwright'
85+
86+
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
87+
with:
88+
node-version: '22'
89+
90+
- name: Build glsp-client
91+
run: |
92+
cd glsp-client
93+
yarn
94+
95+
- name: Build glsp-server-node
96+
run: |
97+
cd glsp-server-node
98+
yarn
99+
100+
- name: Start GLSP server
101+
run: |
102+
cd glsp-server-node
103+
yarn start:websocket &
104+
echo "Waiting for GLSP server to be ready on port 8081..."
105+
timeout 60 bash -c 'until nc -z localhost 8081; do sleep 1; done'
106+
echo "GLSP server is ready"
107+
108+
- name: Build glsp-playwright
109+
run: |
110+
cd glsp-playwright
111+
yarn
112+
113+
- name: Run Playwright tests
114+
id: run_playwright_tests
115+
run: |
116+
cd glsp-playwright
117+
yarn test:standalone
118+
119+
- name: Upload Playwright report
120+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
121+
if: always()
122+
with:
123+
name: playwright-report-integration
124+
path: glsp-playwright/examples/workflow-test/playwright-report/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,17 @@
1+
/********************************************************************************
2+
* Copyright (c) 2024-2026 EclipseSource and others.
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Eclipse Public License v. 2.0 which is available at
6+
* http://www.eclipse.org/legal/epl-2.0.
7+
*
8+
* This Source Code may also be made available under the following Secondary
9+
* Licenses when the conditions for such availability set forth in the Eclipse
10+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
11+
* with the GNU Classpath Exception which is available at
12+
* https://www.gnu.org/software/classpath/license.html.
13+
*
14+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15+
********************************************************************************/
116
declare const GLSP_SERVER_HOST: string;
217
declare const GLSP_SERVER_PORT: string;

packages/client/src/features/label-edit-ui/label-edit-ui.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/********************************************************************************
2-
* Copyright (c) 2024 EclipseSource and others.
2+
* Copyright (c) 2024-2026 EclipseSource and others.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0 which is available at

0 commit comments

Comments
 (0)