diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.3.3 [2025.06.17]
+------------------
+* Replace `test-framework` with `tasty` in the test suite.
+
 0.3.2 [2024.12.04]
 ------------------
 * Drop support for pre-8.0 versions of GHC.
diff --git a/half.cabal b/half.cabal
--- a/half.cabal
+++ b/half.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: half
-version: 0.3.2
+version: 0.3.3
 license: BSD3
 license-file: LICENSE
 copyright: Copyright (C) 2014 Edward A. Kmett
@@ -35,7 +35,7 @@
 
 source-repository head
     type: git
-    location: git://github.com/ekmett/half.git
+    location: https://github.com/ekmett/half.git
 
 library
     default-language: Haskell2010
@@ -69,6 +69,6 @@
         binary,
         bytestring,
         half,
-        QuickCheck >=2.14.1 && <2.16,
-        test-framework,
-        test-framework-quickcheck2
+        QuickCheck >=2.14.1 && <2.17,
+        tasty >= 1.4 && < 1.6,
+        tasty-quickcheck >= 0.10 && < 0.12
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -3,9 +3,9 @@
 
 import Numeric.Half
 import Numeric.Half.Internal
-import Test.Framework (defaultMain, testGroup)
-import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck (Arbitrary (..), Property, counterexample, (===), (==>), property, once)
+import Test.Tasty (defaultMain, testGroup)
+import Test.Tasty.QuickCheck (testProperty)
 import Foreign.C.Types
 import Data.List (sort)
 import qualified Data.Binary as Binary
@@ -32,7 +32,8 @@
 -- test QNaN, SNaN patterns
 
 main :: IO ()
-main = defaultMain
+main = defaultMain $
+  testGroup "half"
   [ testGroup "Half Ord instance"
     [ testProperty "(>=) is the opposite of (<) except for NaN" $ \x y ->
         ((x >= y) /= (x < y)) || isNaN x || isNaN (y :: Half)
