MIT licensed by Danny Navarro, Roman Cheplyaka, Chris Catalfo, Owen Shepherd
This version can be pinned in stack with:tasty-html-0.4.2.2@sha256:00cf4b72d5cf290634a60cd9d8952148946b25f8532f96af02c0ad8d2e258bf2,1829

Module documentation for 0.4.2.2

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

Changes

0.4.2.2 - 2024-01-01

  • Support tasty 1.5

0.4.2.1 - 2023-05-02

  • Remove flaky pass test
  • Turn example tests into executables

0.4.2.0 - 2023-04-27

  • Remove Bootstrap
  • Remove JQuery
  • Style overhaul
  • Visual tree heirarchy indication
  • Ellide tree paths that don’t lead to failed tests on load
  • ‘Expand all’ button
  • Highlight descendents of groups on hover
  • Output less DOM nodes
  • Automatic dark/light theme via the prefers-color-scheme media query

0.4.1.4 - 2021-01-13

Documentation improvements

0.4.1.3 - 2021-01-13

Update to tasty-1.4

0.4.1.2 - 2018-06-27

Fix compatibility with GHC 8.4

0.4.1.1 - 2015-11-10

  • Report running time for tests.

0.4.1 - 2014-11-18

  • Export AssetsPath.

0.4 - 2014-11-11

  • Add option to load bootstrap assets externally.

0.3

This release is mainly about upgrading to bootstrap3.

  • Modifications to bootstrap are done directly in its source, which is now maintained as a fork at https://github.com/jdnavarro/bootstrap. The modifications are mainly about inlining resources.
  • Icons are now true fonts instead of image sprites.
  • Test trees are represented as media objects.
  • Remove dependendency to bootstrap-tree.
  • Upgrade to tasty-0.10.
  • Fix HTML malformation.

0.2

  • Remove forgotten undefined that made failing tests crash.