diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 30471286026c4a6859825511995f8517421fb590..48015d5ec2ab6abf230b51e0adbe840179d54305 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -99,7 +99,7 @@ update-knapsack:
     - export KNAPSACK_REPORT_PATH=knapsack/spinach_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
     - export KNAPSACK_GENERATE_REPORT=true
     - cp knapsack/spinach_report.json ${KNAPSACK_REPORT_PATH}
-    - knapsack spinach
+    - if ! knapsack spinach "-r rerun"; then bundle exec spinach -r rerun $(cat tmp/spinach-rerun.txt); fi
   artifacts:
     expire_in: 31d
     paths:
diff --git a/Gemfile b/Gemfile
index 563851c25f52d0f5f66c53d25a3f6ecdbe3ec075..5f754c1b66fe5d272781b42d27dfc3ce88f47ae5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -278,6 +278,7 @@ group :development, :test do
   gem 'rspec-rails',        '~> 3.5.0'
   gem 'rspec-retry',        '~> 0.4.5'
   gem 'spinach-rails',      '~> 0.2.1'
+  gem 'spinach-rerun-reporter', '~> 0.0.2'
 
   # Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
   gem 'minitest', '~> 5.7.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 60d434a1b69eb2992d0eb9e13cf0cdd4b822af4a..a9892d1c13006a44750907d8a79c92a6926631eb 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -700,6 +700,8 @@ GEM
       capybara (>= 2.0.0)
       railties (>= 3)
       spinach (>= 0.4)
+    spinach-rerun-reporter (0.0.2)
+      spinach (~> 0.8)
     spring (1.7.2)
     spring-commands-rspec (1.0.4)
       spring (>= 0.9.1)
@@ -962,6 +964,7 @@ DEPENDENCIES
   simplecov (= 0.12.0)
   slack-notifier (~> 1.2.0)
   spinach-rails (~> 0.2.1)
+  spinach-rerun-reporter (~> 0.0.2)
   spring (~> 1.7.0)
   spring-commands-rspec (~> 1.0.4)
   spring-commands-spinach (~> 1.1.0)