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-managerjest-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
}Type: string, required.
Command to execute to start the port.
Directly passed to spawnd.
module.exports = {
command: 'npm run start',
}Type: boolean, default to false.
Log server output, useful if server is crashing at start.
module.exports = {
command: 'npm run start',
debug: true,
}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.
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,
}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,
}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,
}Type: string
Option for a basePath where server is running.
module.exports = {
command: 'npm run start',
basePath: '/myservice',
}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 prompt
module.exports = {
command: 'npm run start --port 3000',
port: 3000,
usedPortAction: 'kill',
}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 unchanged
Note: 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 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
}- If using
portmakes the terminal to ask for root password although the port is valid and accessible then useusePortAction: 'ignore'.
https://github.com/playwright-community/jest-process-manager/blob/master/LICENSE