This repository provides a scaffolding project to start using TypeScript in your k6 scripts.
While JavaScript is great for a myriad of reasons, one area where it fall short is type safety and developer ergonomics. It's perfectly possible to write JavaScript code that will look OK and behave OK until a certain condition forces the executor into a faulty branch.
While it, of course, still is possible to shoot yourself in the foot with TypeScript as well, it's significantly harder. Without adding much overhead, TypeScript will:
- Improve the ability to safely refactor your code.
- Improve readability and maintainability.
- Allow you to drop a lot of the defensive code previously needed to make sure consumers are calling functions properly.
Creating a project from the template-typescript
template
To generate a TypeScript project that includes the dependencies and initial configuration, navigate to the template-typescript page and click Use this template.
Install dependencies
Clone the generated repository on your local machine, move to the project root folder and install the dependencies defined in package.json
npm install
To run a test written in TypeScript, we first have to transpile the TypeScript code into JavaScript and bundle the project
npm start
This command creates the final test files to the ./dist
folder.
Once that is done, we can run our script the same way we usually do, for instance:
k6 run dist/get-200-status-test.js
House rules for writing tests:
- The test code is located in
src
folder - The entry points for the tests need to have "test" word in the name to distinguish them from auxiliary files. You can change the entry here.
- If static files are required then add them to
./assets
folder. Its content gets copied to the destination folder (dist
) along with compiled scripts.
By default, k6 can only run ES5.1 JavaScript code. To use TypeScript, we have to set up a bundler that converts TypeScript to JavaScript code.
This project uses Babel
and Webpack
to bundle the different files - using the configuration of the webpack.config.js
file.
If you want to learn more, check out Bundling node modules in k6.