Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grafana/k6-rollup-example
Example using `Rollup` to bundle k6 tests and release a shared library.
https://github.com/grafana/k6-rollup-example
k6 rollup
Last synced: 2 months ago
JSON representation
Example using `Rollup` to bundle k6 tests and release a shared library.
- Host: GitHub
- URL: https://github.com/grafana/k6-rollup-example
- Owner: grafana
- License: apache-2.0
- Created: 2024-01-18T11:53:42.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-01-26T18:15:06.000Z (11 months ago)
- Last Synced: 2024-09-28T15:01:39.443Z (2 months ago)
- Topics: k6, rollup
- Language: JavaScript
- Homepage:
- Size: 43.9 KB
- Stars: 4
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-k6 - k6-rollup-example - Example using Rollup to bundle k6 tests. (Examples/Templates)
- awesome-k6 - k6-rollup-example - Example using Rollup to bundle k6 tests. (Examples/Templates)
README
In this example, we are using [Rollup](https://rollupjs.org/) to bundle k6 tests and an internal library for demo purposes.
## Content
### Test project
The [tests](./tests/) folder is our testing project. It includes all tests, test dependencies, and project dependencies like `Rollup`. Its [`rollup.config.js`](./tests/rollup.config.js) is set up to:
- Bundle up test modules located in `node_modules`.
- Polyfill ES+ features that k6 doesn't natively support.### Shared library
The [test-commons](./test-commons) folder contains a library that's imported in the test project. It's [`rollup.config.js`](./test-commons/rollup.config.js) bundles the library as ES modules.
This project includes a [GH action](./github/workflows/release.yml) that bundles and releases the library as assets in the [project release](https://github.com/grafana/k6-rollup-example/releases). Then, you can import this version from the k6 tests as remote modules, just like in [import-remote-test.js](./tests/remotes/import-remote-test.js).
```js
import { WorkloadConfig, sayHello } from 'https://github.com/grafana/k6-rollup-example/releases/download/v0.0.1/index.js';
```Alternatively, `test-commons` could be distributed as a npm-based project and configured as a dependency like in [tests/package.json](./tests/package.json). Then, you can import it as in [import-npm-test.js](./tests/samples/import-npm-test.js).
```js
import { WorkloadConfig, sayHello } from 'test-commons';
```## Installation
First, ensure you've got [k6 installed](https://grafana.com/docs/k6/latest/get-started/installation/). Then, set up the dependencies of the testing project:
```bash
cd tests
npm install
```## Usage
To confirm the usage of remote modules, visit [import-remote-test.js](./tests/remotes/import-remote-test.js) and run the test.
However, attempting to run the tests in [samples](./tests/samples/) will fail because:
- k6 does not know how to resolve the `test-commons` module.
- k6 does not recognize some ES+ features like the optional chaining ( `?.` ) operator.To address this, we'll use `Rollup` to bundle the dependency and polyfill ES+ features.
```bash
cd tests## To bundle all the tests
npm run rollup# Or just one test
npm run rollup -- --input samples/babel/optional-chaining-test.js
```You should see rollup bundling tests into the `dist` folder, like this:
```bash
samples/import-npm-test.js → dist...
created dist in 76ms...
```Now we're all set! Check out the `dist` folder. We can now run the tests as usual:
```bash
k6 run dist/optional-chaining-test.js
```