har-to-k6
Tool for converting HAR recordings to k6 test scripts.
Content
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:
$ 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
$ npm install --global har-to-k6
Docker
$ docker pull grafana/har-to-k6:latest
Usage
CLI Usage
Npx
$ npx har-to-k6 archive.har -o my-k6-script.js
From node_modules
$ ./node_modules/.bin/har-to-k6 archive.har -o my-k6-script.js
Global
$ har-to-k6 archive.har -o my-k6-script.js
Docker
$ docker run grafana/har-to-k6:latest archive.har > my-k6-script.js
Programmatic Usage
Converting
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.
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
import { liHARToK6Script } from "har-to-k6";
CommonJS style
const { liHARToK6Script } = require("har-to-k6");
Using a <script> tag
Load standalone.js into your HTML page:
<html>
<head>
<title>HAR Converter</title>
<script src="standalone.js"></script>
<script src="index.js"></script>
</head>
</html>
Example
The API is available:
async function run () {
const archive = readArchive();
harToK6.validate(archive);
const { main } = await harToK6.liHARToK6Script(archive);
displayResult(main);
}
Specifications
- LI-HAR - Static configuration format representing a K6 script
- LI-HAR to K6 converter - JavaScript package or function that converts a given LI-HAR to a K6 script
- LI-HAR to K6 CLI tool - a Node.js CLI tool exposing an interface for converting a given LI-HAR to a K6 script
Credits
Thanks to bookmoons for creating this tool 🎉
Publishing a new release
This package uses NPM Trusted Publishing. To publish a new release:
- Update the version in
package.jsonwithnpm version patch|minor|major. - Open a new PR with the version change.
- Once it's approved and merged, manually draft a new release in GitHub.
- Once the release is ready to be published, the release.yml workflow will be triggered.
- Check Dockerhub and NPM for the new version.
