@knapsack-pro/jest
Speed up your tests
Run your 1-hour test suite in 2 minutes with optimal parallelisation on your existing CI infrastructure
Knapsack Pro wraps Jest and works with your existing CI infrastructure to parallelize tests optimally:
- Dynamically splits your tests based on up-to-date test execution data
- Is designed from the ground up for CI and supports all of them
- Tracks your CI builds to detect bottlenecks
- Does not have access to your source code and collects minimal test data
- Enables you to export historical metrics about your CI builds
- Replaces local dependencies like Redis with an API and runs your tests regardless of network problems
Installation
See the docs to get started:
Contributing
Requirements
>= Node 18.13.0 LTS
You can use NVM to manage Node versions in development.
Dependencies
Setup
-
Setup the @knapsack-pro/core project.
Follow the steps below or use the bin/setup_development
script to take care of steps 2-5.
-
Install the dependencies:
npm install
-
In order to use the local version of @knapsack-pro/core
run:
npm link @knapsack-pro/core
-
Compile the TypeScript code to the lib
directory by running:
npm start
-
Register the @knapsack-pro/jest
package globally in your local system. This way we will be able to develop other npm packages dependent on it:
npm link
-
Set up your IDE:
-
Visual Studio Code
-
Install the following plugins:
-
Go to File > Preferences > Settings > Text Editor > Formatting
Turn on Format On Save
checkbox.
From now on, every change in the codebase will be automatically formatted by Prettier. ESLint shows errors and warnings in VSCode.
-
Write some code.
Testing
CI
If your feature requires code changes in @knapsack-pro/core, please push the @knapsack-pro/core
to GitHub first. Then you can push changes for @knapsack-pro/jest
to ensure the CI will use the latest @knapsack-pro/core
.
Example Jest test suite
To test @knapsack-pro/jest
against a real test suite we use:
Publishing
-
Sign in to the npm registry with:
npm adduser
-
Ensure you have the latest version of @knapsack-pro/core
in package.json
:
{
"dependencies": {
"@knapsack-pro/core": "^x.x.x"
}
}
Run npm install
. This way you will be able to test @knapsack-pro/core
installed from npm registry instead of the local one that was linked with npm link @knapsack-pro/core
.
Commit the updated package.json
and package-lock.json
:
git commit -am "Update @knapsack-pro/core"
-
Before releasing a new version of the package, please update CHANGELOG.md
with github_changelog_generator
:
gem install github_changelog_generator
github_changelog_generator --user KnapsackPro --project knapsack-pro-jest
git commit -am "Update CHANGELOG.md"
git push origin master
-
If you have added new files to the repository, and they should be part of the released npm package, please ensure they are included in the files
array in package.json
.
-
Compile the project:
npm link @knapsack-pro/core
npm run build
-
In order to bump the version of the package run the command below. It will also create a version commit and tag for the release:
npm version patch
npm version minor
-
Push the commit and tag:
git push origin master --tags
-
When the git tag is on Github, you can update CHANGELOG.md
:
github_changelog_generator --user KnapsackPro --project knapsack-pro-jest
git commit -am "Update CHANGELOG.md"
git push origin master
-
Publish the package to the npm registry:
npm publish
-
Update the latest available library version in: