## hspec-slow Track and display slow specs in Hspec runs. ## Example spec ```haskell main :: IO () main = do conf <- configure 1 -- Track specs that take longer than 1s timedHspec conf $ \it -> describe "Main" $ do it "should foo" $ do threadDelay 3000000 1 `shouldBe` 1 it "should bar" $ do threadDelay 1000 1 `shouldBe` 1 it "should baz" $ do threadDelay 4000000 1 `shouldBe` 1 ``` Checkout [hspec slow everything](#hspec-slow-everything) to run this on your entire test suite. ## Example Output ``` Main should foo should bar should baz Slow examples: 3.002925s: should foo 4.006186s: should baz Finished in 7.0141 seconds 3 examples, 0 failures ``` ## Parallel specs Parallel specs are supported. They are run similarly to above: ```haskell timedHspecParallel conf $ \it -> do -- ... ``` Output: ``` Main should foo should bar should baz Slow examples: 3.005728s: should foo 4.00143s: should baz Finished in 4.0024 seconds 3 examples, 0 failures ``` ## hspec slow everything `Main.hs`: ``` module Main where import qualified Spec import Test.Hspec.Slow import Test.Hspec(hspec) import ClassyPrelude main :: IO () main = do config <- configure 2 hspec $ timeThese config Spec.spec ``` `Spec.hs`: ``` {-# OPTIONS_GHC -fno-warn-implicit-prelude #-} {-# OPTIONS_GHC -F -pgmF hspec-discover -optF --module-name=Spec #-} ```