diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d3b9dfa1766defff0989091e3b52aa6d56016b05..588d78b18954f95097f66c1d2cab13021e02391e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,7 +40,15 @@ stack-test:
   before_script:
     - export STACK_ROOT="$CI_PROJECT_DIR/.stack"
   script:
-    - stack --no-terminal test
+    - stack --no-terminal test --ta "--xml=report.xml"
+  artifacts:
+    when: always
+    untracked: false
+    expire_in: 30 days
+    paths:
+      - report.xml
+    reports:
+      junit: report.xml
 
 upload:
   stage: upload
diff --git a/package.yaml b/package.yaml
index 609126cecd9c839b45d647397ccb7c3355959483..2c8b705f9b54e5e89400672af95e825d195836c2 100644
--- a/package.yaml
+++ b/package.yaml
@@ -78,8 +78,11 @@ tests:
     dependencies:
       - shift
       - hspec
-      - hspec-discover
       - hspec-megaparsec
+      - tasty
+      - tasty-hspec
+      - tasty-discover
+      - tasty-test-reporter
   doctest:
     main: Doctest.hs
     dependencies:
diff --git a/shift.cabal b/shift.cabal
index 395d5d76dd336b703fc94eeeda55cfc197cd5ef6..b104465b59c052f1df0011aba29c2e8ce442263c 100644
--- a/shift.cabal
+++ b/shift.cabal
@@ -166,7 +166,6 @@ test-suite spec
     , gitlab-haskell
     , hgit
     , hspec
-    , hspec-discover
     , hspec-megaparsec
     , http-client
     , http-client-tls
@@ -181,6 +180,10 @@ test-suite spec
     , semigroups
     , shift
     , string-conversions
+    , tasty
+    , tasty-discover
+    , tasty-hspec
+    , tasty-test-reporter
     , text
     , transformers
     , unordered-containers
diff --git a/test/Spec.hs b/test/Spec.hs
index 52ef578fca124702769bdff67c69cdc366030fa7..8b2a545bc459c33fc6b38d6a13ffa0550760f747 100644
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1 +1 @@
-{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
\ No newline at end of file
+{-# OPTIONS_GHC -F -pgmF tasty-discover -optF --ingredient=Test.Tasty.Runners.Reporter.ingredient #-}
\ No newline at end of file
diff --git a/test/Test/Shift/ParsersSpec.hs b/test/Test/Shift/ParsersSpec.hs
index c0a86416be2ac9032c63d6bc1819d744b52f9ff8..6b634d02e84656e704b16b62382d973e868e60dc 100644
--- a/test/Test/Shift/ParsersSpec.hs
+++ b/test/Test/Shift/ParsersSpec.hs
@@ -30,8 +30,8 @@ import Test.Hspec.Megaparsec (shouldFailOn, shouldParse)
 import Text.Megaparsec (parse)
 import Text.Megaparsec.Char (eol, string)
 
-spec :: Spec
-spec = do
+spec_Parsers :: Spec
+spec_Parsers = do
   -- spaced
   describe "spaced" $ do
     it "parses using the inner parser" $ do