diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 68001920c9c076ac88d7ae29f2939c0b69ef41e2..06333d31356e4c5039a2bf44db577ec9d1cbd71f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -124,6 +124,14 @@ jobs:
           name: coverage
           path: coverage
 
+      - name: Codecov
+        shell: bash
+        if: always() && env.coverage == 'true'
+        continue-on-error: true
+        run: bash <(curl -s https://codecov.io/bash)
+        env:
+          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+
       - name: E2E Test
         run: yarn test-e2e
 
@@ -192,25 +200,3 @@ jobs:
 
       - name: Type check
         run: yarn type-check
-
-  coverage:
-    needs: test
-    runs-on: ubuntu-latest
-
-    # codecov shouldn't need more than 3 min
-    timeout-minutes: 3
-
-    steps:
-      - uses: actions/checkout@v2
-
-      - name: Download coverage
-        uses: actions/download-artifact@v1
-        with:
-          name: coverage
-
-      - name: Codecov
-        shell: bash
-        continue-on-error: true
-        run: bash <(curl -s https://codecov.io/bash)
-        env:
-          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}