infra-api-test
v1.0.0
Published
Infrastructure layer for API test automation
Downloads
11
Maintainers
Readme
Infra API Test Library
Infrastructure layer for API test automation providing reusable utilities for test response logging and parameter management.
Overview
This library provides common utilities for API testing projects:
- Test Response Logger: Save and retrieve test responses for debugging and cross-test parameter usage
- JSON Parameter Processor: Process parameter references in JSON test files using
{{ref:TEST_NAME:PARAMETER_PATH}}syntax
Project Structure
infra-api-test/
├── src/
│ ├── utils/
│ │ ├── json-parameter-processor.ts # JSON parameter reference processing
│ │ └── test-response-logger.ts # Test response logging and retrieval
│ └── index.ts # Main exports
├── .clinerules/ # Cline AI workflow rules
│ └── workflows/
│ ├── tester-grpc.md # gRPC test generation rules
│ └── tester-rest.md # REST API test conversion rules
├── dist/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.mdInstallation
This library is installed as a local file dependency in the consuming project:
{
"dependencies": {
"infra-api-test": "file:../infra-api-test"
}
}Then run:
npm installUsage
Importing Utilities
import {
// Test Response Logger
logAndSaveTestResponse,
getParameterFromPreviousTest,
saveAllTestResponses,
TestResponse,
TestResponseLogger,
// JSON Parameter Processor
processJsonParameterReferences,
hasJsonParameterReferences,
validateParameterReferences,
extractParameterReferences
} from 'infra-api-test';Test Response Logging
import { logAndSaveTestResponse, saveAllTestResponses } from 'infra-api-test';
describe('My Test Suite', () => {
afterAll(() => {
saveAllTestResponses('my-test-responses.json');
});
test('Should save response', async () => {
const testName = 'Should save response';
const response = await makeApiCall();
// Log and immediately save the response
logAndSaveTestResponse(testName, response, 'my-test-responses.json');
expect(response.status).toBe(200);
});
});Cross-Test Parameter Usage
import { getParameterFromPreviousTest } from 'infra-api-test';
test('Should use parameter from previous test', async () => {
const testName = 'Should use parameter from previous test';
// Get parameter from previous test response
const savedToken = getParameterFromPreviousTest(
'Login Test',
'token',
'my-test-responses.json'
);
// Use in new request
const headers = { 'Authorization': `Bearer ${savedToken}` };
const response = await makeApiCall(headers);
logAndSaveTestResponse(testName, response, 'my-test-responses.json');
});JSON Parameter References
import {
hasJsonParameterReferences,
processJsonParameterReferences
} from 'infra-api-test';
const testData = {
userId: "{{ref:User Creation Test:user.id}}",
token: "{{ref:Login Test:token}}"
};
if (hasJsonParameterReferences(testData)) {
const processed = processJsonParameterReferences(
testData,
'my-test-responses.json'
);
// Use processed data with real values
}Cline Rules
The .clinerules folder contains AI-assisted workflow rules for:
- tester-grpc.md: Automatic gRPC test generation from proto files and JSON test definitions
- tester-rest.md: Postman collection to Jest test conversion guidelines
These rules ensure consistent test generation and follow best practices.
Development
Building the Library
npm run buildWatching for Changes
npm run watchCleaning Build Output
npm run cleanConsuming Projects
Projects using this library should:
- Install it as a file dependency
- Import utilities from
'infra-api-test' - Follow the cline rules in
.clinerules/workflows/for test generation - Use the test response logger for all test cases
- Leverage cross-test parameter usage for dependent tests
Features
Test Response Logger
- Immediate Saving: Responses are saved immediately after each test
- Cross-Test Parameters: Retrieve values from previous test responses
- Dot Notation: Support for nested object and array access (e.g.,
user.data[0].id) - Error Handling: Comprehensive error messages with available parameter paths
- Suite Organization: Save responses per test suite for better organization
JSON Parameter Processor
- Reference Syntax:
{{ref:TEST_NAME:PARAMETER_PATH}} - Nested Access: Support for dot notation and array indexing
- Validation: Validate parameter references before processing
- Extraction: Extract all parameter references for analysis
- Error Handling: Detailed error messages for missing tests or parameters
Version
Current version: 1.0.0
License
MIT
