hspec
A Testing Framework for Haskell
| LTS Haskell 24.17: | 2.11.14 | 
| Stackage Nightly 2025-10-31: | 2.11.14 | 
| Latest on Hackage: | 2.11.14 | 
hspec-2.11.14@sha256:3f64a271b4f00ee277cd34330881682441a45110b3184940384a00fd7a972af2,1766Module documentation for 2.11.14
Hspec is a testing framework for Haskell. Some of Hspec's distinctive features are:
- a friendly DSL for defining tests 
- integration with QuickCheck, SmallCheck, and HUnit 
- parallel test execution 
- automatic discovery of test files 
The Hspec Manual is at https://hspec.github.io/.
Changes
Changes in 2.11.14 (2025-09-30)
- Make sure that --prettycompletes in O(n) time
Changes in 2.11.13 (2025-09-15)
- Make diff algorithm line based
- Improve pretty-printing of nested records
Changes in 2.11.12 (2025-03-17)
- Add --no-rerunand--no-rerun-all-on-success
Changes in 2.11.11 (2025-02-17)
- Compatibility with GHC 9.12
Changes in 2.11.10 (2024-11-16)
- Add (experimental) extensions API
- Handle small terminal sizes more gracefully when reporting progress
- Correctly indent multi-line pending messages
- Use “erase in line” ANSI sequence to clear transient output (instead of overwriting it with spaces)
Changes in 2.11.9 (2024-05-24)
- Compatibility with GHC 9.10.1
- Drop support for GHC 7.10.3
Changes in 2.11.8 (2024-04-22)
- Make the build pass with QuickCheck 2.15
Changes in 2.11.7 (2023-10-22)
- Include --seedin the note on how to rurun a failing item.
Changes in 2.11.6 (2023-10-11)
- Compatibility with GHC 9.8.1
- Run cleanup actions on --fail-fast(see #860)
Changes in 2.11.5 (2023-09-20)
- Add --show-exceptionsand--display-exceptions
Changes in 2.11.4 (2023-07-20)
- Depend on hspec-expectations-0.8.4
Changes in 2.11.3 (2023-07-10)
- Suppress informational output from QuickCheck when
Test.QuickCheck.Args.chattyisFalse(#840)
Changes in 2.11.2 (2023-07-06)
- Add --expertmode
Changes in 2.11.1 (2023-05-28)
- Depend on hspec-expectations-0.8.3
Changes in 2.11.0.1 (2023-04-28)
- Don’t crash when home directories are unsupported (WASM/WASI) (thanks @amesgen)
Changes in 2.11.0 (2023-04-21)
- Drop support for GHC < 7.10.3
- Improve coloring of whitespace-only segments on --diff
- Add ColorizedReasonconstructor toFailureReason
- Provide a new package hspec-api, a stable API that can be used to extend Hspec’s functionality.
- Deprecate Test.Hspec.Core.Formatters.V1in favor ofTest.Hspec.Api.Formatters.V1
- Add --fail-on=empty-description
- Print slow spec items to stderrinstead ofstdout
- Handle quoting/escaping in .hspecfiles
- Flush output handle after reporting progress on -fprogress
Changes in 2.10.10 (2023-03-07)
- Re-export sequentialfromTest.Hspec
- Rerun beforeAll/afterAllon--rerun-all-on-success(#768)
Changes in 2.10.9 (2023-01-13)
- Print error message on -—fail-on=empty
- Only fail on -—fail-on=emptyif at least one spec item has been filtered
- Re-export more types from Test.Hspec.Core.Runner
- Fix a pretty-printing bug where []would be pretty-printed as""
- Don’t pretty-print if the expected and actual value would be equal after pretty-printing
- Prevent deadlocks on unguarded exceptions in runner (#771)
Changes in 2.10.8 (2022-12-19)
- Add pretty-printing support for rational numbers
- Force / evaluate exceptions recursively (#763)
- Add xpropandfprop, which usexitandfit(thanks @lehins)
Changes in 2.10.7 (2022-12-03)
- Do not depend on ghcfor pretty-printing (#750, #752)
Changes in 2.10.6 (2022-09-13)
- Suppress excessive diff output (#449)
- Allow the use of an external diff program.  This can e.g. be used by
setting HSPEC_DIFF_COMMAND="diff -u --color -L expected -L actual"orHSPEC_DIFF_COMMAND="git diff"
- Do not imply --fail-on=emptyon--strict
Changes in 2.10.5 (2022-09-09)
- Add --fail-on. This subsums--fail-on-focusedand--fail-on-pending.
- Add --fail-on=empty(#650)
- Add registerFormatterandregisterDefaultFormattertoTest.Hspec.Runner.
- Revert deprecation of Test.Hspec.FormattersandTest.Hspec.Core.Formatters. Instead the module documentation now says that they are deprecated in favor ofTest.Hspec.Core.Formatters.V1.
Changes in 2.10.4 (2022-09-06)
- Make sure that whitespace-only diff output is colorized properly (#660)
Changes in 2.10.3 (2022-09-05)
- Deprecate Test.Hspec.FormattersandTest.Hspec.Core.Formatters
- Disable (most) warnings in files generated by hspec-discover(#702)
Changes in 2.10.2 (2022-09-03)
- Add --strict
- Add --fail-on-pending
- Do not depend on clock
Changes in 2.10.1 (2022-08-22)
- Support for GHC 9.4.1
- Generated modules now include an export list
Changes in 2.10.0.1 (2022-08-06)
- Fix a deadlock with nested failed aroundAlls (see #679)
Changes in 2.10.0 (2022-05-12)
- Allow to transform the config in SpecM
- Allow to customize pretty-printing (via configPrettyPrintFunction)
- Add getSpecDescriptionPath(#637, thanks @srid)
- Do not treat afterAllas another spec item (fixes #414, #364, #363)
- Change type of paramsSmallCheckDepthto Maybe (see #345)
Changes in 2.9.7
- Ensure that interim output does not interfere with output from tests This
facilitates using printwhen debugging test cases.
Changes in 2.9.6
- Ensure color codes don’t span newlines (#346, thanks @robx)
- Disable progress reporting on Buildkite
- Improve error messages on exceptions in hooks
Changes in 2.9.5
- Assume --colorby default when running on GitHub Actions. UseHSPEC_COLOR=noor--no-colorto opt out of this behavior.
- Disable progress reporting on GitHub Actions.
- Retain source formatting of numbers when pretty-printing.
Changes in 2.9.4
- Compatibility with GHCJS (see #599)
Changes in 2.9.3
- Pretty-print Haskell values in failure messages
Changes in 2.9.2
- Show multi-line diffs for string literals (disable with --no-pretty)
Changes in 2.9.1
- Recover unicode from ExpectedButGot
- Preserve unicode in To rerun use: --match ...output
Changes in 2.9.0
- Add ASCII fallbacks to “checks” formatter (fixes #512)
- Use checksformatter by default (to restore the old behavior use--format specdoc)
- Allow to extend the list of available formatters for --format(configAvailableFormatters)
- Add getExpectedTotalCounttoTest.Hspec.Core.Formatters.V2
- Rename formatConfigItemCounttoformatConfigExpectedTotalCount
- Rename configFastFailtoconfigFailFast
Changes in 2.8.5
- hspec-core: Include help.txt in package tarball (close #568)
- hspec-discover: Require base >=4.5.0.0 (fixes #554)
Changes in 2.8.4
- Better support for GHC 9.2.1
- Support for setting options by individual environment variables, e.g.
HSPEC_COLOR=yeswill set--color
Changes in 2.8.3
- Better support for --color=autoon Windows
- Add support for spec hooks to hspec-discover(viaSpecHook.hs)
- Propagate exceptions from Test.Hspec.Core.Format.monadic
- Re-export aroundAll_fromTest.Hspec
Changes in 2.8.2
- Add mapSubjectandignoreSubject
Changes in 2.8.1
- Take the environment variable NO_COLORinto account
Changes in 2.8.0
- Add --timesto print times for individual spec items
- Add --print-slow-items
- Use -XNoImplicitPreludeand do not rely onbaseforhspec-discovergenerated test drivers. This ensures full compatibility with custom preludes.
- Add new APIs for formatters Test.Hspec.Core.FormatandTest.Hspec.Core.Formatters.V2
- Add getItemCounttoFormatterAPI
- Add --qc-max-shrinks(see #380)
- Add location information for failing afterAll-hooks
- hspec-discover: Deprecate --no-mainand--formatter(use--module-nameinstead) (#196)
- Remove --verboseoption (this has been a noop since at least 2013)
- Remove --outoption (use shell output redirection instead)
Changes in 2.7.10
- Add a new formatter (can be used with --format checks)
- Add exampleStartedtoFormatterAPI
Changes in 2.7.9
- Re-export aroundAllandaroundAllWithfromTest.Hspec
Changes in 2.7.8
- Add aroundAll/aroundAllWith(see #255)
Changes in 2.7.7
- Add aroundAll_(see #255)
- Correctly handle pending for afterAllactions
Changes in 2.7.6
- Add beforeAllWith(see #447)
Changes in 2.7.5
- Extract source locations from NoMethodErrorandAssertionFailed
Changes in 2.7.4
- Apply --randomizerecursively
Changes in 2.7.3
- Add --randomize
Changes in 2.7.2
- Interrupt diff calculation if it takes longer than two seconds (see #415)
Changes in 2.7.1
- Add compatibility with QuickCheck 2.13.1 (see #410)
Changes in 2.7.0
- Add --focused-only(see #390)
- Add --fail-on-focused(see #389)
Changes in 2.6.1
- Add Test.Hspec.Runner.runSpec(see #216)
Changes in 2.6.0
- Allow to focus individual spec items (see #319)
- Do not calculate diff on --no-diff(see #332)
- Remove deprecated module Test.Hspec.Core
Changes in 2.5.9
- Extract source locations from RecConError (see #375)
Changes in 2.5.8
- Add modifyArgsandmodifyMaxShrinkstoTest.Hspec.QuickCheck(see #380)
Changes in 2.5.7
- GHC 8.6.1 related changes
Changes in 2.5.6
- Compatibility with QuickCheck-2.12
Changes in 2.5.5
- Use module[line:column]instead ofmodule:line:columnas default label fordescribe/it(fixes #366)
Changes in 2.5.4
- Show how to rerun individual spec items on test failures (see #205)
Changes in 2.5.3
- Treat character escapes like \NULas single tokens on--diff(see #351)
- Allow a /at the beginning and at the end of an absolute path that is passed to--matchor--skip
Changes in 2.5.2
- Use module:line:column as default label for describe/it (see #250)
- Warn if user is affected by https://ghc.haskell.org/trac/ghc/ticket/13285 (see #329)
Changes in 2.5.1
- Disable tests for Test.Hspec.Core.Timer (see #352)
Changes in 2.5.0
- Add sequential(see #311)
- Add support for --diffwhenshouldBeis uesd withQuickCheck-properties
- Add source locations when shouldBeis uesd withQuickCheckproperties
- Print QuickChecklabels on success (see #297)
- Retain output of verbose,label,collect,classify, etc. forQuickCheckproperties (see #257)
- Extract source location from error / undefined (see #316)
- Parse source locations from pattern match failures
- Include source column when formatting source locations
- Colorize whitespaces with background color instead of foreground color with
--diff
- Run Test.Hspec.Core.Formatters.exampleProgressinFormatMinstead ofIO
- Make sure that progress output is always cleared (fixes #301)
- Add location information to pending(not used by any formatter yet)
- Include duration for each spec item in new formatter API (see #315) (not yet exposed)
- Removed deprecated module Test.Hspec.HUnit, useTest.Hspec.Contrib.HUnitinstead
- Deprecate --out
- Remove BestEffortsource locations
Changes in 2.4.8
- compatibility with GHC 8.4.1-alpha3
Changes in 2.4.7
- compatibility with QuickCheck-2.11.3and up (note thatQuickCheckversions2.11to2.11.2are not fully supported)
Changes in 2.4.6
- compatibility with the upcoming version 4.11.0.0ofbase
Changes in 2.4.5
- hspec-discover: Sort specs using natural sort order
Changes in 2.4.4
- Require quickcheck-io >= 0.2.0
Changes in 2.4.3
- Read command-line options from environment variable HSPEC_OPTIONS
Changes in 2.4.2
- Use --diffby default
- Add --failure-report(see #266)
Changes in 2.4.1
- Compatibility with HUnit < 1.3
Changes in 2.4.0
- Read command-line options from config files ~/.hspecand.hspec
- Add support for --diff
- Add xit,xspecify,xdescribeandxcontext(see #252)
- Add --rerun-all-on-success
- Report exceptions in beforeAlloperations only once
- Add indentation when actual/expected contain newlines (see #263)
- More graceful shutdown on ctrl-c (see #270)
- Run around-hook for Bool and Result (see #252)
- Include CHANGES.markdownin package tarball
Internal changes:
- Rename Failconstructor ofResult-type toFailure
- Add FailureReasontype
- Add Test.Hspec.Core.Spec.safeEvaluateExample
Changes in 2.3.2
- Compatibility with HUnit 1.5
Changes in 2.3.1
- Fix build for HUnit < 1.4
Changes in 2.3.0
- Proper support for GHC 8 call stacks
Changes in 2.2.4
- Compatibility with QuickCheck-2.9
Changes in 2.2.3
- Make sure that cabal haddockworks forhspec-discover
- Forward compatibility for HUnit 1.4
- Fix tests for GHC 8.0.1-rc1
Changes in 2.2.2
- Fix compilation for GHC 8.0.1-rc1
Changes in 2.2.1
- Make sure that Vim’s default errorformatrecognizes exact locations
- GHCJS compatibility
Changes in 2.2.0
- Add source locations to test Result
Changes in 2.1.10
- GHC 7.0.* compatibility
Changes in 2.1.9
- Make use of GHC 7.10.2 source locations
- Add --jobs
Changes in 2.1.8
- Depend on `hspec-expectations-0.7.0”
Changes in 2.1.7
- Add beforeAll_
Changes in 2.1.6
- If there were no previous failures, run all spec items on --rerun
Changes in 2.1.5
- Compatibility with QuickCheck-2.8
Changes in 2.1.4
- Make hspec-discoverignore modules with invalid module names, this fixes issues withflycheck’s temporary files
Changes in 2.1.3
- Format source locations like gcc does
Changes in 2.1.2
- Re-export before_fromTest.Hspec
Changes in 2.1.1
- Add before_
- Add command-line option --skip
Changes in 2.1.0
- Generalize after_,afterAll_andaround_
Changes in 2.0.2
- Indent error messages for failed examples (fixes #186)
- Export defaultParamsfromTest.Hspec.Core.Example
- Bring back Test.Hspec.HUnitand deprecate it to provide a smother upgrade path
Changes in 2.0.1
- Add missing extra source files to for hspec-discover
Changes in 2.0.0
- Split package into hspec,hspec-coreandhspec-discover
- Allow hooks (before,around, etc.) to pass arguments to spec items
- Do not print -in front of spec items withspecdocformatter
- Move Test.Hspec.HUnittohspec-contrib
Changes in 1.12.4
- Add specGroupandspecItemtoTest.Hspec.Core
- Deprecate Test.Hspec.Core.itandTest.Hspec.Core.describe
Changes in 1.12.3
- Make hspec-discoverwork with-XNoImplicitPrelude
Changes in 1.12.2
- Include IOErrorTypewhen printing uncaughtIOExceptions (see #204)
Changes in 1.12.1
- Add --module-nameoption tohspec-discover(see #168)
Changes in 1.12.0
- Add optional source location to spec items
- Move item requirement text from SpecItemconstructor toItemdata type
- Remove BuildSpecsconstructor fromSpecTree, havingrunIOthis is not really needed
- Add mapSpecTreetoTest.Hspec.Core
- Add afterAll(see #188)
- Do not return ResultfromhspecWithand accept command-line options (the old behavior is still available ashspecWithResult)
- Rename configHandletoconfigOutputFile
- Omit empty describegroups from report
- Do not pass position to Formatter.exampleGroupStarted(we can not support this with the upcomming cleanup actions #188)
- Do not print empty lines before/after spec groups
- Deprecate Test.Hspec.Formatters.newParagraph
Changes in 1.11.4
- Make test suite independent from QuickCheck seed (see #187)
Changes in 1.11.3
- Depend on hspec-expectations-0.6.1
Changes in 1.11.2
- Add beforeAll
Changes in 1.11.1
- Add specifyas an alias forit
Changes in 1.11.0
- Add BuildSpecsconstructor to internalSpecTreedata structure. This allows you to doIOwhile constructing the spec tree.
- Add runIO
Changes in 1.10.0
- Do not use exception type to distinguish between synchronous/asynchronous exceptions (thanks to Michael Snoyman)
- Remove Exampleinstance forTest.HUnit.Test(#101), useTest.Hspec.HUnit.fromHUnitTestinstead.
- Do not reexport propertyfromTest.Hspec.QuickCheck
- Move ProgressCallbackout ofParams
- Add show instance for Params
- Move requirement text from ItemtoSpecItemconstructor
- Remove deprecated modules and functions
Changes in 1.9.5
- Make sure that ctrl-c works properly with GHC 7.8.* and QuickCheck-2.6
Changes in 1.9.4
- Compatibility with transformers-0.4.0.0
Changes in 1.9.3
- Make internal Tree data structure more strict (#169)
Changes in 1.9.2
- Print type of exceptions that are raised from QuickCheck properties (#94)
Changes in 1.9.1
- Bring back compatibility with older versions of QuickCheck (#166)
Changes in 1.9.0
- Depend on QuickCheck 2.7
Changes in 1.8.3
- Do not use color if TERM=dumb(see #158)
Changes in 1.8.2
- hspec-discovernow accepts- --no-mainwhich results in a top-level spec being generated instead of a test driver (thanks @DanielG)
- Make sure that afteris run on failing tests (see #159)
Changes in 1.8.1
- Add shouldMatchList
Changes in 1.8.0
- Run before/after/aroundfor each single check of a QuickCheck property
- Add Test.Hspec.Core.mapSpecItem
- Add modifyMaxSuccess,modifyMaxDiscardRatioandmodifyMaxSizetoTest.Hspec.QuickCheck
- Don’t fail if callback is not called in around
- hspec-discover: Remove- --nestedoption
- hspec-discover: Ignore- Spec.hs/- Spec.lhs
Changes in 1.7.2
- Add afterandaround
Changes in 1.7.1
- Add shouldContain(thanks to Alfredo Di Napoli)
- When printing progress, skip total if it is 0
- Do not colorize the description/requirement in failure list
Changes in 1.7.0
- Add --depthfor use withhspec-smallcheck
Change in 1.6.2
- Add before
- Add --qc-max-discardand--qc-max-size
Changes in 1.6.1
- Allow to specify the output file with --out
Changes in 1.6.0
- Add support for parallelization
- Change license to MIT
- Add MonadIO instance for FormatM
- Add support for custom formatters to hspec-discover
- Add hspecResult
- Rename --re-runto--rerun+ add documentation (#95)
- Remove configVerbose
- Use same --qc-max-successon--rerun(#125)
- Add command-line option --no-color,--colordoes not accept arguments anymore (#130)
Changes in 1.5.4
- Make sure that QuickCheck is never chatty
- Make sure progress for QuickCheck examples is shown
Changes in 1.5.3
- Print “Randomized with seed …” only once
Changes in 1.5.2
- Add --seed, it can be used to specify the seed for QuickCheck properties
- Reuse previous seed on --re-run
Changes in 1.5.1
- Depend on quickcheck-io
Changes in 1.5.0
- Allow to use expectations as QuickCheck properties (#80)
- Do not suppress output to stdout
- Change type of pendingtoExpectation, addpendingWith(#121)
- Add the examplefunction, it fixes the type of an Expectation (#86)
- Rename --fast-failto--fail-fast(for consistency with RSpec)
- Do not clutter Cabal test suite logs with QuickCheck output (#112)
- Skip redundant output from QuickCheck failure messages (#102)
Changes in 1.4.5
- hspec-discover now discovers .lhs files, too
Changes in 1.4.4
- Visually distinguish error message from requirements in the summary (#100)
- Export formatExceptionfromTest.Hspec.Formatters
- Add --fast-fail(#82)
- Print a summary on UserInterrupt/ctrl-c (#107)
Changes in 1.4.3
- Add --dry-run(#111)
Changes in 1.4.2
- Properly handle ctrl-c while running QuickCheck properties (#93)
- Default to --color=alwayswhen--coloris used without argument (#106)
- treat --qc-max-successas an alias for--maximum-generated-tests
Changes in 1.4.1
- Used CPU time is now only included in the test summary if run with
--print-cpu-time.
Changes in 1.4.0
- We now have a manual at https://hspec.github.io/.  The sources are in
doc/. It’s still work in progress. Contributions are very welcome!
- The Haddock documentation now indicates the stability of each exposed
module.  Test.Hspecis now considered stable.
- hspecnow supports command-line options- --colorcan be used to enable/disable colored output
- --formatcan be used to pick a specific formatter
- --htmlcan be used to produce an HTML report
- --maximum-generated-testscan be used to specify QuickCheck’s- maxSuccess
- --matchonly runs spec items that match a given string
- --re-runonly runs spec items that previously failed. This is undocumented, experimental and only works within GHCi (use- :reload/- :main)!
 
- Runner functions exported from Test.Hspec.Runnernew expect a monadic spec.
- fromHUnitTesthas been added. It can be used to run existing HUnit test suites with Hspec.
- The Exampleinstance for HUnitTests has been deprecated.fromHUnitTestcan be used instead. The primary motivation is, thatfromHUnitTestgives more detailed reporting for nested HUnit test suites.
- Test.Hspec.Monadichas been deprecated, all functionality is available through one of- Test.Hspec,- Test.Hspec.Coreor- Test.Hspec.Runner.
- More of Hspec’s internals are now exposed from Test.Hspec.Core
- All runner functions for the core spec type (aka as non-monadic spec) have
been deprecated, use e.g. Test.Hspec.hspec . fromSpecListinstead. The motivation is to provide an API that does not expose colliding names.
- Some other stuff from Test.Hspec.Corethat collides with other parts of the API has been deprecated. Compatible alternatives are given in each deprecation message.
- The default formatter now produces less whitespace (#73) + other minor improvements
- The formatter API has been revamped.
- The exception type is now printed if an example fails due to an exception (#50)
- The number of pending examples is now printed after each test run (#85)
- --verbosehas been added (#87)
Changes in 1.3.0
- 
Test.Hspecnow re-exports the monadic API. If you still use the non-monadic API, you can useTest.Hspec.Coreas a drop-in replacement.
- 
hspec-expectations, a set of combinators that allow to express expectations about the outcome of code examples, is now included with Hspec. Have a look at the [README ofhspec-expectations] (https://github.com/sol/hspec-expectations#readme) for a short introduction.
- 
hspec-discover, a mechanism for automatic spec discovery, is now an official part of Hspec. Have a look at [hspec-discover’s README] (https://github.com/hspec/hspec/tree/main/hspec-discover#readme) for a short introduction.
Changes in 1.2.0
- 
hspechas been removed, andhspecXhas been renamed tohspec(see #71)
- 
hHspecnow returns a summary of the test run.
- 
The time reporting after a test run is not colored anymore. 
Changes in 1.1.3
- 
Test.Hspecwarns now about future changes: It will re-exportTest.Hspec.Monadicin the future. If you still use the non-monadic API, you can either useTest.Hspec.Coreas a drop-in replacement, or migrate your code to the monadic API.The monadic API is more stable and easier to use. Now is a good time to switch! 
- 
Test.Hspec.Coreis now a proper superset ofTest.Hspec
Changes in 1.1.2
- 
All descriptions of nested examples are now included in summary for failing examples 
- 
contextis now an alias fordescribe
Changes in 1.1.1
- Specs from Test.Hspec.Monadic has been renamed to Spec. For backward compatibility Specs is still kept as an alias.
Changes in 1.1.0
The reason for pending examples is now optional
With this change, both of the following code snippets work.
it "some behavior" $
  pending  -- no reason given
it "some other behavior" $
  pending "some reason"
Hspec does not rely on ExistentialQuantification anymore
The type used to represent specs is now abstract
This should give more useful error messages when adapting old specs that use
the non-monadic API for hspec-1.0/hspec-1.1.
Several internal types and functions have been deprecated
Those are internal functions, and they will be removed/hidden with the next release. If you use any of those, update your code. If you really need them, open a ticket and describe your use case.
Changes in 1.0.0
Hspec now re-uses QuickCheck’s property function
Test.Hspec.QuickCheck.property is now simply a re-exports of
Test.QuickCheck.property.  This has the advantage that you do not get a name
collision if you import both, Test.Hspec.QuickCheck and Test.QuickCheck.
Better support for nested specs
NOTE: This is a breaking change to the non-monadic API. The monadic API is not affected.
In some situations parent descriptions for nested specs were not included in the generated report. Solving this required a change to the data structure that is used to represent specs (it was not a proper tree, now it is).
Updating specs that use the non-monadic API
The runner functions (hspec, hspecB and hspecX) now take a list of
descriptions.
The following works with hspec-0.9, but not with hspec-1.0.
main = hspecX $
  describe "reverse" [
    it "reverses a list" $
      reverse [1, 2, 3] == [3, 2, 1],
    it "gives the original list, if applied twice" $ property $
      \xs -> reverse (reverse xs) == (xs :: [Int])
  ]
For hspec-1.0, you need to wrap it into a list.
main = hspecX [
    describe "reverse" [
      it "reverses a list" $
        reverse [1, 2, 3] == [3, 2, 1],
      it "gives the original list, if applied twice" $ property $
        \xs -> reverse (reverse xs) == (xs :: [Int])
    ]
  ]
Specs consisting of several describes, combined with descriptions, continue
to work unchanged.  But descriptions is now a noop, and it will be removed in
a future release.  So it is a good idea to drop it.
The following works with both hspec-0.9 and hspec-1.0.
main = hspecX $ descriptions [  -- descriptions is redundant
    describe "Foo" [
      it "has some behavior" True
    ]
  , describe "Bar" [
      it "has some behavior" True
    ]
  ]
But the following is recommended instead.
main = hspecX [
    describe "Foo" [
      it "has some behavior" True
    ]
  , describe "Bar" [
      it "has some behavior" True
    ]
  ]
A new monadic API for custom Formatters
For all the details, have a look at the [docs] (https://hackage.haskell.org/packages/archive/hspec/latest/doc/html/Test-Hspec-Formatters.html).
The total time required to run a spec is now included in the summary
In addition to the used CPU time, the total time required to run a spec is now include in the summary. This is useful for specs that do non-CPU-intensive stuff, or fork subprocesses.
