diff --git a/.github/file-paths.yaml b/.github/file-paths.yaml
index d88ab4665cad14585097600183a9b3004ebd6f4a..f1a2e0a2ad5104cd1eda5aab20197a598bbb28d0 100644
--- a/.github/file-paths.yaml
+++ b/.github/file-paths.yaml
@@ -130,3 +130,9 @@ visualizations:
   - "frontend/src/metabase/visualizations/**"
   - "frontend/src/metabase/static-viz/**"
   - "src/metabase/pulse/**"
+
+cljs:
+  - *shared_sources
+  - *shared_specs
+  - ".github/workflows/cljs.yml"
+  - "shadow-cljs.edn"
diff --git a/.github/workflows/cljs.yml b/.github/workflows/cljs.yml
index 388d728fc610fd51d221ed7da0736cb599d018ab..2ce57460a4e38fb1eea4249d61911f69a6fa8983 100644
--- a/.github/workflows/cljs.yml
+++ b/.github/workflows/cljs.yml
@@ -12,8 +12,24 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
+  files-changed:
+    name: Check which files changed
+    runs-on: ubuntu-22.04
+    timeout-minutes: 3
+    outputs:
+      cljs: ${{ steps.changes.outputs.cljs }}
+    steps:
+      - uses: actions/checkout@v3
+      - name: Test which files changed
+        uses: dorny/paths-filter@v2.11.1
+        id: changes
+        with:
+          token: ${{ github.token }}
+          filters: .github/file-paths.yaml
 
   shared-tests-cljs:
+    needs: files-changed
+    if: needs.files-changed.outputs.cljs == 'true'
     runs-on: ubuntu-22.04
     timeout-minutes: 15
     steps: