E2Engine — Declarative E2E testing

Declarative E2E testing.

Declare. Execute. Analyse.

E2Engine provides a structured, declarative model for test environments, service interactions, execution, and verification.

The problem

Testing one service is easy.
Testing the system around it isn't.

Real services depend on APIs, databases, asynchronous execution, and other services. Meaningful end-to-end tests need to control those boundaries and verify what happens across them.

Payment API
FraudHTTP
AccountgRPC
DatabaseSQL

The usual approach

Distributed tests become infrastructure code.

A meaningful system test often grows into a collection of containers, mock servers, fixtures, scripts, test helpers, and custom orchestration. The behavior being tested becomes distributed across the test infrastructure itself.

Containers
HTTP mocks
gRPC mocks
DB setup
Test code
Scripts
Assertions
↓

The E2Engine approach

Make the distributed test system explicit.

Describe the environment, behavior, and expectations using a structured model. E2Engine takes care of turning that description into an executable system test.

01EnvironmentServices and dependencies
→
02TestBehavior and expectations
→
03ExecutionRun the system
→
04ResultObserve and verify

01

Describe the environment

Make the test system explicit.

Define the services involved in the test and choose which dependencies are real and which E2Engine should control.

environment.yml
kind: Environment
version: 1.0.0
name: payment

spec:
  services:
    - id: fraud
      kind: http
      mode: mock

    - id: account
      kind: grpc
      mode: mock

02

Describe the behavior

Express intent, not test infrastructure.

Describe requests, fixtures, and expected interactions using a structured, declarative test specification.

Request
↓
Payment API
↓
Fraud mock
Account mock
↓
Assertions

03

Execute

Run the system test.

$ e2engine run test payment.yml
E2Engine
↓
Payment API
↔
Fraud mock
Account mock

04

Verify the system

Assert what happened across service boundaries.

✓ Request succeeded

✓ Fraud service called

✓ Account service called

✓ Expected request body

✓ Expected call count

Test passed

Realistic example

See the complete payment flow.

Explore an end-to-end example with a real service, HTTP and gRPC dependencies, mocks, fixtures, and interaction assertions.

Explore the demo →

Built for automation

Structured for developers. Structured for tools.

E2Engine represents test environments, behavior, execution, and results as explicit structures rather than hiding them inside test infrastructure.

The same model that makes distributed tests easier to understand also makes them easier to create, execute, inspect, and reason about programmatically.

HumanDeveloper
SoftwareAgent / Tool
↓
E2Enginestructured test model
↓
EnvironmentTestExecutionResult

Why E2Engine?

Use the right testing abstraction.

E2Engine doesn't replace every testing tool. It provides a different abstraction for tests that need to control and verify behavior across service boundaries.

Compare approaches →

E2Engine

Declarative E2E testing. Declare. Execute. Analyse.