An open API service indexing awesome lists of open source software.

https://github.com/do-pa/itdoc

The Best Node.js Tool for Automatically Generating API Documentation from Test Code
https://github.com/do-pa/itdoc

api-documentation javascript nodejs openapi3 test-automation test-driven typescript

Last synced: about 2 months ago
JSON representation

The Best Node.js Tool for Automatically Generating API Documentation from Test Code

Awesome Lists containing this project

README

          

# itdoc

[![Build Status](https://github.com/do-pa/itdoc/actions/workflows/ci.yml/badge.svg)](https://github.com/do-pa/itdoc/actions/workflows/ci.yml)
[![NPM](https://img.shields.io/npm/v/itdoc.svg)](https://www.npmjs.com/package/itdoc)
![Node.js](https://img.shields.io/badge/node.js-%3E%3D20.0.0-brightgreen?logo=node.js&logoColor=white&style=flat-square)
[![License](https://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
[![Discord](https://img.shields.io/badge/Chat-Discord-5765F2.svg)](https://discord.gg/ZhXk7VSu5Z)

**itdoc is a Node.js tool for automatically generating API documentation based on your test
code.**
Hate writing docs? Let your tests do it. Your API docs stay in sync—no surprises, ever.

> A perfect alternative to [swagger-jsdoc] and [swagger-ui-express].

[swagger-jsdoc]: https://github.com/Surnet/swagger-jsdoc
[swagger-ui-express]: https://github.com/scottie1984/swagger-ui-express

- **Test-based Documentation:** itdoc generates documentation by directly extracting API request and
response examples from your test code, ensuring your documentation accurately reflects your API
behavior.
- **Multiple Documentation Formats:** Export documentation in various formats, such as
[OpenAPI Specification](https://swagger.io/specification/), Markdown, and HTML
([Redoc-style](https://redocly.github.io/redoc/)).
- **Supports Various Frameworks:** Compatible with popular Node.js frameworks like Express, NestJS,
fastify.
- **Easy to Use Without Complex Configuration:** Generate documentation effortlessly by writing
tests alone. ([Optional configuration is available](https://itdoc.kr/docs/guides/configuration))

[//]: # "TODO : 나중에 CLI 문서 작성된다면, REAMDE에 추가할 것."
[OpenAPI Specification]: https://swagger.io/specification/
[Redoc-style]: https://redocly.github.io/redoc/
[HTML output]: http://redocly.com/demo/openapi/museum-api/operations/getmuseumhours

## Installation

```bash
npm install itdoc --save-dev
```

## Documentation

Full documentation for itdoc can be found on the [official website](https://itdoc.kr/).

> you can contribute to improving our documentation by submitting a PR to our
> [docs folder](https://github.com/do-pa/itdoc/tree/develop/itdoc-doc).

## Examples

We have several examples available in the [examples directory]. Here's a simple Express example to
help you get started.

```javascript
import { describeAPI, itDoc, field, HttpMethod, HttpStatus } from "itdoc"

// Assume you have an Express app
const targetApp = app

describeAPI(
HttpMethod.POST,
"/signup",
{
name: "Sign Up API",
tag: "Auth",
summary: "Receives a username and password from the user to perform sign-up.",
},
targetApp,
(apiDoc) => {
itDoc("Successful sign-up", () => {
return apiDoc
.test()
.req()
.body({
username: field("Username", "penekhun"),
password: field("Password", "P@ssw0rd123!@#"),
})
.res()
.status(HttpStatus.CREATED)
})

itDoc("Fails to sign up if username is not provided.", async () => {
await apiDoc
.test()
.req()
.body({
password: field("Password", "P@ssw0rd123!@#"),
})
.res()
.status(HttpStatus.BAD_REQUEST)
.body({
error: field("Error message", "username is required"),
})
})
},
)
```

[examples directory]: https://github.com/do-pa/itdoc/tree/develop/examples

> - If you are using Express, please refer to the [Quick Start Guide].
> - If you are using NestJS, please refer to the [Quick Start Guide] and [NestJS guide].
> - If you are using fastify, please refer to the [Quick Start Guide] and [fastify guide].

[Quick Start Guide]: https://itdoc.kr/docs/guides/quick-start
[NestJS guide]: https://itdoc.kr/docs/guides/framework-guide/#nestjs-example
[fastify guide]: https://itdoc.kr/docs/guides/framework-guide/#fastify-example

## Running Tests

Since `describeAPI()` and `itdoc()` integrate seamlessly with testing frameworks like
[Jest](https://jestjs.io/docs/getting-started) and [Mocha](https://mochajs.org/#getting-started),
you can simply use your existing test commands such as `mocha .` or `jest .` without any changes.

## Contributing

We welcome contributions! Please open an issue or submit a pull request. See
[CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

## License

This project is licensed under the terms of the [Apache 2.0 License](LICENSE.txt).