Run your 1-hour test suite in 2 minutes with optimal parallelisation on your existing CI infrastructure
Knapsack Pro wraps your current test runner(s) 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
See the docs to get started:
>= Node 18.13.0 LTS
You can use NVM to manage Node versions in development.
npm install
npm run build
# Need a second install to run:
# - npx @knapsack-pro/jest
# - npx @knapsack-pro/vitest
# - npx @knapsack-pro/cypress
# See https://github.com/npm/cli/issues/4591#issuecomment-1111557730
npm install
npm run test:core:coverage
npm run test:jest
npm run test:vitest
npm run test:cypress
npm run test:cra
You can find more example scripts in the nested packages/
.
Install the following plugins:
In File > Preferences > Settings > Text Editor > Formatting
, enable the Format On Save
checkbox.
# merge PR and pull or edit code
# if new files that should be part of the released npm package were added, please ensure they are included in the `files` array in `package.json`
# update CHANGELOG to move *unreleased* into the proper *version*
# LEVEL specifies the type of version increment: major, minor, patch
npm version LEVEL -w packages/core
git add --all
git commit -m "chore: prepare release"
git tag @knapsack-pro/[email protected]
git push origin main --tags
cd packages/core
npm run build
npm adduser # sign in to npm
npm publish
Replace PACKAGE with jest
, vitest
or cypress
. If core changed you'll need to update all of them.
# merge PR and pull or edit code
# if new files that should be part of the released npm package were added, please ensure they are included in the `files` array in `package.json`
# update CHANGELOG(s) to move *unreleased* into the proper *version*
# LEVEL specifies the type of version increment: major, minor, patch
npm version LEVEL -w packages/PACKAGE
npm install @knapsack-pro/core -w packages/jest
# make sure @knapsack-pro/core was updated in packages/jest/package.json (you can retry specifying the version [email protected])
npm install @knapsack-pro/core -w packages/vitest
# make sure @knapsack-pro/core was updated in packages/vitest/package.json (you can retry specifying the version [email protected])
npm install @knapsack-pro/core -w packages/cypress
# make sure @knapsack-pro/core was updated in packages/cypress/package.json (you can retry specifying the version [email protected])
git add --all
git commit -m "chore: prepare release"
git tag @knapsack-pro/[email protected] # can be multiple tags
git push origin main --tags
cd packages/PACKAGE
npm run build
npm adduser # sign in to npm
npm publish
npm install -D @knapsack-pro/jest -w packages/jest-example-test-suite
# make sure @knapsack-pro/jest was updated in packages/jest-example-test-suite/package.json (you can retry specifying the version [email protected])
npm run test:jest
npm install -D @knapsack-pro/vitest -w packages/vitest-example-test-suite
# make sure @knapsack-pro/vitest was updated in packages/vitest-example-test-suite/package.json (you can retry specifying the version [email protected])
npm run test:vitest
npm install -D @knapsack-pro/cypress -w packages/cypress-example-test-suite
# make sure @knapsack-pro/cypress was updated in packages/cypress-example-test-suite/package.json
npm run test:cypress
# since create-react-app-example is not a workspace (for now)
cd packages/create-react-app-example
npm install -D @knapsack-pro/jest
# make sure @knapsack-pro/jest was updated in packages/create-react-app-example/package.json
npm run test:cra
git add --all
git commit -m "deps(examples): update @knapsack-pro"
Remember to update TestSuiteClientVersionChecker
for the Knapsack Pro API repository.
Read the READMEs inside the nested packages/
:
- core
- jest
- vitest
- cypress
- jest-example-test-suite
- vitest-example-test-suite
- cypress-example-test-suite
- create-react-app-example
Before merging the Knapsack Pro packages into this monorepo, each one was hosted in a separate repository: