openapi-playwright-generator
v3.0.2
Published
Generate Playwright test files from OpenAPI specifications with boundary value testing
Maintainers
Readme
openapi-playwright-generator
Generate Playwright test scripts from OpenAPI specifications with rule-based boundary value testing.
Prerequisites
- Node.js >= 16.0.0
Installation & Usage
Step 1 — Create a project folder
mkdir my-test
cd my-test
npm install openapi-playwright-generatorStep 2 — Generate test suite from OpenAPI spec
npx openapi-test-gen gen:suite -i api-spec.yaml -o suite.yamlStep 3 — Generate Playwright test files
npx openapi-test-gen gen:spec -s suite.yaml -o generated/ --name test.spec.tsStep 4 — Install Playwright and run tests
npm install -D @playwright/test
npx playwright install
npx playwright test generated/test.spec.tsCommands
gen:suite — Generate Test Suite
npx openapi-test-gen gen:suite [options]| Option | Required | Description |
|--------|----------|-------------|
| -i, --input <path> | Yes | OpenAPI spec file (YAML/JSON) |
| -o, --output <path> | Yes | Output suite file (YAML) |
| --rules <path> | No | Custom rule base file |
| --model <name> | No* | AI model provider: gemini or gpt (required when using --rules) |
| --ok-statuses <codes> | No | Expected success status codes (default: 200,201,204) |
| --bad-statuses <codes> | No | Expected error status codes (default: 400,422,404) |
gen:spec — Generate Playwright Test Files
npx openapi-test-gen gen:spec [options]| Option | Required | Description |
|--------|----------|-------------|
| -s, --suite <path> | Yes | Suite YAML file |
| -o, --output <dir> | Yes | Output directory for test files |
| --name <filename> | No | Test filename (default: <suite-name>.spec.ts) |
With Rule-Based Testing (AI-Assisted)
Create a .env file:
# For --model gemini
GEMINI_API_KEY=your_gemini_api_key
# For --model gpt
OPENAI_API_KEY=your_openai_api_keyRun with rules:
npx openapi-test-gen gen:suite -i api-spec.yaml --rules rules.yaml --model gemini -o suite.yaml
npx openapi-test-gen gen:spec -s suite.yaml -o generated/ --name test.spec.tsRule Base Format
businessDomain: order_management
rules:
- id: "rule_vip_discount"
scope: "request"
description: "VIP customers MUST have discount >= 15"
if:
all:
- param: "customerType"
op: "eq"
value: "vip"
then:
assert:
all:
- param: "discount"
op: "gte"
value: 15Supported operators: eq, ne, gt, gte, lt, lte
What Gets Generated
- Schema Validation — type checking, required fields, format validation
- Boundary Value Analysis — min/max values, edge cases
- Rule-Based Validation — custom business rule constraints (when
--rulesis provided)
