diff --git a/Prolude.hs b/Prolude.hs
--- a/Prolude.hs
+++ b/Prolude.hs
@@ -12,6 +12,7 @@
   , module Prolude.MongoDB
   , module Prolude.Persist
   , module Prolude.Prim
+  , module Prolude.Test
   , module Prolude.Text
   , module Prolude.Time
   )
@@ -30,5 +31,6 @@
 import Prolude.MongoDB
 import Prolude.Persist
 import Prolude.Prim
+import Prolude.Test
 import Prolude.Text
 import Prolude.Time
diff --git a/Prolude/Test.hs b/Prolude/Test.hs
new file mode 100644
--- /dev/null
+++ b/Prolude/Test.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE UndecidableInstances #-}
+
+module Prolude.Test 
+  ( module Test.QuickCheck
+  , ArbitraryUniform(..)
+  , arbitraryIO
+  )
+where
+
+import Test.QuickCheck (Arbitrary(arbitrary), generate, resize, sublistOf)
+import Test.QuickCheck.Instances ()
+import qualified Control.Monad.IO.Class as Monad
+import qualified Generic.Random as Random
+import qualified GHC.Generics as Generic
+
+newtype ArbitraryUniform a = ArbitraryUniform  { unArbitraryUniform :: a }
+  deriving Generic.Generic via a
+
+instance (Random.GArbitrary Random.UnsizedOpts a, Random.GUniformWeight a) =>  Arbitrary (ArbitraryUniform a) where
+  arbitrary = Random.genericArbitraryU
+
+arbitraryIO :: (Arbitrary a, Monad.MonadIO m) => m a
+arbitraryIO = Monad.liftIO (generate arbitrary)
diff --git a/prolude.cabal b/prolude.cabal
--- a/prolude.cabal
+++ b/prolude.cabal
@@ -1,7 +1,7 @@
 cabal-version: >= 1.10
 
 name: prolude
-version: 0.0.0.8
+version: 0.0.0.9
 synopsis: ITProTV's custom prelude
 description:
     Prolude is ITProTV's custom prelude.
@@ -35,20 +35,24 @@
         Prolude.MongoDB
         Prolude.Persist
         Prolude.Prim
+        Prolude.Test
         Prolude.Text
         Prolude.Time
 
     build-depends:
         base >= 4.13.0 && < 4.15
-      , aeson >= 1.4.7 && < 1.6
-      , bytestring >= 0.10.10 && < 0.11
-      , cassava >= 0.5.2.0 && < 0.6
-      , containers >= 0.6.2 && < 0.7
-      , mongoDB >= 2.7.0 && < 2.8
-      , persistent >= 2.8 && < 3
-      , persistent-mongoDB >= 2.8 && < 3
-      , safe-exceptions >= 0.1.7 && < 0.2
-      , scientific >= 0.3.6 && < 0.4
-      , text >= 1.2.3 && < 1.3
-      , time >= 1.9.3 && < 1.10
-      , vector >= 0.12.1 && < 0.13
+        , aeson >= 1.4.7 && < 1.6
+        , bytestring >= 0.10.10 && < 0.11
+        , cassava >= 0.5.2.0 && < 0.6
+        , containers >= 0.6.2 && < 0.7
+        , generic-random >= 1.3.0.1 && < 1.4
+        , mongoDB >= 2.7.0 && < 2.8
+        , QuickCheck >= 2.14.1 && < 2.15
+        , quickcheck-instances >= 0.3.25 && < 0.4
+        , persistent >= 2.8 && < 3
+        , persistent-mongoDB >= 2.8 && < 3
+        , safe-exceptions >= 0.1.7 && < 0.2
+        , scientific >= 0.3.6 && < 0.4
+        , text >= 1.2.3 && < 1.3
+        , time >= 1.9.3 && < 1.10
+        , vector >= 0.12.1 && < 0.13
