Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/grafana/har-to-k6

JSON config representation of K6 script
https://github.com/grafana/har-to-k6

har k6-converter

Last synced: 2 months ago
JSON representation

JSON config representation of K6 script

Awesome Lists containing this project

README

        

![har-to-k6 cover image](./assets/har-to-k6-cover.png)

# har-to-k6
Converts [LI-HAR](li-har.spec.md) and [HAR](https://w3c.github.io/web-performance/specs/HAR/Overview.html) to [K6 script](https://docs.k6.io/docs).

![GitHub Actions Status](https://github.com/grafana/har-to-k6/workflows/Release/badge.svg)
![NPM Version](https://img.shields.io/npm/v/har-to-k6.svg)
![NPM Weekly Downloads](https://img.shields.io/npm/dw/har-to-k6.svg)
![DockerHub](https://img.shields.io/docker/pulls/grafana/har-to-k6.svg)



## Content
- [Installation](#installation)
- [Local Installation (recommended)](#local-installation-recommended)
- [Global Installation](#global-installation)
- [Docker](#docker)
- [Usage](#usage)
- [CLI Usage](#cli-usage)
- [Programmatic Usage](#programmatic-usage)
- [Browser Usage](#browser-usage)
- [Specifications](#specifications)
- [Credits](#credits)

## Installation

### Local Installation (recommended)

While possible to install globally, we recommend that you, if possible, add the converter to the
`node_modules` of your test project using:

```shell
$ npm install --save har-to-k6
```

Note that this will require you to run the converter with `npx har-to-k6 your-har-file` or,
if you are using an older version of npm, `./node_modules/.bin/har-to-k6 your-har-file`.

### Global Installation

```shell
$ npm install --global har-to-k6
```

### Docker

```shell
$ docker pull grafana/har-to-k6:latest
```

## Usage

### CLI Usage

#### Npx
```shell
$ npx har-to-k6 archive.har -o my-k6-script.js
```

#### From `node_modules`

```shell
$ ./node_modules/.bin/har-to-k6 archive.har -o my-k6-script.js
```

#### Global

```shell
$ har-to-k6 archive.har -o my-k6-script.js
```

#### Docker

```shell
$ docker run grafana/har-to-k6:latest archive.har > my-k6-script.js
```

### Programmatic Usage

#### Converting

```js
const fs = require("fs");
const { liHARToK6Script } = require("har-to-k6");

async function run () {
const archive = readArchive();
const { main } = await liHARToK6Script(archive);
fs.writeFileSync("./load-test.js", main);
}
```

#### Validating

Use `validate()` to run validation alone. Returns without error for a valid
archive. Throws `InvalidArchiveError` for validation failure.

```js
const { InvalidArchiveError, validate } = require("har-to-k6");

const archive = readArchive();
try {
validate(archive);
} catch (error) {
if (error instanceof InvalidArchiveError) {
// Handle invalid archive
} else {
throw error;
}
}
```

### Browser Usage

`har-to-k6` can be ran in the browser. This exposes the standard
API under `harToK6`.

#### Importing as ES module
```javascript
import { liHARToK6Script } from "har-to-k6";
```

#### CommonJS style
```javascript
const { liHARToK6Script } = require("har-to-k6");
```

#### Using a `` tag

Load `standalone.js` into your HTML page:

```html
<html>
<head>
<title>HAR Converter</title>
<script src="standalone.js">