diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 11fed0e00bd70ede5792a950abfa183da4265fe4..27602ca609d501d32dc4eba9f5839c5ce9023542 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -375,22 +375,30 @@ jobs:
     timeout-minutes: 1
     if: always()
     steps:
-      - if: |
+      - name: Fail for failed or cancelled tests
+        if: |
           needs.test.result == 'failure' ||
-          needs.test.result == 'cancelled' ||
-          (needs.test.result == 'skipped' &&
-            !(github.event.pull_request.draft &&
-              needs.setup.outputs.test-matrix-empty == 'true')
-          )
+          needs.test.result == 'cancelled'
         run: exit 1
 
-      - if: |
+      - name: Fail for skipped tests when PR is ready for review
+        if: |
+          github.event_name == 'pull_request' &&
+          github.event.pull_request.draft != true &&
+          needs.test.result == 'skipped'
+        run: exit 1
+
+      - name: Fail for failed or cancelled coverage
+        if: |
           needs.coverage.result == 'failure' ||
-          needs.coverage.result == 'cancelled' ||
-          (needs.coverage.result == 'skipped' &&
-            !(github.event.pull_request.draft &&
-              needs.setup.outputs.test-matrix-empty == 'true')
-          )
+          needs.coverage.result == 'cancelled'
+        run: exit 1
+
+      - name: Fail for skipped coverage when PR is ready for review
+        if: |
+          github.event_name == 'pull_request' &&
+          github.event.pull_request.draft != true &&
+          needs.coverage.result == 'skipped'
         run: exit 1
 
   build: