Skip to content

Cypress downloads a browser and an app binary per version, and keeps them all

Test tooling installs full browsers outside your project. Where each runner stores them and the prune commands that exist.

4 min read

Test tooling has the same shape as Playwright's browsers: the tool is small, and what it downloads is not. Each version pins its own binary, upgrading adds rather than replaces, and nothing prunes the old ones.

Where each runner keeps things

du -sh ~/Library/Caches/Cypress ~/Library/Caches/ms-playwright \
  ~/.cache/selenium ~/.cache/puppeteer 2>/dev/null | sort -h
ToolLocationPrune command
Cypress~/Library/Caches/Cypresscypress cache prune
Playwright~/Library/Caches/ms-playwrightnpx playwright uninstall --all
Puppeteer~/.cache/puppeteerRemove old version folders
Selenium Manager~/.cache/seleniumRemove old driver folders
Jest$TMPDIR/jest_*jest --clearCache

Cypress is the largest of them

Each cached Cypress version is a full application bundle, several hundred megabytes, and the cache keeps one per version any project has ever used. cypress cache list prints them with their last used date, which makes the decision easy:

npx cypress cache list
npx cypress cache prune   # keeps only the version currently installed

Jest and the temporary folder

Jest caches transformed modules in the per user temporary directory rather than in your project, which means it is cleared on restart and is rarely worth chasing. If it is large, jest --clearCache empties it, and the temp folder it lives in is worth understanding once.

On CI machines and shared Macs

A Mac used as a build machine accumulates every version every branch has ever pinned. Adding a prune step to the pipeline is far more effective than clearing it by hand every few months, and the commands above are all safe to run unattended.

Common questions

Where does Cypress store its binaries on a Mac?

In ~/Library/Caches/Cypress, one folder per version, each a full application bundle of several hundred megabytes. Run cypress cache list to see them with their last used dates.

How do I clear the Cypress cache?

Run npx cypress cache prune to keep only the version currently installed, or npx cypress cache clear to remove everything. Pruning avoids a redownload before your next test run.

Do test runners share downloaded browsers?

No. Cypress, Playwright, Puppeteer and Selenium each keep their own cache in a different location, so a project using two of them stores two sets of browsers.

Where is the Jest cache?

In the per user temporary directory rather than in your project, so it is cleared on restart. jest --clearCache empties it if it has grown between reboots.

Read next