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:
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 |
---|---|
nx.json
:{
"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:
utils-e2e
:nx run utils-e2e:e2e
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 |