diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 38df05f2af9..24c9f9a7cb6 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -209,9 +209,15 @@ jobs:
 
       - name: Plugin QUnit
         if: matrix.build_type == 'frontend' && matrix.target == 'plugins'
-        run: QUNIT_PARALLEL=3 bin/rake plugin:qunit['*','1200000']
+        run: QUNIT_WRITE_EXECUTION_FILE=1 QUNIT_PARALLEL=3 bin/rake plugin:qunit['*','1200000']
         timeout-minutes: 30
 
+      - uses: actions/upload-artifact@v3
+        if: matrix.build_type == 'frontend' && matrix.target == 'plugins'
+        with:
+          name: ember-exam-execution-plugins-frontend-${{(matrix.embroider == '1') && 'embroider' || 'classic'}}
+          path: ./app/assets/javascripts/discourse/test-execution-*.json
+
       - name: Ember Build for System Tests
         if: matrix.build_type == 'system'
         run: bin/ember-cli --build
diff --git a/lib/tasks/qunit.rake b/lib/tasks/qunit.rake
index a89167bbb61..91ed4f86765 100644
--- a/lib/tasks/qunit.rake
+++ b/lib/tasks/qunit.rake
@@ -114,6 +114,7 @@ task "qunit:test", %i[timeout qunit_path filter] do |_, args|
         cmd += ["--load-balance", "--parallel", parallel]
       end
       cmd += ["--filter", filter] if filter
+      cmd << "--write-execution-file" if ENV["QUNIT_WRITE_EXECUTION_FILE"]
     end
 
     system(*cmd, chdir: "#{Rails.root}/app/assets/javascripts/discourse")