Alternatives: Honest Opinion
Jest running on Docker can be painfully slow, particularly on macOS. On Linux, the performance is generally much better—luckily, our CI/CD pipeline runs on Ubuntu, so the tests still execute swiftly there. For more context, you might want to check the Jest troubleshooting guide (opens in a new tab).
Performance Tips
To potentially improve test performance in Docker, you could try in package.json:
- Adding the
--runInBandflag to your Jest command. - Limiting parallel workers with
--maxWorkers=4.
However, your mileage may vary, and these adjustments might not always yield noticeable improvements.
Alternatives to Consider
Here are two options you might explore:
1. Skip Docker Compose for Local Development
Run the backend and postgres locally instead of containerizing it for development and testing. This often results in faster feedback when developing locally.
Step 1: Ensure that PostgreSQL is installed and running locally on your machine.
You can use pgAdmin 4 to manage and inspect your databases visually.
- Open pgAdmin 4:
- Verify that you have a default local PostgreSQL instance running. (This is not the container one)

- Update Your
.envFile:
- Configure your
DATABASE_URLin the root.envfile to connect to your local PostgreSQL database. Replace<password>with your actual PostgreSQL password.
DATABASE_URL="postgresql://postgres:<password>@localhost:5432/postgres?schema=public"This configuration assumes that you're using the default postgres database and user. If you're using a custom database name or user, replace postgres accordingly.
Step 2: Start the backend, run the following command from the root directory:
npm run dev2. Stick with Docker, but Make Adjustments
If you prefer to keep Docker Compose, you might:
- Switch to Mocha for testing, as it can be less resource-intensive in this setup.
- Run tests on a Linux system, like Ubuntu, which performs significantly better compared to macOS for Docker workloads.
Final Thoughts
Pick the approach that aligns best with your workflow and environment. Every setup has its pros and cons, so choose what helps you stay productive!