DEV Community

Molly Crendraven
Molly Crendraven

Posted on

4

Test splitting with Jest on CircleCI

One of our customers asked on Twitter, "How do I setup test splitting on CircleCI with Jest?"

This is briefly explain in the CircleCI docs, but I can see where it could be confusing.

I'm not the best writer, so I will let my code do the talking. This should serve as a good exercise in code documentation as well.

A portion of my package.json

  "scripts": {
    "test": "jest",
  },
  "jest": {
    "reporters": [
      "default",
      "jest-junit"
    ]
  },
  "jest-junit": {
    "outputDirectory": "test_results/junit"
  }
Enter fullscreen mode Exit fullscreen mode

My .circleci/config.json file

version: 2
jobs:
  build:
    parallelism: 3
    docker:
      # I want to make sure I know exactly what version I'm using
      - image: circleci/node:10.15.3

    working_directory: ~/repo

    steps:
      - checkout

      # Npm CI uses the package-lock.json file to ensure exact versions
      # This prevents changes and compromised upstream dependencies
      # from changing your project. It wipes the node_modules directory
      # so there is no need for a dependencies cache here.
      - run: npm ci

      # First we save the split test file names into an env
      # Then we pass that to jest
      - run:
          name: Run Jest tests using test splitting
          command: |
            TESTFILES=$(circleci tests glob "test/**/*.test.js" | circleci tests split --split-by=timings)
            npm test $TESTFILES

      - store_test_results:
          path: test_results

      - store_artifacts:
          path: test_results
          destination: test_results
Enter fullscreen mode Exit fullscreen mode

Hope this helps!

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs