diff --git a/tests/Dockerfile b/tests/Dockerfile
index 196716290b99b811a428672a1db77c06d4c54baa..94b32cd628e5fdaf4ae1b16dec2679aa3b935b32 100644
--- a/tests/Dockerfile
+++ b/tests/Dockerfile
@@ -4,3 +4,4 @@ RUN apt update -y && \
     apt-get clean -y
 USER pwuser
 RUN mkdir /home/pwuser/app
+RUN mkdir /home/pwuser/app/.npm
diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml
index 929537c30120589c2752cce68b638eea05eeb055..00c070df1a5780f2d79dde2437d1c8f595ee1add 100644
--- a/tests/docker-compose.yml
+++ b/tests/docker-compose.yml
@@ -119,6 +119,8 @@ services:
     working_dir: /home/pwuser/app
     user: pwuser
     env_file: [env]
+    environment:
+      NPM_CI_ARGS: --cache .npm --prefer-offline
     command:
       - '-c'
       - |
@@ -128,6 +130,7 @@ services:
         wait-for-it -t 0 -h "$TANK_HOST" -p "$TANK_PORT"
         make test-local
     volumes:
+      - npm_cache:/home/pwuser/app/.npm
       - ../public/:/home/pwuser/app/public/
       - ../src/:/home/pwuser/app/src/
       - ../tests/:/home/pwuser/app/tests/
@@ -149,3 +152,6 @@ services:
       - ../tsconfig.json:/home/pwuser/app/tsconfig.json
       - ../vite.config.ts:/home/pwuser/app/vite.config.ts
       - ../vitest.config.ts:/home/pwuser/app/vitest.config.ts
+
+volumes:
+  npm_cache: