Welcome to the Verdaccio Testing Environments Nx Plugin β your one-stop solution for running blazingly fast, isolated, and scalable end-to-end (e2e) tests with zero configuration. Yeah, you heard that right: ZERO configuration.
With this plugin, say goodbye to the old days of waiting around for your tests and hello to next-level speed. Plug it in, and you're good to go.
Key Features:
- βοΈ ZERO Config β You wonβt need any global setup or teardown scripts.
- π₯ BRUTALLY FAST β Up to β‘110x fasterβ‘ than traditional setups. Yes, you read that right.
- π‘οΈ Isolated β No more conflicts with local file systems. Everythingβs clean.
- π Scalable β Run your tests in parallel, no matter how big your project.
- π Optimized β We cache everything we can, so your tests run faster over time.
- β‘ Developer Experience β Streamlined and simplified. You focus on the code, we handle the setup.
- π§ͺ Easier Debugging β Debugging e2e tests is now a piece of cake π°.
Small Project (4 packages) | Common Setup | Optimized Setup | [x] times faster | [%] percent faster |
---|---|---|---|---|
Worst Case Execution Time | 110 s | 13 s | 8.46x faster | 746% |
Best Case Execution Time | 110 s | 1 s | 110x faster | 11000% |
Default Test Architecture | Decoupled Test Architecture |
---|---|
Default Task Architecture | Decoupled Task Architecture |
---|---|
Default Testing Dx | Cacheable Testing Dx |
---|---|
Default Debug Dx | Excellent Debug Dx |
---|---|
{
"plugins": [
{
"plugin": "@push-based/nx-verdaccio",
"options": {
"environments": {
"environmentsDir": "tmp/environments", // Optional
"targetNames": ["e2e"] // Optional
}
}
}
]
}
Note
Your configured targets now has a new dependency configured:
{
"name": "utils-e2e",
"targets": {
"e2e": {
"dependsOn": [
// dynamically aded
{ "target": "env-setup", "params": "forward" }
]
// ...
}
}
// ...
}
Let the plugin detect your implicit dependencies:
// projects/utils-e2e/project.json
{
"name": "utils-e2e",
"implicitDependency": ["utils"]
}
nx run utils-e2e:e2e
Tadaaaa! π Youβre now testing at light speed!
Name | type | description |
---|---|---|
environments.environmentsDir | string (DEFAULT 'tmp/environments' ) |
Directory for environment storage. |
environments.targetNames | string[] (REQUIRED) |
Target names for environment-based projects. |
environments.filterByTag | string[] (REQUIRED) |
Only consider projects with these tags for environment setup. |
publishable.filterByTag | string[] (REQUIRED) |
Only consider projects with these tags for publishing targets. |
Out of the box, all library-type projects get these targets:
nx-verdaccio--pkg-publish
nx-verdaccio--pkg-install
But if you want to narrow it down:
{
"plugins": [
{
"plugin": "@push-based/nx-verdaccio",
"options": {
"packages": {
"filterByTags": ["publishable"]
}
}
}
]
}
Tag your projects accordingly:
// projects/utils/project.json
{
"name": "utils",
//
"tags": ["publishable"]
// ...
}
Want more control over which projects get their environments set up?
{
"plugins": [
{
"plugin": "@push-based/nx-verdaccio",
"options": {
"environments": {
"targetNames": ["e2e", "e2e-static"]
}
}
}
]
}
Filter projects by tags to apply environment setup:
{
"plugins": [
{
"plugin": "@push-based/nx-verdaccio",
"options": {
"environments": {
"filterByTags": ["npm-env"]
}
}
}
]
}
Tag those projects accordingly:
// projects/utils/project.json
{
"name": "lib-e2e",
//
"tags": ["npm-env"]
// ...
}
Example Usage:
- Run the E2E test for
utils-e2e
:
nx run utils-e2e:e2e
- Run E2E with specific environments:
nx run utils-static-e2e:e2e --environmentRoot static-environments/user-lists
This is a first draft of how the benchmarks will look. ATM the data set it not big proper.
[!warn] The data is a first draft of the structure and does not reflect a clean data set. Work on the real benchmark data in progress
cli:e2e | Common | Optimized | [x] times faster | [%] percent faster |
---|---|---|---|---|
Execution Time - Worse case | 110 s | 13 s | 8.46 times faster | 746% |
Execution Time - Best case | 110 s | 1 s | 110 | 11000% |
Download Volume | 381 MB | 381 MB | 0% | 0% |
Cacheable | β | β | n/a | n/a |
Graph Nodes | 1 | 13 | n/a | n/a |
Parallelism | β | β | n/a | n/a |