← Back to facebook/jest

How to Deploy & Use facebook/jest

Jest Testing Framework - Deployment and Usage Guide

Prerequisites

  • Node.js (version 12.0.0 or higher)
  • npm (version 6.0.0 or higher) or yarn (version 1.0.0 or higher)
  • Git for cloning the repository

Installation

1. Clone the Repository

git clone https://github.com/jestjs/jest.git
cd jest

2. Install Dependencies

# Using npm
npm install

# Using yarn
yarn install

3. Build the Project

# Using npm
npm run build

# Using yarn
yarn build

Configuration

Environment Variables

Jest doesn't require specific environment variables for basic usage. However, for development and testing:

  • NODE_ENV=test - Jest automatically sets this when running tests
  • CI=true - Set this in CI environments to disable interactive features

Configuration Files

Jest can be configured via:

  1. package.json - Add a jest section
  2. jest.config.js - JavaScript configuration file
  3. jest.config.json - JSON configuration file
  4. jest.config.ts - TypeScript configuration file

Generate Configuration

# Using npm
npm init jest

# Using yarn
yarn create jest

This will prompt you with questions about your project and generate an appropriate configuration file.

Build & Run

Running Tests

# Run all tests
npm test

# Run tests in watch mode
npm test -- --watch

# Run tests with coverage
npm test -- --coverage

# Run specific test files
npm test path/to/test.test.js

Development Server

Jest doesn't have a traditional development server since it's a testing framework. To run tests during development:

# Watch mode for continuous testing
npm test -- --watch

Production Build

# Build the Jest package
npm run build

Deployment

Jest is a testing framework, not a deployable application. However, you can deploy Jest as part of your project's CI/CD pipeline:

GitHub Actions

# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

Docker

# Dockerfile
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "test"]

Build and run:

docker build -t jest-test .
docker run jest-test

CI/CD Platforms

Jest works seamlessly with popular CI/CD platforms:

  • Travis CI: Add npm test to your .travis.yml
  • CircleCI: Add npm test to your config.yml
  • GitLab CI: Add npm test to your .gitlab-ci.yml

Troubleshooting

Common Issues and Solutions

1. Tests Not Running

Issue: npm test doesn't run any tests

Solution: Ensure your test files match the pattern in your Jest configuration (default: *.test.js, *.spec.js, __tests__/)

2. Babel Configuration Issues

Issue: Tests fail with syntax errors

Solution: Install and configure Babel:

npm install --save-dev babel-jest @babel/core @babel/preset-env

Create babel.config.js:

module.exports = {
  presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};

3. Timeout Errors

Issue: Tests timeout during execution

Solution: Increase the timeout in your Jest configuration:

// jest.config.js
module.exports = {
  testTimeout: 10000, // 10 seconds
};

4. Module Resolution Issues

Issue: Cannot find module errors

Solution: Configure module directories in your Jest config:

// jest.config.js
module.exports = {
  moduleDirectories: ['node_modules', 'src'],
  modulePaths: ['<rootDir>/src'],
};

5. Coverage Not Generating

Issue: Coverage reports not generated

Solution: Ensure coverage is enabled:

npm test -- --coverage

Or in your config:

// jest.config.js
module.exports = {
  collectCoverage: true,
};

6. Watch Mode Not Working

Issue: Watch mode doesn't detect file changes

Solution: Check your file watching configuration:

// jest.config.js
module.exports = {
  watchPlugins: [
    'jest-watch-typeahead/filename',
    'jest-watch-typeahead/testname',
  ],
};

Getting Help