@@ -0,0 +1,25 @@
1+# servant-quickcheck
2+
3+`servant-quickcheck` provides tools to test properties across entire APIs.
4+Rather than writing the same tests for each endpoint, with `servant-quickcheck`
5+you can simply specify properties every endpoint must meet once and for all.
6+For example:
7+
8+``` haskell
9+followsBestPractices :: Spec
10+followsBestPractices = describe "my API" $ do
11+
12+ it "follows best practices" $ do
13+ withServantServer myAPI myServer $ \burl ->
14+ serverSatisfies api burl stdArgs
15+ ( not500
16+ <%> onlyJsonObjects
17+ <%> getsHaveCacheControlHeader
18+ <%> headsHaveCacheControlHeader
19+ <%> mempty)
20+```
21+
22+Additionally, `servant-quickcheck` provides a `serversEqual` function that
23+generates arbitrary requests (that conform to the description of an API) and
24+tests that two servers respond identically to them. This can be useful when
25+refactoring or rewriting an API that should not change.