Why Conformance Testing?
Conformance testing provides:Interoperability
Ensure that workflows written for one runtime can run on another compliant runtime without modification.Consistency
Maintain consistent behavior across different implementations of the specification.Quality Assurance
Validate that your implementation correctly handles all aspects of the DSL.Trust
Demonstrate to users that your implementation is fully compliant with the specification.Getting Started
1. Clone the Repository
Start by cloning the Serverless Workflow specification repository:2. Review Test Features
Explore the available Gherkin feature files:call-http.feature- HTTP service invocationcall-grpc.feature- gRPC protocol supportdata-flow.feature- Data filtering and transformationerror-handling.feature- Error handling and recoveryevent-processing.feature- Event consumption and emission- And many more…
3. Install Dependencies
Set up the testing framework for your language of choice. The CTK uses Gherkin, which is supported by numerous test runners:- Java
- JavaScript/TypeScript
- Python
- .NET
- Go
4. Implement Step Definitions
Create step definitions that connect the Gherkin scenarios to your runtime implementation.Example Step Definition (TypeScript)
5. Run the Tests
Execute the test suite using your chosen test runner:- JavaScript/TypeScript
- Python
- Java
- .NET
- Go
6. Review Results
After running the tests, review the results to ensure your implementation passes all scenarios:Test Organization
The CTK organizes tests by feature area:| Feature Area | Description |
|---|---|
| Task Execution | HTTP, gRPC, OpenAPI, AsyncAPI, script, and container tasks |
| Data Flow | Input/output filtering, transformation, and context management |
| Error Handling | Retries, error propagation, and fault recovery |
| Control Flow | Conditional, parallel, and iterative execution |
| Events | Event consumption, emission, correlation, and streaming |
| Timing | Timeouts, delays, and CRON-based scheduling |
| Extensions | Custom task types and execution interceptors |
Debugging Failed Tests
When tests fail:- Read the Scenario: Understand what behavior is being tested
- Check the Error Message: Identify which assertion failed
- Review the DSL: Ensure you’re implementing the feature correctly
- Add Logging: Instrument your implementation to trace execution
- Compare with Examples: Look at reference implementations
- Ask the Community: Get help on Slack if you’re stuck
Continuous Integration
Integrate CTK testing into your CI/CD pipeline:GitHub Actions Example
Certification
Once your implementation passes all CTK tests, you can:- Document Compliance: Note which specification version you conform to
- Share Results: Publish test results to demonstrate conformance
- Join the Ecosystem: Add your implementation to the official list
- Get Recognition: Receive community recognition for compliance
Resources
CTK Repository
Access all test features and documentation
Writing Tests
Learn how to write new test scenarios
Community Slack
Get help on #serverless-workflow
DSL Reference
Complete DSL specification reference