Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/szkiba/xk6-chai
Embed Chai.js (k6chaijs) into the k6 binary
https://github.com/szkiba/xk6-chai
chaijs xk6 xk6-javascript-k6-x-chai
Last synced: 2 months ago
JSON representation
Embed Chai.js (k6chaijs) into the k6 binary
- Host: GitHub
- URL: https://github.com/szkiba/xk6-chai
- Owner: szkiba
- License: apache-2.0
- Created: 2023-04-24T15:03:47.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-29T14:27:37.000Z (3 months ago)
- Last Synced: 2024-10-02T06:22:19.563Z (3 months ago)
- Topics: chaijs, xk6, xk6-javascript-k6-x-chai
- Language: Go
- Homepage:
- Size: 88.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Go Report Card](https://goreportcard.com/badge/github.com/szkiba/xk6-chai)](https://goreportcard.com/report/github.com/szkiba/xk6-chai)
[![GitHub Actions](https://github.com/szkiba/xk6-chai/workflows/Test/badge.svg)](https://github.com/szkiba/xk6-chai/actions?query=workflow%3ATest+branch%3Amaster)
[![codecov](https://codecov.io/gh/szkiba/xk6-chai/branch/master/graph/badge.svg?token=D43BZDXASS)](https://codecov.io/gh/szkiba/xk6-chai)# xk6-chai
A [k6](https://go.k6.io/k6) extension that embeds [Chai.js](https://www.chaijs.com/) (actually [k6chaijs](https://k6.io/docs/javascript-api/jslib/k6chaijs/) 4.3.4.3) into the k6 binary.
To use the extension, simply change the k6chaijs import path to `k6/x/chai`. This way, the test will not have runtime external JavaScript dependencies.
```js
import http from 'k6/http';
import { describe, expect } from 'k6/x/chai';export let options = {
thresholds: {
checks: [{ threshold: 'rate == 1.00', abortOnFail: true }],
http_req_failed: [{ threshold: 'rate == 0.00', abortOnFail: true }],
},
};export default function () {
describe('Get the answer from httpbin', () => {
const response = http.get('https://httpbin.test.k6.io/get?answer=42');expect(response.status, 'response status').to.equal(200);
expect(response).to.have.validJsonBody();
expect(response.json().args.answer, 'args.answer').to.equal('42');
});
}
```> **Note**
> This is a simple wrapper plugin. Making Chai.js k6 compatible is the credit of the k6 team.## Download
You can download pre-built k6 binaries from [Releases](https://github.com/szkiba/xk6-chai/releases/) page. Check [Packages](https://github.com/szkiba/xk6-chai/pkgs/container/xk6-chai) page for pre-built k6 Docker images.
## Build
You can build the k6 binary on various platforms, each with its requirements. The following shows how to build k6 binary with this extension on GNU/Linux distributions.
### Prerequisites
You must have the latest Go version installed to build the k6 binary. The latest version should match [k6](https://github.com/grafana/k6#build-from-source) and [xk6](https://github.com/grafana/xk6#requirements).
- [Git](https://git-scm.com/) for cloning the project
- [xk6](https://github.com/grafana/xk6) for building k6 binary with extensions### Install and build the latest tagged version
1. Install `xk6`:
```shell
go install go.k6.io/xk6/cmd/xk6@latest
```2. Build the binary:
```shell
xk6 build --with github.com/szkiba/xk6-chai@latest
```### Build for development
If you want to add a feature or make a fix, clone the project and build it using the following commands. The xk6 will force the build to use the local clone instead of fetching the latest version from the repository. This process enables you to update the code and test it locally.
```bash
git clone [email protected]:szkiba/xk6-chai.git && cd xk6-chai
xk6 build --with github.com/szkiba/xk6-chai@latest=.
```## Docker
You can also use pre-built k6 image within a Docker container. In order to do that, you will need to execute something like the following:
**Linux**
```plain
docker run -v $(pwd):/scripts -it --rm ghcr.io/szkiba/xk6-chai:latest run /scripts/script.js
```**Windows**
```plain
docker run -v %cd%:/scripts -it --rm ghcr.io/szkiba/xk6-chai:latest run /scripts/script.js
```## Example scripts
There are many examples in the [scripts](https://github.com/szkiba/xk6-chai/tree/master/scripts) directory that show how to use various features of the extension.