process-engine-api-testing is a dedicated library family for customer-facing process testing on top of process-engine-api. Its purpose is to provide an engine-agnostic test contract, JGiven integration, and adapter pluggability for running the same customer scenario across different engine stacks.
core: engine-agnostic testing SPI and common contracts.- initializer SPI
- grouped test context contracts
- query API
- assert API
- capabilities and diagnostics contracts
jgiven: JGiven/JUnit integration layer built on top ofcore.- base
AssertStage - base
ActionStage - test bootstrap integration
- base
docs: authoritative project documentation.constitution.md: non-negotiable design principles and boundariesspec.md: detailed system design and functional specificationimplementation-plan.md: phased delivery planadr/: irreversible or high-cost architectural decisions
coredefines only engine-agnostic contracts. It must not leak engine runtime classes.- Adapter-specific implementations belong in adapter repositories, not here.
- The grouped test context is the single public root object; sub-interfaces partition responsibilities beneath it.
- Query and assertion responsibilities are separated:
- query APIs return snapshot information only
- assert APIs own waiting, polling, and assertion semantics
- Public JGiven stages are intended for customer process tests, not adapter-internal verification.
- Treat
docs/spec.mdas the primary detailed description of intended behavior. - Use ADRs only for decisions that are expensive to reverse or that define stable architecture boundaries.
- Keep naming consistent with
process-engine-apivocabulary wherever possible. - Prefer existing
process-engine-apimodel types such asTaskInformationandProcessInformationover introducing parallel abstractions. - Public DSL naming is sentence-like and underscore-based when describing JGiven stage methods.
- Do not treat exploratory code as authoritative over the docs. When design and code diverge, align code to the docs or update the docs deliberately.
- Preserve the engine-agnostic dependency boundary. Public contracts here must not depend on Camunda 7 or Camunda 8 classes.
- Keep customer-facing testing concerns separate from adapter-internal testing concerns.
- When changing the architecture, update
constitution.md,spec.md, and any affected ADR in the same change. - Record follow-on cross-repo work explicitly when changes here require adapter-side implementation.