# nextgentech2/api-bdd-framework architecture

> Architecture diagram of the GitHub repository nextgentech2/api-bdd-framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nextgentech2/api-bdd-framework
- Repository: https://github.com/nextgentech2/api-bdd-framework

## Overview

This is a reusable Cucumber/RestAssured API test framework. QA engineers author Gherkin scenarios that configure endpoints and request data, send HTTP operations, then assert status, body, and schema while carrying tokens or IDs between steps. The main runtime path is feature steps → API service → request construction/client → external API, with responses stored in thread-local scenario state for later checks and extraction. README-documented payload templates, dynamic values, schema checks, and failure logging are included; some wiring is supported by documentation because the step-definition excerpt is partial.

Main entry points: [`src/main/java/com/nextgentech/steps/ApiSteps.java`](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/steps/ApiSteps.java) (Cucumber steps), [`src/main/java/com/nextgentech/api/services/ApiService.java`](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/services/ApiService.java) (API service), [`src/main/java/com/nextgentech/api/client/RestClient.java`](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/client/RestClient.java) (REST client), [`src/main/java/com/nextgentech/api/utils/ScenarioContext.java`](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ScenarioContext.java) (Scenario state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scenario["Scenario authoring"]
  node_features["Gherkin scenarios"]
  node_payloads["Payload templates<br/>[payloads.json]"]
end

subgraph group_execution["Step execution"]
  node_steps["Cucumber steps<br/>[ApiSteps.java]"]
  node_context["Scenario state"]
  node_hooks["Failure hook<br/>[Hooks.java]"]
end

subgraph group_transport["API transport"]
  node_config["API configuration<br/>[ApiConfig.java]"]
  node_service["API service<br/>[ApiService.java]"]
  node_builder["Request builder"]
  node_client["REST client<br/>[RestClient.java]"]
end

subgraph group_validation["Response validation"]
  node_schemas["JSON schemas"]
  node_response["API response<br/>[ApiResponse.java]"]
  node_validator["Response validator"]
  node_report["Cucumber report"]
end

node_qa(("QA engineer"))
node_api{{"Target API"}}

node_qa -->|"authors"| node_features
node_features -->|"dispatches"| node_steps
node_payloads -->|"loads templates"| node_steps
node_schemas -->|"validates against"| node_steps
node_steps -->|"stores and reads"| node_context
node_steps -->|"invokes requests"| node_service
node_service -->|"reads settings"| node_config
node_service -->|"builds specification"| node_builder
node_service -->|"dispatches request"| node_client
node_client -->|"sends HTTP"| node_api
node_api -->|"returns response"| node_client
node_client -->|"returns response"| node_service
node_service -->|"wraps response"| node_response
node_steps -->|"validates response"| node_validator
node_steps -->|"saves response"| node_context
node_hooks -->|"reads response"| node_context
node_hooks -->|"logs failure details"| node_report

click node_features "https://github.com/nextgentech2/api-bdd-framework/tree/main/src/test/resources/features"
click node_payloads "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/test/resources/payloads/payloads.json"
click node_schemas "https://github.com/nextgentech2/api-bdd-framework/tree/main/src/test/resources/schemas"
click node_steps "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/steps/ApiSteps.java"
click node_context "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ScenarioContext.java"
click node_hooks "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/steps/Hooks.java"
click node_config "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ApiConfig.java"
click node_service "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/services/ApiService.java"
click node_builder "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/models/RequestBuilder.java"
click node_client "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/client/RestClient.java"
click node_response "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/models/ApiResponse.java"
click node_validator "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ResponseValidator.java"
click node_report "https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/CucumberReportGenerator.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_features,node_payloads toneBlue
class node_steps,node_context,node_hooks toneAmber
class node_config,node_service,node_builder,node_client,node_api toneMint
class node_schemas,node_response,node_validator,node_report toneRose
class node_qa toneIndigo
```

## Components

### Scenario authoring

- [Gherkin scenarios](https://github.com/nextgentech2/api-bdd-framework/tree/main/src/test/resources/features): `src/test/resources/features`
- [Payload templates](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/test/resources/payloads/payloads.json): `src/test/resources/payloads/payloads.json`

### Step execution

- [Cucumber steps](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/steps/ApiSteps.java): `src/main/java/com/nextgentech/steps/ApiSteps.java`
- [Scenario state](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ScenarioContext.java): `src/main/java/com/nextgentech/api/utils/ScenarioContext.java`
- [Failure hook](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/steps/Hooks.java): `src/main/java/com/nextgentech/steps/Hooks.java`

### API transport

- [API configuration](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ApiConfig.java): `src/main/java/com/nextgentech/api/utils/ApiConfig.java`
- [API service](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/services/ApiService.java): `src/main/java/com/nextgentech/api/services/ApiService.java`
- [Request builder](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/models/RequestBuilder.java): `src/main/java/com/nextgentech/api/models/RequestBuilder.java`
- [REST client](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/client/RestClient.java): `src/main/java/com/nextgentech/api/client/RestClient.java`

### Response validation

- [JSON schemas](https://github.com/nextgentech2/api-bdd-framework/tree/main/src/test/resources/schemas): `src/test/resources/schemas`
- [API response](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/models/ApiResponse.java): `src/main/java/com/nextgentech/api/models/ApiResponse.java`
- [Response validator](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/api/utils/ResponseValidator.java): `src/main/java/com/nextgentech/api/utils/ResponseValidator.java`
- [Cucumber report](https://github.com/nextgentech2/api-bdd-framework/blob/main/src/main/java/com/nextgentech/CucumberReportGenerator.java): `src/main/java/com/nextgentech/CucumberReportGenerator.java`

### Other components

- **QA engineer**
- **Target API**

## Connections

- QA engineer → Gherkin scenarios: authors
- Gherkin scenarios → Cucumber steps: dispatches
- Payload templates → Cucumber steps: loads templates
- JSON schemas → Cucumber steps: validates against
- Cucumber steps → Scenario state: stores and reads
- Cucumber steps → API service: invokes requests
- API service → API configuration: reads settings
- API service → Request builder: builds specification
- API service → REST client: dispatches request
- REST client → Target API: sends HTTP
- Target API → REST client: returns response
- REST client → API service: returns response
- API service → API response: wraps response
- Cucumber steps → Response validator: validates response
- Cucumber steps → Scenario state: saves response
- Failure hook → Scenario state: reads response
- Failure hook → Cucumber report: logs failure details
