Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
jest-process-manager
Advanced tools
Starts a server before your Jest tests and tears it down after.
This project was forked because the package jest-dev-server
is no longer maintained.
Starts a server before your Jest tests and tears it down after.
jest-playwright-preset
or jest-puppeteer
works great for running tests in Jest using your preferred end-to-end testing library.
It's also useful for starting a local development server during the tests without letting Jest hang.
This package extracts just the local development server spawning without any ties to Puppeteer.
npm install --save-dev jest-process-manager
jest-process-manager
exports setup
,teardown
and getServers
functions.
// global-setup.js
const { setup: setupDevServer } = require('jest-process-manager')
module.exports = async function globalSetup() {
await setupDevServer({
command: `node config/start.js --port=3000`,
launchTimeout: 50000,
port: 3000,
})
// Your global setup
}
It is also possible to specify several servers:
// global-setup.js
const { setup: setupDevServer } = require('jest-process-manager')
module.exports = async function globalSetup() {
await setupDevServer([
{
command: 'node server.js',
port: 4444,
},
{
command: 'node server2.js',
port: 4445,
},
])
// Your global setup
}
// global-setup.js
const { setup: setupDevServer, getServers } = require('jest-process-manager')
module.exports = async function globalSetup() {
await setupDevServer({
command: `node config/start.js --port=3000`,
launchTimeout: 50000,
port: 3000,
})
getServers.then(servers => {
// You can get to the servers and do whatever you want
})
// Your global setup
}
// global-teardown.js
const { teardown: teardownDevServer } = require('jest-process-manager')
module.exports = async function globalTeardown() {
await teardownDevServer()
// Your global teardown
}
command
Type: string
, required.
Command to execute to start the port.
Directly passed to spawnd
.
module.exports = {
command: 'npm run start',
}
debug
Type: boolean
, default to false
.
Log server output, useful if server is crashing at start.
module.exports = {
command: 'npm run start',
debug: true,
}
launchTimeout
Type: number
, default to 5000
.
How many milliseconds to wait for the spawned server to be available before giving up.
Defaults to wait-port
's default.
module.exports = {
command: 'npm run start',
launchTimeout: 30000,
}
Following options are linked to spawnd
.
host
Type: string
, default to localhost
.
Host to wait for activity on before considering the server running.
Must be used in conjunction with port
.
module.exports = {
command: 'npm run start --port 3000',
host: 'customhost.com',
port: 3000,
}
protocol
Type: (https
, http
, http-get
, https-get
, tcp
, socket
) default to tcp
.
To wait for an HTTP or TCP endpoint before considering the server running, include http
or tcp
as a protocol.
Must be used in conjunction with port
.
This give you ability to define resource prefix for wait-on
package.
module.exports = {
command: 'npm run start --port 3000',
protocol: 'http',
port: 3000,
}
port
Type: number
, default to 3000
.
Port to wait for activity on before considering the server running. If not provided, the server is assumed to immediately be running.
module.exports = {
command: 'npm run start --port 3000',
port: 3000,
}
basePath
Type: string
Option for a basePath where server is running.
module.exports = {
command: 'npm run start',
basePath: '/myservice',
}
usedPortAction
Type: string
(ask
, error
, ignore
, kill
) default to ask
.
It defines the action to take if port is already used:
ask
: a prompt is shown to decide if you want to kill the process or noterror
: an errow is thrownignore
: your test are executed, we assume that the server is already startedkill
: the process is automatically killed without a promptmodule.exports = {
command: 'npm run start --port 3000',
port: 3000,
usedPortAction: 'kill',
}
waitOnScheme
jest-dev-server
use the wait-on
npm package to wait for resources to become available before calling callback.
Type: object
, default to {}
.
delay
: optional initial delay in ms, default 0interval
: optional poll resource interval in ms, default 250mslog
: optional flag which outputs to stdout, remaining resources waited on and when complete or erroredreverse
: optional flag to reverse operation so checks are for resources being NOT available, default falsetimeout
: optional timeout in ms, default Infinity. Aborts with errortcpTimeout
: optional tcp timeout in ms, default 300msverbose
: optional flag which outputs debug output, default falsewindow
: optional stabilization time in ms, default 750ms. Waits this amount of time for file sizes to stabilize or other resource availability to remain unchangedNote: http(s) specific options, see https://github.com/request/request#readme for specific details
module.exports = {
command: 'npm run start --port 3000',
port: 3000,
usedPortAction: 'kill',
waitOnScheme: {
delay: 1000,
},
}
options
Options which will be passed down to the spawn of the process. For example environment variables:
// global-setup.js
const { setup: setupDevServer, getServers } = require('jest-process-manager')
module.exports = async function globalSetup() {
await setupDevServer({
command: `node config/start.js --port=3000`,
launchTimeout: 50000,
port: 3000,
options: {
env: {
"FOO": "bar",
}
}
})
getServers.then(servers => {
// You can get to the servers and do whatever you want
})
// Your global setup
}
port
makes the terminal to ask for root password although the port is valid and accessible then use usePortAction: 'ignore'
.https://github.com/playwright-community/jest-process-manager/blob/master/LICENSE
FAQs
Starts a server before your Jest tests and tears it down after.
We found that jest-process-manager demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.