npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jest-process-manager

v0.4.0

Published

Starts a server before your Jest tests and tears it down after.

Downloads

4,183,141

Readme

jest-process-manager

This project was forked because the package jest-dev-server is no longer maintained.

CI npm

Starts a server before your Jest tests and tears it down after.

Why

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.

Install

npm install --save-dev jest-process-manager

Usage

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
}

Options

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 not
  • error: an errow is thrown
  • ignore: your test are executed, we assume that the server is already started
  • kill: the process is automatically killed without a prompt
module.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 0
  • interval: optional poll resource interval in ms, default 250ms
  • log: optional flag which outputs to stdout, remaining resources waited on and when complete or errored
  • reverse: optional flag to reverse operation so checks are for resources being NOT available, default false
  • timeout: optional timeout in ms, default Infinity. Aborts with error
  • tcpTimeout: optional tcp timeout in ms, default 300ms
  • verbose: optional flag which outputs debug output, default false
  • window: 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

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
}

Troubleshooting

  • If using port makes the terminal to ask for root password although the port is valid and accessible then use usePortAction: 'ignore'.

License

https://github.com/playwright-community/jest-process-manager/blob/master/LICENSE