tasty-html: Render tasty output to HTML

[ library, mit, program, testing ] [ Propose Tags ]

A tasty ingredient to output test results in HTML5.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.2, 0.3, 0.4, 0.4.1, 0.4.1.1, 0.4.1.2, 0.4.1.3, 0.4.1.4, 0.4.2.0, 0.4.2.1, 0.4.2.2
Change log CHANGELOG.md
Dependencies base (>=4.5 && <5), blaze-html (>=0.7 && <1), bytestring (>=0.10 && <1), containers (>=0.5.0.0 && <1), generic-deriving (>=1.6.2 && <2), mtl (>=2.1.2 && <3), semigroups (>=0.1 && <1), stm (>=2.4.2 && <3), tagged (>=0.7 && <1), tasty (>=1.5 && <1.6), tasty-html, tasty-hunit (>=0.1 && <1), tasty-quickcheck (>=0.1 && <1), tasty-smallcheck (>=0.1 && <1), text (>=1.0 && <3), transformers (>=0.3.0.0 && <1) [details]
License MIT
Author Danny Navarro, Roman Cheplyaka, Chris Catalfo, Owen Shepherd
Maintainer j@dannyavarro.net, roma@ro-che.info
Category Testing
Home page http://github.com/feuerbach/tasty-html
Source repo head: git clone git://github.com/feuerbach/tasty-html.git
Uploaded by 414owen at 2024-01-01T23:50:33Z
Distributions LTSHaskell:0.4.2.1, NixOS:0.4.2.1, Stackage:0.4.2.2
Reverse Dependencies 2 direct, 0 indirect [details]
Executables tasty-html-pass, tasty-html-fail
Downloads 6812 total (51 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for tasty-html-0.4.2.2

[back to package description]

tasty-html

HTML test reporter for the Tasty test framework.

Example

Here's how your test.hs might look like:

import Test.Tasty
import Test.Tasty.SmallCheck as SC
import Test.Tasty.QuickCheck as QC
import Test.Tasty.HUnit
import Test.Tasty.Runners.Html

import Data.List
import Data.Ord

main = defaultMainWithIngredients (htmlRunner:defaultIngredients) tests

tests :: TestTree
tests = testGroup "Tests" [properties, unitTests]

properties :: TestTree
properties = testGroup "Properties" [scProps, qcProps]

scProps = testGroup "(checked by SmallCheck)"
  [ SC.testProperty "sort == sort . reverse" $
      \list -> sort (list :: [Int]) == sort (reverse list)
  , SC.testProperty "Fermat's little theorem" $
      \x -> ((x :: Integer)^7 - x) `mod` 7 == 0
  -- the following property does not hold
  , SC.testProperty "Fermat's last theorem" $
      \x y z n ->
        (n :: Integer) >= 3 SC.==> x^n + y^n /= (z^n :: Integer)
  ]

qcProps = testGroup "(checked by QuickCheck)"
  [ QC.testProperty "sort == sort . reverse" $
      \list -> sort (list :: [Int]) == sort (reverse list)
  , QC.testProperty "Fermat's little theorem" $
      \x -> ((x :: Integer)^7 - x) `mod` 7 == 0
  -- the following property does not hold
  , QC.testProperty "Fermat's last theorem" $
      \x y z n ->
        (n :: Integer) >= 3 QC.==> x^n + y^n /= (z^n :: Integer)
  ]

unitTests = testGroup "Unit tests"
  [ testCase "List comparison (different length)" $
      [1, 2, 3] `compare` [1,2] @?= GT

  -- the following test does not hold
  , testCase "List comparison (same length)" $
      [1, 2, 3] `compare` [1,2,2] @?= LT
  ]

To produce the HTML output, run the test program with the --html option, giving it the html file path:

./test --html results.html

Here is the output of the above program rendered to HTML:

screenshot

(Note that whether QuickCheck finds a counterexample to the third property is determined by chance.)

Hacking

$ git clone --recursive https://github.com/feuerbach/tasty-html
$ cabal run tasty-html-pass -- --html pass.html
$ cabal run tasty-html-fail -- --html fail.html
$ firefox pass.html fail.html