feat(camunda-process-test): add Web Modeler scenario file support - #36
feat(camunda-process-test): add Web Modeler scenario file support#36HanselIdes wants to merge 13 commits into
Conversation
Adds a new reference — references/web-modeler-scenarios.md — covering the full one-shot workflow for running WM-exported test scenarios in CI/CD: - Detection fingerprint (filename, location, format differences vs. hand- authored .test.json) - Cluster architecture decision table (ephemeral / remote-shared / remote-WM) with guidance on persisting the choice in application-integration.yml - pom.xml additions: <testResource> with <targetPath> and maven-failsafe-plugin - Two Java templates: ephemeral (connectors-enabled + @testdeployment) and remote cluster (no @testdeployment, 120s timeout) - Troubleshooting table specific to WM scenarios Updates SKILL.md step 1 (Detect) to scan for * test scenarios.json files and route to the new reference instead of authoring CPT unit-test scenarios. Updates references/setup.md to document the failsafe plugin pattern and the connectors bundle image version constraint (RC/SNAPSHOT tags not on Docker Hub). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n with explicit space Space before 'test' is literal in the Maven include glob, making the distinction from .test.json files explicit and unambiguous. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
@huygur — Claude-generated skill update, closes epic 3498. This adds guidance for running Web Modeler-exported test scenario files in CI/CD as a first-class workflow in the One thing worth a close look: the detection pattern. Web Modeler exports files named |
…d de-duplicate it Review follow-ups on the Web Modeler scenario reference. - The claim that RC/SNAPSHOT tags are not published for `camunda/connectors-bundle` was wrong: Docker Hub carries `-rc*`, `-alpha*`, and `SNAPSHOT` tags for it. The real mechanism is uneven coverage between the two images — 8.7.0-alpha3-rc2, 8.8.0-alpha3-rc3 and 8.6.12-rc1 exist for `camunda/camunda` with no connectors-bundle counterpart, and CPT derives the connectors tag from `camunda.version`, so the pull 404s. Reworded around that. - The statement appeared four times (setup.md twice, web-modeler-scenarios.md twice). Consolidated into setup.md's "Connectors bundle image version" section; the others now point at it. - Drop "in CI/CD" from the web-modeler-scenarios title and reference blurb — the page covers detection, cluster choice, and test templates, and CI pipeline patterns live in ci.md. - Remove three links to references/judge-configuration.md, which this branch introduced but never added; restores main's wording for the two prose spots. - Merge main (the branch was 135 commits behind, predating the reference split). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeHfcUqZmkiELqobnqnwE1
|
@HanselIdes one thing I need your call on, and one suggestion.
I removed all three and restored Suggestion: after the For context on the rest: three review threads addressed and resolved, one commit pushed, plus a merge of Generated by Claude Code |
There was a problem hiding this comment.
Pull request overview
Adds documentation and guidance to support running Web Modeler–exported CPT scenario files (the * test scenarios.json envelope) as integration tests, and wires that guidance into the camunda-process-test skill’s detection and setup references.
Changes:
- Add a new one-shot reference guide for detecting and executing Web Modeler scenario files, including cluster-mode templates and Maven wiring.
- Update the skill’s “Detect” step to recognize
* test scenarios.jsonfiles and route users to the new reference instead of authoring.test.jsonsuites. - Expand setup guidance with a failsafe plugin snippet and connectors bundle image version constraints for connector-enabled runs.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| skills/camunda-process-test/SKILL.md | Adds detection guidance for Web Modeler scenario exports and links the new reference in the skill’s reference list. |
| skills/camunda-process-test/references/web-modeler-scenarios.md | New end-to-end guide for running Web Modeler scenario exports via failsafe, including templates for managed vs remote runtime modes. |
| skills/camunda-process-test/references/setup.md | Adds failsafe guidance for *IT.java and documents connectors bundle image tag constraints and overrides. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
🧪 Eval resultsTriggers 1/1 · Outcomes 2/2 — ✅ all passed. Non-blocking signal (doesn't block merge). Model Outcome evals
Trigger evals (skill routing)
|
…or the integration profile Step 2 named `test/src/test/resources/application-integration.yml`, which is only right for the sibling `test/` harness that setup.md scaffolds for Node.js projects. A standard Maven project puts it in `src/test/resources/`. Now names both and points at the layout section that explains when each applies. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeHfcUqZmkiELqobnqnwE1
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (4)
skills/camunda-process-test/references/web-modeler-scenarios.md:231
- Calling out a specific
NullPointerExceptionfor a missingZEEBE_GRPC_ADDRESSis overly specific and may not match the actual failure mode (often it surfaces as a config/connection error). A more generic symptom keeps this troubleshooting tip accurate across versions and configurations.
| Remote mode: `NullPointerException` on `ZEEBE_GRPC_ADDRESS` | Environment variable not set | Set the required env vars (see table above) |
skills/camunda-process-test/references/web-modeler-scenarios.md:82
- In the
pom.xmlsnippet, the default<directory>value points to../src/main/resources, which is only correct for the siblingtest/harness layout. For a standard Maven module where tests live in the same module, the typical path issrc/main/resources, so the snippet is likely to be copy/pasted incorrectly.
<directory>../src/main/resources</directory> <!-- adjust to project layout -->
skills/camunda-process-test/references/web-modeler-scenarios.md:228
- This troubleshooting row refers to
metadata.coveredFlowNodes, but earlier the document states CPT ignoresmetadataat runtime. As written, this is internally inconsistent and may mislead readers about what can actually fail at runtime.
This issue also appears on line 231 of the same file.
| Element ID in `metadata.coveredFlowNodes` not found in BPMN | BPMN was modified after the scenario was exported from Web Modeler | Re-export the scenario from Web Modeler, or update element IDs manually |
skills/camunda-process-test/references/setup.md:198
- This section hard-codes a few specific version examples of missing
camunda/connectors-bundletags. Those specifics are likely to become outdated and turn the guidance into a maintenance liability; the key point is that pre-release tag coverage is incomplete.
The reason is tag coverage, not tag absence: `camunda/connectors-bundle` does publish `-rc*`, `-alpha*`, and `SNAPSHOT` tags, but not for every version `camunda/camunda` has. `8.7.0-alpha3-rc2`, `8.8.0-alpha3-rc3`, and `8.6.12-rc1` all exist for `camunda/camunda` with no connectors-bundle counterpart. When the derived tag doesn't exist, the test fails at startup with `ContainerFetchException` for `camunda/connectors-bundle:<version>`.
…bleshooting rows The testResource snippet hard-coded ../src/main/resources, which is wrong for both supported layouts: a standard Maven module wants src/main/resources, and the sibling test/ harness reads process files from ../resources. Name the default and point at the harness layout for the alternative. Retarget the stale-element-ID troubleshooting row from metadata.coveredFlowNodes to the scenario instructions. The same page states CPT never reads metadata, so metadata could not be the failure source and the row contradicted it. Generalise the remote-mode env var symptom. The specific NullPointerException on ZEEBE_GRPC_ADDRESS was not verified and the failure surfaces as a config or connection error depending on version. Replace the static list of known-missing connectors-bundle tags with the mechanism plus a Docker Hub check, so the guidance survives tag coverage changing on either image. Keeps one verified example. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ptr6Yh5xCg1EY64GBkMDUH
|
|
|
Picked up the four suppressed comments from the last Copilot review (fd79eb3). They never became threads, so they were sitting unaddressed behind the "generated no new comments" summary. 1. 2. 3. 4. Hard-coded missing tags — half right, and it collides with an earlier request. Those versions exist because @maff pushed back on an unevidenced claim and evidence was the fix; deleting them would walk that back. But the staleness point is fair, because pre-release tags are pruned independently per image. Resolved by shipping the check instead of the list: curl -sf "https://hub.docker.com/v2/repositories/camunda/connectors-bundle/tags/${TAG}" >/dev/null \
&& echo "exists" || echo "missing — pin a GA version or override the tag"Verified live before documenting it — Validation skipped: @HanselIdes one thing for you, since it needs a maintainer call: finding 1 is a behavioural failure mode an eval would catch — an agent following the old snippet writes a Generated by Claude Code |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (4)
skills/camunda-process-test/references/web-modeler-scenarios.md:195
- Same as the ephemeral template: set the parameterized test display name so the WM scenario name appears in test output (matches the style used in
references/setup.md).
@ParameterizedTest
skills/camunda-process-test/references/web-modeler-scenarios.md:148
- For consistency with the existing CPT template in
references/setup.md, set the parameterized test display name so CI output shows the scenario name (otherwise failures are harder to map back to the WM test case).
This issue also appears on line 195 of the same file.
@ParameterizedTest
skills/camunda-process-test/references/web-modeler-scenarios.md:157
- This note uses a shorthand property name (
connectors-enabled=true), but the actual Spring property key (as shown in the snippet above and inreferences/connectors-runtime.md) isio.camunda.process.test.connectors-enabled=true. Using the full key here avoids readers searching for a non-existent property.
- `connectors-enabled=true` starts the `camunda/connectors-bundle` container so the HTTP JSON connector and other outbound connectors execute for real.
skills/camunda-process-test/references/setup.md:196
- The property key here is abbreviated as
connectors-enabled=true, but the actual Spring property (used elsewhere in this skill) isio.camunda.process.test.connectors-enabled=true. Spelling out the full key reduces ambiguity for readers configuring CPT.
If `connectors-enabled=true` is set, CPT pulls `camunda/connectors-bundle:<camunda.version>`. Prefer a GA release for `camunda.version`.
…ario docs Set the parameterized test display name in both WM integration templates, as the existing ProcessTest template already does, so CI output names the scenario that failed instead of an index. Spell the connectors property in full as io.camunda.process.test.connectors-enabled. The prose used a bare shorthand that is not the actual Spring property key, while the surrounding snippets and connectors-runtime.md use the full form. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ptr6Yh5xCg1EY64GBkMDUH
|
Closing the eval question I raised above: not adding one — correctness evals aren't supported yet, so there's nothing for the classpath failure mode to hook into. No That leaves this PR at correction-only, which is the right shape without an eval safety net. Every change is a fix to something demonstrably wrong, each verified against a source rather than reasoned about:
CI green on Ready for maintainer review — @maff, the two threads you opened are the ones that started this, and both are resolved. Generated by Claude Code |
|
FYI @maff I'm trying to clear out some WIP, so I put Claude on driving convergence and addressing comments. Closing this is at best a distracting quick win, so please protect your focus + context and don't feel this needs to be reviewed quickly |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (7)
skills/camunda-process-test/references/web-modeler-scenarios.md:208
- The required env var table should match the YAML snippet and the repo’s other Spring client docs (
CAMUNDA_GRPC_ADDRESS/CAMUNDA_REST_ADDRESSnaming). As written, readers may setZEEBE_GRPC_ADDRESSbut keepCAMUNDA_GRPC_ADDRESSin their local tooling, or vice-versa.
| Variable | Description |
|----------|-------------|
| `ZEEBE_GRPC_ADDRESS` | gRPC endpoint, e.g. `https://abc.zeebe.camunda.io:443` |
| `CAMUNDA_CLIENT_ID` | OAuth client ID |
skills/camunda-process-test/references/setup.md:197
- This section assumes
camunda.versionexists, but earlier in this guide the dependency example usescamunda-process-test.version. Clarify that the connectors-bundle tag follows the CPT dependency version (whatever property the project uses) so readers don’t go hunting for an undefinedcamunda.version.
## Connectors bundle image version
If `io.camunda.process.test.connectors-enabled=true` is set, CPT pulls `camunda/connectors-bundle:<camunda.version>`. Prefer a GA release for `camunda.version`.
skills/camunda-process-test/references/web-modeler-scenarios.md:233
- This troubleshooting row refers to
ZEEBE_GRPC_ADDRESS, but the guide’s config/env-var naming should be consistent (and elsewhere in the repo Spring examples useCAMUNDA_GRPC_ADDRESS). Update the variable name here to match the rest of the page.
| Remote mode: startup fails resolving the cluster address | A required environment variable is unset, so the client has no address to connect to | Set the required env vars (see table above) |
| Remote mode: process not found | BPMN not deployed to target cluster, or wrong cluster credentials | Deploy via Web Modeler or `c8ctl deploy`; verify `ZEEBE_GRPC_ADDRESS` points to the right cluster |
| WM scenario file not discovered by `@TestCaseSource` | File not on classpath, or `<targetPath>` missing from pom.xml | Confirm the `<testResource>` block in pom.xml uses `<targetPath>integration-scenarios</targetPath>` and the glob matches the filename |
skills/camunda-process-test/references/web-modeler-scenarios.md:86
- The Maven
<includes>pattern<include>* test scenarios.json</include>only matches files in the root ofsrc/main/resources. If Web Modeler exports scenarios next to BPMN/DMN inside a subfolder (e.g.src/main/resources/processes/), the file won’t be copied into test resources and@TestCaseSourcewon’t discover it. Use a recursive include pattern.
<includes>
<include>* test scenarios.json</include> <!-- space before "test" is literal; matches WM pattern, not .test.json -->
</includes>
skills/camunda-process-test/references/web-modeler-scenarios.md:66
- This guide introduces
ZEEBE_GRPC_ADDRESS, but other repo docs standardize onCAMUNDA_GRPC_ADDRESSfor Spring client configuration (seecamunda-job-workers/references/worker-sdk-spring.md). Aligning env var names avoids two parallel conventions for the same value.
This issue also appears in the following locations of the same file:
- line 205
- line 231
zeebe:
grpc-address: ${ZEEBE_GRPC_ADDRESS:}
auth:
skills/camunda-process-test/references/web-modeler-scenarios.md:159
- This note assumes the project defines
camunda.version, but the CPT setup guide in this repo uses other property names (e.g.camunda-process-test.version). To prevent copy/paste confusion, describe the tag source as “the CPT dependency version on the classpath” (and optionally mention both common property names).
- `io.camunda.process.test.connectors-enabled=true` starts the `camunda/connectors-bundle` container so the HTTP JSON connector and other outbound connectors execute for real.
- The connectors bundle image tag is derived from `camunda.version` in `pom.xml`, so `camunda.version` must be a version that image was published for — see the version guidance in [setup.md](setup.md).
- 60 seconds is a safe default timeout for a single external HTTP call. Increase it if the process has multiple sequential connector calls.
skills/camunda-process-test/references/setup.md:62
- This paragraph references “the version” without tying it back to the property name used in the snippet above (
camunda-process-test.version). Adding the property name(s) here will make it clearer what readers should pin inpom.xml, especially since later sections refer tocamunda.version.
This issue also appears on line 194 of the same file.
Use 8.9+ — the instruction-based `.test.json` format (`CREATE_PROCESS_INSTANCE`, `COMPLETE_JOB`, …) requires it.
**Use a GA release, aligned with the version the target production cluster runs.** If connectors are enabled, the version also has to be one the connectors bundle image was published for — see [Connectors bundle image version](#connectors-bundle-image-version) below.
…M guide Verified against docs.camunda.io rather than restating what the repo already said. Four groups of corrections: - CPT properties are `camunda.process-test.*`, not `io.camunda.process.test.*`. The latter is the Java package, not the Spring property prefix, and the guide contradicted itself: the application-integration.yml snippet already used camunda.process-test.runtime-mode while the @SpringBootTest snippet next to it used io.camunda.process.test.connectors-enabled. Only one can be right. - Client addresses sit directly under `camunda.client`; `camunda.client.zeebe.*` is the pre-8.8 Spring Zeebe SDK shape. The OIDC key is `auth.issuer-url`, not `auth.issuer`. Added `rest-address`: the client prefers REST over gRPC by default, so remote mode with only a gRPC address configures the wrong hop. - runtime-mode values are lowercase (`managed` / `remote`) as the docs write them. - Env vars are CAMUNDA_GRPC_ADDRESS / CAMUNDA_REST_ADDRESS, matching camunda-job-workers/references/worker-sdk-spring.md instead of introducing a second convention. Also: the testResource include needed `**/` or scenarios exported next to a BPMN in a subfolder of src/main/resources were never copied onto the test classpath; and the guide referred to a `camunda.version` property that setup.md never defines — it pins `camunda-process-test.version` — so the two now agree and the upstream name is noted where it differs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This comment was marked as outdated.
This comment was marked as outdated.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (4)
skills/camunda-process-test/references/web-modeler-scenarios.md:74
- This sentence asserts a specific default (
camunda.client.prefer-rest-over-grpcdefaults totrue) but there’s no supporting reference elsewhere in this repo. To avoid potentially incorrect guidance across versions, consider wording this as a requirement to supply both addresses for remote mode without claiming the default behavior.
`rest-address` is not optional for remote mode: the client prefers REST over gRPC by default (`camunda.client.prefer-rest-over-grpc` defaults to `true`), so a remote runtime configured with only a gRPC address has no address for the calls it actually makes.
skills/camunda-process-test/references/web-modeler-scenarios.md:66
- This comment states that
camunda.client.zeebe.*nesting is "pre-8.8" and "not the current" config shape, but elsewhere in this repo the Spring YAML example usescamunda.client.zeebe.grpc-address/rest-address(e.g.camunda-job-workers/references/worker-sdk-spring.md). Consider rephrasing this to avoid asserting a single canonical property shape, since it can vary by dependency/version.
This issue also appears on line 74 of the same file.
# Addresses sit directly under camunda.client. The camunda.client.zeebe.*
# nesting is the pre-8.8 Spring Zeebe SDK shape and is not the current one.
grpc-address: ${CAMUNDA_GRPC_ADDRESS:}
skills/camunda-process-test/SKILL.md:201
- These reference descriptions mention "agentic evaluation assertions" / "evaluation assertions", but the linked docs don’t appear to contain that content (e.g.
references/authoring.mdhas no "agentic" section). Please adjust the descriptions to match the current contents, or add the referenced material in the linked pages.
- [authoring.md](references/authoring.md) — `.test.json` schema, full 8.9 instruction reference, Java fallback, agentic evaluation assertions
- [test-context.md](references/test-context.md) — `CamundaProcessTestContext` Java API surface (job/decision/child-process mocking, time control, conditional behavior, evaluation assertions)
skills/camunda-process-test/references/setup.md:204
- The Docker Hub tag check uses
${TAG}but never defines it. If TAG is unset, this will likely hit the/tags/listing endpoint and incorrectly print "exists". Define TAG explicitly and use the per-tag endpoint so the check is reliable.
curl -sf "https://hub.docker.com/v2/repositories/camunda/connectors-bundle/tags/${TAG}" >/dev/null \
&& echo "exists" || echo "missing — pin a GA version or override the tag"
…med blurbs
The Docker Hub check interpolated an undefined ${TAG}. Confirmed the failure:
with TAG empty the URL collapses to the tag-listing endpoint, which returns 200
for every image, so the check printed "exists" for anything. TAG is now set in
the snippet and the collapse is called out.
The SKILL.md reference blurbs promised "agentic evaluation assertions" in
authoring.md and "evaluation assertions" in test-context.md. Neither page has
that content; both blurbs read as they do on main again.
Cited the properties reference for the prefer-rest-over-grpc default, and
softened the camunda.client.zeebe.* comment to describe it as the older shape
kept for backwards compatibility rather than dating it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This comment was marked as resolved.
This comment was marked as resolved.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (4)
skills/camunda-process-test/references/web-modeler-scenarios.md:82
- The pom.xml snippet is missing the required
<build>wrapper.<testResources>and<plugins>must live under<build>in Maven, otherwise readers may paste this into the wrong place and get an invalid POM.
### Step 3 — Update `pom.xml`
Two additions are needed: a `<testResource>` block to put the WM scenario file on the classpath, and the `maven-failsafe-plugin` so the integration test class runs on `mvn verify` but not `mvn test`.
skills/camunda-process-test/references/web-modeler-scenarios.md:142
@TestDeploymentresource paths should match the classpath layout described in setup.md (src/main/resources/processes/...). Using bare filenames here can mislead readers into omitting theprocesses/prefix and gettingFileNotFoundExceptionat runtime.
@CamundaSpringProcessTest
@TestDeployment(resources = {"MyProcess.bpmn", "my-decision.dmn"})
public class MyProcessIntegrationIT {
skills/camunda-process-test/references/setup.md:175
- This section says to add
maven-failsafe-plugintopom.xml, but Maven requires it under<build><plugins>. Calling that out explicitly helps avoid invalid POM placement when readers copy/paste.
## Failsafe plugin (integration tests)
When adding an `*IT.java` class alongside `ProcessTest.java` (e.g. a Web Modeler integration test), add `maven-failsafe-plugin` to `pom.xml`. Surefire runs `*Test.java` on `mvn test`; failsafe runs `*IT.java` on `mvn verify`.
skills/camunda-process-test/references/web-modeler-scenarios.md:21
- The example is fenced as
jsonbut contains a/* ... */comment, which makes it invalid JSON. This is easy for readers to copy/paste into tooling and then hit parse errors.
{
"name": "Happy path",
"instructions": [ /* standard CPT 8.9 instructions */ ],
"metadata": {
"processInstanceId": 1234567890,
…SON fence The pom.xml snippet showed bare <testResources> and <plugins>. Maven only reads those under <build> and ignores them silently anywhere else, so following the snippet literally gave a valid POM where the scenarios never reached the test classpath and failsafe never ran — the exact "WM scenario file not discovered" symptom the troubleshooting table blames on a missing targetPath. Both blocks are now inside <build>, the whole snippet parses as well-formed XML, and setup.md's failsafe section says the same thing. @testdeployment now uses the processes/ prefix, matching the scaffold layout in setup.md; bare filenames contradicted it and setup.md already warns that a wrong classpath path surfaces as FileNotFoundException. The scenario-file example was fenced as json but carries a /* … */ comment, so pasting it into anything strict fails to parse. Fenced as jsonc. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
…setup path setup.md is routed to unconditionally from SKILL.md, so every CPT task paid for the two sections this PR added there — Failsafe plugin and Connectors bundle image version — even though both only apply once you add an *IT.java. That is a progressive-disclosure regression, and it shows up in the rocket-launch cost gate: the scenario has no Web Modeler scenario file and never needed either. Both now live in web-modeler-scenarios.md, which is loaded on demand and is already the integration-testing page. The failsafe snippet was near-duplicated by Step 3 there, so it collapses to a pointer carrying the one fact that was unique to it: surefire owns *Test.java, failsafe owns *IT.java. setup.md is +844 bytes over main instead of +2914. Cross-references repointed; every link and anchor under the skill resolves. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Evals are green — and no baseline bump was neededPushed 6736344 (step 1 of the plan above). The cost gate did not just clear, it went back under baseline:
That is the diagnosis confirmed. If this had been variance, moving content between reference files would not have moved the number back onto baseline — it landed within 1% of it, on the run right after the change. The driver was So step 2 is off the table: do not run What moved
Net effect on the unconditionally-loaded path ( Current stateEvery check on Copilot has been asked for a review of the refactor commit; I will handle whatever it returns. One thing worth taking from this beyond the PR: the gate did its job. It caught a progressive-disclosure regression that no reviewer flagged across four rounds — Copilot read these files repeatedly and never mentioned that integration-test detail was sitting on the unconditional setup path. That is an argument for keeping the cost gate strict rather than widening it. Generated by Claude Code |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (2)
skills/camunda-process-test/references/web-modeler-scenarios.md:94
- In the
pom.xmlsnippet, the comment mentions the siblingtest/harness uses../resources, but the<directory>line is stillsrc/main/resources. For the harness layout, copying WM scenario files will fail unless readers notice they must change<directory>to../resources. Make the alternative explicit on the<directory>line to avoid a silent misconfiguration.
<!-- standard Maven module: where WM exported the file.
Sibling test/ harness: ../resources (setup.md#nodejs-project-layout) -->
<directory>src/main/resources</directory>
<targetPath>integration-scenarios</targetPath>
skills/camunda-process-test/references/web-modeler-scenarios.md:9
- The detection fingerprint hard-codes
src/main/resources/as the only “resources directory”, but this skill also supports the siblingtest/harness layout where BPMN/DMN (and WM scenarios) live under../resources/. As written, this can mislead Node.js/harness users into thinking WM scenario files can’t exist in their layout.
This issue also appears on line 91 of the same file.
- **Location**: alongside BPMN/DMN in the project's resources directory (`src/main/resources/`, not `src/test/`)
…o files The detection fingerprint gave src/main/resources as the only place a WM scenario file lives, which reads as "not your layout" to anyone on the sibling test/ harness that setup.md scaffolds for Node.js projects. It now names both, as does the <directory> line in the pom snippet — the alternative was only in the comment above it, easy to paste past. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Green, with one correction to what I said above
But the cost number moved again, and it changes the read. Full sequence:
So I overstated it when I said the 4826 run "confirmed the diagnosis" and that regeneration was off the table. What is actually established:
What I would doLand it. The content is now in the right place, quality scorers are 1.00 across every run, and the remaining exposure is a flaky gate rather than a regression being papered over. Do not regenerate the baseline. It would raise the ceiling to accommodate variance the content no longer causes, and it would bake in whatever the sampled run happened to spend. The durable fix is the gate's sampling, not this PR. The baseline was recorded at Where the PR standsSix commits from this run. Everything Copilot raised across five rounds is fixed or answered with evidence in-thread. All checks green except The other open item is unchanged — whether Not merging, not marking ready for review. Generated by Claude Code |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (1)
skills/camunda-process-test/references/web-modeler-scenarios.md:95
- The pom.xml snippet says “Pick the line for your layout … standard Maven module -> src/main/resources / sibling test/ harness -> ../resources”, but only shows the
src/main/resourcesoption. Readers using the siblingtest/harness are likely to copy/paste without realizing they must change<directory>to../resources.
<!-- Where WM exported the file. Pick the line for your layout:
standard Maven module -> src/main/resources
sibling test/ harness -> ../resources (setup.md#nodejs-project-layout) -->
<directory>src/main/resources</directory>
<targetPath>integration-scenarios</targetPath>
|
Round on Fixed — The comment named both paths, but only <!-- Where WM exported the file. Keep exactly one of these two lines:
the first for a standard Maven module, the second for the sibling
test/ harness (setup.md#nodejs-project-layout). -->
<directory>src/main/resources</directory>
<!-- <directory>../resources</directory> -->The constraint is stated because two active Why this is the last round. This is the third review to land on this one line, and each round moved it: The other finding from the previous round, the detection fingerprint at line 9, was already fixed by Validation: markdown-only. The XML snippet was parsed to confirm well-formedness. Unchanged and still yours, @HanselIdes:
Not merging, not marking ready for review. Generated by Claude Code |
The comment named both resource layouts but only one <directory> element existed, so a harness reader had to translate prose into the element they needed. The alternative is now the literal line, commented out, with the keep-exactly-one constraint stated so uncommenting both cannot read as valid. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EWcfp2epYZcgdKDQ7qTHHM
d8650fd to
5125e6e
Compare
|
Correction to the SHA above: the fix is Scope of that force-push, since history rewriting on this branch is your call and I want to be precise about what I touched: only my own tip commit, seconds old, nothing built on it. Note Generated by Claude Code |
Summary
references/web-modeler-scenarios.md— self-contained one-shot guide for running Web Modeler-exported scenario files as integration testsSKILL.mdstep 1 (Detect) to scan for* test scenarios.jsonfiles alongside BPMNs and route to the new referencereferences/setup.mdwith the connectors bundle image version constraint and a pointer to the failsafe setupWhat the new reference covers
Detection — format fingerprint distinguishing WM scenario files from hand-authored
.test.json:processIdat root, no$schema,metadata.coveredFlowNodesper test case. Names both supported resource layouts (src/main/resources/in a standard Maven module,../resources/for the siblingtest/harness).Cluster architecture decision — table of three modes (ephemeral Testcontainers, remote-shared, remote-WM-cluster), tradeoffs, and where the decision is persisted in the repo (
application-integration.ymlSpring profile, committed).Templates — two Java
*IT.javatemplates (failsafe, not surefire):@SpringBootTest(camunda.process-test.connectors-enabled=true)+@TestDeployment+ 60s timeout@TestDeployment+ 120s timeout + env var table for credentialspom.xml additions — a
<testResource>withintegration-scenariosand amaven-failsafe-pluginsnippet, both inside<build>.Troubleshooting table — WM-specific failure rows (element ID drift, timeout, image version, missing env vars).
Validated against
Built and tested the ephemeral pattern on
solutions/vehicle-eligibility-check/in HanselIdes/camunda-8-tutorials:NhtsaIntegrationIT.javaruns 2 scenarios fromVehicle Eligibility Check test scenarios.jsonagainst the real NHTSA API —Tests run: 2, Failures: 0.> Open question on this claim. The review found that the connectors property in the guide was wrong (see below). If
io.camunda.process.test.connectors-enablednever enabled connectors, this run should not have passed — so either the tutorial project sets the correct key and the guide transcribed it wrong, or something else was carrying it. Needs a check against whatNhtsaIntegrationITactually sets before this section can be treated as confirming the corrected template.Changed during review
Property names, verified against docs.camunda.io rather than against what the repo already said.
camunda.process-test.*, notio.camunda.process.test.*. The latter is the Java package CPT's classes live in, not the Spring prefix. The guide contradicted itself: theapplication-integration.ymlsnippet already usedcamunda.process-test.runtime-modewhile the@SpringBootTestblock beside it usedio.camunda.process.test.connectors-enabled. Spring ignores an unknown property silently, so the failure mode was connectors never starting and a connector job never completing.camunda.client;camunda.client.zeebe.*is the older Spring Zeebe SDK shape. The OIDC key isauth.issuer-url, notauth.issuer. Addedrest-address— the client prefers REST over gRPC by default, so remote mode with only a gRPC address configures the hop it does not use.runtime-modevalues lowercased tomanaged/remote, as the docs write them.CAMUNDA_GRPC_ADDRESS/CAMUNDA_REST_ADDRESS, matchingcamunda-job-workers/references/worker-sdk-spring.mdinstead of introducing a second convention for the same value.Real defects in the snippets.
<build>wrapper. Maven ignores<testResources>and<plugins>declared anywhere else, silently — so the snippet produced a valid POM where scenarios never reached the test classpath and failsafe never ran. That is the "WM scenario file not discovered" symptom this guide's own troubleshooting table attributes to a missing<targetPath>.<include>glob needed**/. A Maven*does not cross directories, so a scenario exported next to a BPMN in a subfolder ofsrc/main/resourceswas never copied.<testResource>directory was wrong for both layouts, then documented for only one. It started as../src/main/resources, which is correct for neither a standard Maven module nor the siblingtest/harness (setup.md#nodejs-project-layoutreads from../resources). It now defaults tosrc/main/resourcesand carries the harness path as an actual commented-out<directory>line rather than as prose, so a harness reader swaps a line instead of translating a sentence. Two active<directory>elements would be invalid, so the keep-exactly-one constraint is stated.${TAG}. Confirmed by running it: withTAGempty the URL collapses to the tag-listing endpoint, which returns200for every image, so the check reported "exists" for anything.@TestDeploymentnow uses theprocesses/prefix, matching the scaffold layout insetup.md.jsonc, since it carries a/* … */comment and was not parseable asjson.Progressive disclosure.
setup.md(failsafe plugin, connectors bundle image version) intoweb-modeler-scenarios.md, which is loaded on demand.SKILL.mdroutes tosetup.mdunconditionally, so every CPT task was reading 52% more of a page whose additions only matter for integration tests. This took the unconditionally-loaded path from +3,606 to +1,588 bytes overmain, and therocket-launchcost gate responded immediately — see the eval discussion in the thread.Documentation accuracy.
camunda.versionproperty thatsetup.mdnever defines — it pinscamunda-process-test.version. The two now agree, with the upstream name noted where it differs.SKILL.md's reference blurbs promised "agentic evaluation assertions" inauthoring.mdand "evaluation assertions" intest-context.md; neither page has that content, so both read as they do onmainagain.Pushed back on one finding. Copilot asked me to hedge the
camunda.client.prefer-rest-over-grpcdefault on the grounds that nothing in this repo supports it. The claim is correct per the properties reference and hedging it would weaken the reasonrest-addressis mandatory; the sentence now cites the reference inline instead.Follow-ups filed, not fixed here
connectors-runtime.mdonmaincarries the same wrong CPT property prefix. Also raises whether an eval should assert the emitted CPT config, since this skill ships these snippets into real projects.camunda-job-workers/references/worker-sdk-spring.mduses the pre-8.8camunda.client.zeebe.*nesting.Known blocker
license/clais red.fd79eb3and849bac30are authored byClaude <noreply@anthropic.com>, which cannot sign; the check was green through20a5f2dand every other commit is authored normally. Fixing it means re-authoring those two commits, squash-merging, or allowlisting the address. Rewriting history on this branch is deliberately left to @HanselIdes.🤖 Generated with Claude Code