About

NoSwag is an automated API test generator. It turns Swagger and OpenAPI specifications (JSON or YAML) into executable pytest test suites. You provide the API spec; NoSwag produces Python tests—no execution platform, no cloud runners, just generation from spec to pytest.

The value proposition is straightforward: if you have an OpenAPI/Swagger file, you get pytest code. That bridges the gap between having an API contract and having a test suite you can run locally or in your own CI. The product sits squarely in the "NoCode to ProCode" space: spec in, code out.

Specification handling is the starting point. NoSwag supports Swagger 2.0 and OpenAPI 3.0 in JSON and YAML. You can import specs via URL or file upload, store and organize them per user, and edit them in an in-browser editor with validation. The spec is the single input for test generation.

Test generation is the core. The engine reads your spec and generates pytest-compatible Python tests. It can cover both positive and negative scenarios, and you get coverage metrics and the option to regenerate when the spec changes. You can download the generated test files (e.g. Python, JSON, YAML) or edit them in the UI. AI (e.g. OpenRouter/OpenAI) is used to produce richer, more realistic test cases from the same spec.

Output and workflow. Generated tests are standard pytest: you run them in your own environment, in your repo, or in your CI pipeline. NoSwag does not run the tests; it only creates them. That keeps the tool focused and lets teams keep full control over execution, environments, and tooling.

User experience is built around specs and generated tests: a modern Next.js 14 app with TypeScript, Tailwind CSS, and shadcn/ui. Users manage specs, trigger generation, view and edit generated tests, and download them. Authentication is via Firebase; subscription tiers (e.g. free, Startup, Scaleup) gate how many specs or generations you can use, with license management and optional auto-renewal.

Technical side. The backend is Node.js/Express with TypeScript, Prisma, and PostgreSQL. The frontend talks to it through Next.js API routes and uses React Query for server state. The generation service (e.g. cr-test-gen) takes a spec and returns pytest; storage and history are for specs and generated test artifacts, not for running tests.

NoSwag is for teams that maintain Swagger/OpenAPI and want to stop writing pytest by hand. It's a pytest-from-Swagger generator: spec in (JSON/YAML), pytest out, run wherever you like.