dev-tools 4 min read

Step CI - Open-Source API Test Automation Framework

Step CI is an open-source API testing framework with YAML, JSON and JavaScript workflows. Test REST, GraphQL, gRPC, SOAP and tRPC APIs in CI/CD.

By
Share: X in
Step CI - Open-source API Testing Framework

TL;DR

TL;DR: Step CI is an open-source, language-agnostic API testing framework that runs YAML/JSON/JS workflows against REST, GraphQL, gRPC, SOAP and tRPC endpoints — self-hosted, CI/CD-ready.

Source and Accuracy Notes

What Is Step CI?

Step CI is an open-source API Quality Assurance framework built for developers who want to define API tests as code. Instead of relying on GUI-based tools like Postman or Insomnia, you write test workflows in YAML, JSON, or JavaScript and run them via CLI or directly in your CI/CD pipeline.

From the project README:

Step CI is an open-source API Quality Assurance framework

  • Language-agnostic. Configure easily using YAML, JSON or JavaScript
  • REST, GraphQL, gRPC, tRPC, SOAP. Test different API types in one workflow
  • Self-hosted. Test services on your network, locally and CI/CD
  • Integrated. Play nicely with others

The framework has 1,860 GitHub stars and is actively maintained.

Setup Workflow

Step 1: Install the CLI

Using Node.js (npm):

npm install -g stepci
```bash

> **Note**: Make sure you are using the LTS version of Node.js

**Using Homebrew:**

```bash
brew install stepci
```bash

### Step 2: Create a Workflow

Create a `workflow.yml` file:

```yaml
version: "1.1"
name: Status Check
env:
  host: example.com
tests:
  example:
    steps:
      - name: GET request
        http:
          url: https://${{env.host}}
          method: GET
          check:
            status: /^20/
```bash

You can also use JSON format:

```json
{
  "version": "1.1",
  "name": "Status Check",
  "env": { "host": "example.com" },
  "tests": {
    "example": {
      "steps": [{
        "name": "GET request",
        "http": {
          "url": "https://${{env.host}}",
          "method": "GET",
          "check": { "status": "/^20/" }
        }
      }]
    }
  }
}
```bash

### Step 3: Run the Workflow

```bash
stepci run workflow.yml
```bash

Output on success:

```bash
PASS  example

Tests: 0 failed, 1 passed, 1 total
Steps: 0 failed, 1 passed, 1 total
Time:  0.559s, estimated 1s

Workflow passed after 0.559s
```bash

## Deeper Analysis

### Supported API Protocols

Step CI supports testing multiple API types within a single workflow:

- **REST** — standard HTTP requests with full response validation
- **GraphQL** — query and mutation testing
- **gRPC** — protocol buffer-based API testing
- **tRPC** — type-safe API testing
- **SOAP** — XML-based web service testing

### Workflow Features

**Chaining requests with captures and variables:**

```yaml
tests:
  auth_flow:
    steps:
      - name: Login
        http:
          url: https://api.example.com/login
          method: POST
          body:
            email: [email protected]
            password: testpass
          capture:
            json: "$.token"
            variable: access_token
      - name: Get Profile
        http:
          url: https://api.example.com/profile
          method: GET
          headers:
            Authorization: "Bearer ${{variables.access_token}}"
```bash

**Data-driven testing with fake data generation:**

```yaml
tests:
  validation:
    steps:
      - name: Submit form
        http:
          url: https://api.example.com/users
          method: POST
          body:
            name: "{{ fake('firstName') }} {{ fake('lastName') }}"
            email: "{{ fake('email') }}"

Import from Postman and Insomnia

Step CI supports importing existing collections:

Practical Evaluation Checklist

  • Works with Node.js (library mode) or standalone CLI
  • Docker runner available: docker run stepci/stepci
  • GitHub Actions integration via official action
  • GitLab CI and Jenkins integrations documented
  • Jest plugin available for unit test integration
  • Parallel test execution supported
  • Self-hosted runner — no cloud dependency for test execution
  • Pricing: Open-source (free forever) + optional Support Plan with SLA

Security Notes

Step CI runs entirely self-hosted. Your API credentials and test data never leave your infrastructure. Tests can be run against local network services, localhost, or CI/CD environments without routing traffic through third-party servers.

The open-source runner and CLI are free under the Mozilla Public License 2.0 (MPL-2.0).

FAQ

Q: How is this different from Postman or Insomnia? A: Postman and Insomnia are GUI-based API clients. Step CI is a code-first, CLI-driven framework where tests are defined as YAML/JSON/JS files and can be version-controlled alongside your codebase.

Q: Can I use this in GitHub Actions? A: Yes. Step CI has an official GitHub Action and can also be run via Docker in any CI/CD pipeline.

Q: Does it support performance and load testing? A: Yes. The framework includes performance testing capabilities alongside functional API testing.

Conclusion

Step CI fills the gap between GUI-based API clients (Postman, Insomnia) and code-only testing libraries. Its YAML-first approach makes test workflows readable and version-controllable, while support for multiple API protocols covers most modern API architectures. The self-hosted, open-source model is particularly attractive for teams with strict data residency or security requirements.

For more, see the official documentation or try the online playground.