# @octokit/fixtures-server

> Fixtures server for browser & language agnositic octokit testing

Latest version **8.1.7** (published 2025-12-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install @octokit/fixtures-server
pnpm add @octokit/fixtures-server
yarn add @octokit/fixtures-server
bun add @octokit/fixtures-server
```

Provides the command `octokit-fixtures-server`.

## Health

**Score 60/100 (C)** — status: stable.

Positive: esm support; no vulnerabilities; has provenance; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 8.1.7 |
| Published | 2025-12-02 |
| First published | 2018-02-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 8 |
| Unpacked size | 17.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 29 |
| Author | Gregor Martynus |
| Maintainers | octokitbot |

## Links

- npm: https://www.npmjs.com/package/@octokit/fixtures-server
- Repository: https://github.com/octokit/fixtures-server
- Homepage: https://github.com/octokit/fixtures-server#readme
- Issues: https://github.com/octokit/fixtures-server/issues
- npm.io page: https://npm.io/package/@octokit/fixtures-server

## Dependencies (8)

- [cors](https://npm.io/package/cors.md) ^2.8.4
- [yargs](https://npm.io/package/yargs.md) ^17.0.0
- [cachimo](https://npm.io/package/cachimo.md) ^2.0.1
- [express](https://npm.io/package/express.md) ^5.0.0
- [tinyglobby](https://npm.io/package/tinyglobby.md) ^0.2.14
- [@octokit/fixtures](https://npm.io/package/@octokit/fixtures.md) 23.1.1
- [console-log-level](https://npm.io/package/console-log-level.md) ^1.4.0
- [http-proxy-middleware](https://npm.io/package/http-proxy-middleware.md) ^3.0.0

## Recent versions

- 8.1.7 (latest) — 2025-12-02
- 8.1.6 — 2025-05-27
- 8.1.5 — 2025-05-27
- 8.1.4 — 2025-04-08
- 8.1.3 — 2024-07-15
- 8.1.2 — 2024-07-09
- 8.1.1 — 2024-04-10
- 8.1.0 — 2024-04-03
- 8.0.1 — 2024-03-26
- 8.0.0 — 2024-02-18
- 7.0.10 — 2023-04-13
- 7.0.9 — 2023-03-07
- 7.0.8 — 2022-11-09
- 7.0.7 — 2022-11-08
- 7.0.6 — 2022-07-19
- … 61 more at https://npm.io/package/@octokit/fixtures-server/versions

## README

# fixtures-server

> Fixtures server for browser & language agnostic octokit testing

[![Test](https://github.com/octokit/fixtures-server/workflows/Test/badge.svg?branch=main)](https://github.com/octokit/fixtures-server/actions?query=workflow%3ATest+branch%3Amain)

The Octokit Fixtures Server is proxies requests to the mocked routes
provided by [@octokit/fixtures](https://github.com/octokit/fixtures).

- [Usage](#usage)
- [How it works](HOW_IT_WORKS.md)
- [Contributing](CONTRIBUTING.md)
- [License](#license)

## Usage

1. Load a fixture. All folder names at [@octokit/fixtures/scenarios/api.github.com](https://github.com/octokit/fixtures/tree/main/scenarios/api.github.com/)
   are valid values for `scenario`.

   ```
   curl -XPOST -H'Content-Type: application/json' http://localhost:3000/fixtures -d '{"scenario": "get-repository"}'
   ```

   The response looks something like this

   ```json
   {
     "id": "fixturesid123",
     "url": "http://localhost:3000/api.github.com/fixturesid123/api.github.com/fixturesid123"
   }
   ```

2. Send a request to the returned `url` as if it was https://api.github.com.

   ```
   curl -H'Authorization: token 0000000000000000000000000000000000000001' -H'Accept: application/vnd.github.v3+json' http://localhost:3000/api.github.com/fixturesid123/repos/octokit-fixture-org/hello-world
   ```

After that request the fixture is "consumed". That allows for different responses for the same requests based on order.

If you want to load custom fixtures, you'll have to use `@octokit/fixtures-server` as [standalone server](#standaloneserver)
or as as [express middleware](#expressmiddleware).

### Standalone Server

Download binary for your os from the [latest release](https://github.com/octokit/fixtures-server/releases/latest).

Alternatively, you can also install `@octokit/fixtures-server` as a global npm package, if you prefer that:

```
npm install --global @octokit/fixtures-server
```

By default the server runs at http://localhost:3000

```
octokit-fixtures-server
```

<a name="standalone-server-options"></a>

#### Options

<!-- Edit at http://www.tablesgenerator.com/markdown_tables -->

| CLI option     | ENV variable | default                                                                 | description                                                                                                                              |
| -------------- | ------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| --port         | PORT         | `3000`                                                                  | Server port number                                                                                                                       |
| --fixtures-url | FIXTURES_URL | `'http://localhost:<port>'`                                             | URL to handle fixture requests (This helps with continuous deployments)                                                                  |
| --log-level    | LOG_LEVEL    | `'info'`                                                                | One of `'debug'`, `'info'`, `'warn'`, `'error'`, `'silent'`                                                                              |
| --ttl          | TTL          | `60000`                                                                 | Expiration time for loaded fixtures in ms                                                                                                |
| --fixtures     | FIXTURES     | `'node_modules/@octokit/fixtures/scenarios/**/normalized-fixture.json'` | glob path to load JSON fixture files recorded with nock. Make sure to wrap the value with quotes, e.g. `--fixtures='./scenarios/*.json'` |

### Express Middleware

```js
const express = require("express");
const app = express();

const fixturesServer = require("@octokit/fixtures-server");
app.use(
  fixturesServer({
    fixtures: {
      "my-scenario": require("./scenarios/my-scenario.json"),
    },
  }),
);

app.listen(3000);
```

#### Options

| Option        | Default                                                                                                                            | Description                                                                    |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `fixturesUrl` | `'http://localhost:<port>'`                                                                                                        | URL to handle fixture requests (This helps with continuous deployments)        |
| `logLevel`    | `'info'`                                                                                                                           | One of `'debug'`, `'info'`, `'warn'`, `'error'`, `'silent'`                    |
| `ttl`         | `60000`                                                                                                                            | Expiration time (time to live) for loaded fixtures in ms                       |
| `fixtures`    | fixtures from [@octokit/fixtures/scenarios/api.github.com](https://github.com/octokit/fixtures/tree/main/scenarios/api.github.com) | Object with keys being the scenario names and values being the fixtures arrays |

## License

[MIT](LICENSE.md)

---
_Source: https://npm.io/package/@octokit/fixtures-server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
