From 4393c809484562ccad87ef2478a2892c77dd8b51 Mon Sep 17 00:00:00 2001
From: Simon Hengel <sol@typeful.net>
Date: Sat, 11 May 2024 13:54:27 +0700
Subject: [PATCH] Add `site/index.html`

---
 site/index.html | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 site/index.html

diff --git a/site/index.html b/site/index.html
new file mode 100644
index 00000000..3ab7eebf
--- /dev/null
+++ b/site/index.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html><!-- This site was created in Webflow. http://www.webflow.com --><!-- Last Published: Tue Aug 31 2021 00:30:24 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="hedgehog.qa" data-wf-page="5e2e131d12d935e82df58b94" data-wf-site="5c86ee0a3f656c56d9d2bb35"><head><meta charset="utf-8"/><title>Hedgehog will eat all your bugs</title><meta content="Generate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages." name="description"/><meta content="Hedgehog will eat all your bugs" property="og:title"/><meta content="Generate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages." property="og:description"/><meta content="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87591b74e5afa6d0ec35a_logo-black.svg" property="og:image"/><meta content="Hedgehog will eat all your bugs" property="twitter:title"/><meta content="Generate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages." property="twitter:description"/><meta content="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87591b74e5afa6d0ec35a_logo-black.svg" property="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Webflow" name="generator"/><link href="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/css/hedgehogqa.webflow.9d2a37dd1.css" rel="stylesheet" type="text/css"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">WebFont.load({  google: {    families: ["Lato:100,100italic,300,300italic,400,400italic,700,700italic,900,900italic","PT Serif:400,400italic,700,700italic","PT Sans:400,400italic,700,700italic","Roboto Mono:regular,italic,500,700","Roboto:100,100italic,300,300italic,regular,italic,500,500italic,700,700italic:latin,greek","Roboto Condensed:300,300italic,regular,italic,700,700italic","Dosis:200,300,regular,500,700","Nunito:300,regular,600,700","Maven Pro:regular,500,700","PT Sans Caption:regular,700"]  }});</script><!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" type="text/javascript"></script><![endif]--><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca46b726408d1212042ec29_logo-white-border-32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca46b78b4998758e1d9035f_logo-white-border-256.png" rel="apple-touch-icon"/><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-136340422-2"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-136340422-2', {'anonymize_ip': false});</script><style type="text/css">
+/* fix gaps on Firefox */
+.author-date-home {
+  grid-row-gap: 0;
+  grid-column-gap: 0;
+}
+</style></head><body class="body"><div class="banner-section banner-background wf-section"><div class="banner-wrapper"><div data-collapse="medium" data-animation="default" data-duration="400" role="banner" class="navbar w-nav"><div class="nav-section w-container"><a href="/" aria-current="page" class="w-nav-brand w--current"><div class="brand-wrapper"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca6d25b7fb85930a51f6d32_text-logo-white.svg" alt="" class="brand-image"/><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca71edf39772654b6f0afe1_text-logo-partial-yellow.svg" alt="" class="brand-image-hover"/></div></a></div></div><div class="banner-info"><div class="banner-text">Release with confidence.</div><div class="banner-sub-text">Hedgehog automatically generates a comprehensive array of test cases, exercising your software in ways human testers would never imagine.<br/></div><div class="banner-languages"><a href="http://hackage.haskell.org/package/hedgehog" class="language w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca70770397726aaeff058cf_haskell-white.svg" alt="Get the Haskell Hedgehog from Hackage" class="language-image"/><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca71dac0adf055ef1eb4d8e_haskell-partial-yellow.svg" alt="" class="language-image-hover"/></a><a href="https://www.nuget.org/packages/Hedgehog/" class="language w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca7076e3977265aa3f058ce_fsharp-white.svg" alt="Get the F# Hedgehog from NuGet" class="language-image"/><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca71e3804fdce7c4491dab3_fsharp-partial-yellow.svg" alt="" class="language-image-hover"/></a><a href="https://cran.r-project.org/web/packages/hedgehog/index.html" class="language w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca707707fb859817d202a86_r-white.svg" alt="Get the R Hedgehog from CRAN" class="language-image"/><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca71e760adf056b10eb5047_r-partial-yellow.svg" alt="" class="language-image-hover"/></a><a href="https://bintray.com/hedgehogqa/scala-hedgehog" class="language w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5caaaab11aed3602e8705f51_scala-square-white.svg" alt="Get the Scala Hedgehog from Bintray" class="language-image"/><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5caaaab1f8e01265c2e52795_scala-square-yellow.svg" alt="" class="language-image-hover"/></a></div></div></div></div><div class="description-section"><div class="description-wrapper w-container"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca877bcb74e5a3e280ec56b_emoji-100.svg" width="72" height="72" alt="" class="description-image"/><div class="description-text">Generate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages.<br/></div></div></div><div class="feature-section wf-section"><div class="feature w-container"><div class="feature-wrapper"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca47797b499872de4d92315_icon-shrinking.png" width="106" alt="" class="feature-image"/><div class="feature-body"><h1 class="feature-heading">Simplified Failures</h1><div class="feature-text">Hedgehog shrinkers are composed automatically when you compose generators, so test failures are automatically simplified.</div></div></div></div><div id="w-node-_760a1c03-8e58-6a71-4499-1ae08bed07b2-2df58b94" class="feature w-container"><div class="feature-wrapper"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca47797b499870b41d92314_icon-range.png" width="144" alt="" class="feature-image"/><div class="feature-body"><h1 class="feature-heading">Range Control</h1><div class="feature-text">Control the range of generators. Generate a number between 50 and 100 and have this invariant maintained even after shrinking. </div></div></div></div><div class="feature w-container"><div class="feature-wrapper"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca477978ff5ad5f173acdbc_icon-state-machine.png" width="250" alt="" class="feature-image"/><div class="feature-body"><h1 class="feature-heading">State Machine Testing</h1><div class="feature-text">Test stateful systems like web services, database layers, and even foreign calls to C. Expose race conditions in parallel mode.</div></div></div></div><div class="feature w-container"><div class="feature-wrapper"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca477972e5a6c1ae6b14fb5_icon-diff.png" width="121.5" alt="" class="feature-image"/><div class="feature-body"><h1 class="feature-heading">Counterexample Diffs</h1><div class="feature-text">Immediately see the difference between large data structures being compared for equality.</div></div></div></div></div><div class="resource-section"><div class="resource-wrapper"><h2 class="resource-heading">How do I use Hedgehog?</h2><ul role="list" class="resource-list w-list-unstyled"><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://wickstrom.tech/programming/2019/11/17/time-travelling-and-fixing-bugs-with-property-based-testing.html" class="resource-link">Time Travelling and Fixing Bugs with Property-Based Testing</a><div class="resource-author">Oskar Wickström</div><p class="resource-blurb">This tutorial is based on a simple but realistic system under test, aiming to show some ways you can test and find bugs in such logic using property-based testing It covers refactoring, dealing with non-determinism, testing generators themselves, number of examples to run, and coupling between tests and implementation.</p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://jacobstanley.io/5-tips-for-better-hedgehog-tests/" class="resource-link">5 tips for better Hedgehog tests</a><div class="resource-author">Jacob Stanley</div><p class="resource-blurb">Have some Hedgehog tests to write? Here’s five useful features you may not know about!</p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://www.youtube.com/watch?v=z2ete8VZnZY" class="resource-link">Property-Based Testing The Ugly Parts: Case Studies from Komposition</a><div class="resource-author">Oskar Wickström</div><p class="resource-blurb">It can be hard to see how property-based testing applies to your day-to-day work. How do you go beyond testing small pure functions?<br/><br/>This talk Oskar describes techniques that you can use to test the “ugly” parts of your system, and dig deeper into a few case studies from Komposition, a screencast video editor written in Haskell.</p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://www.youtube.com/watch?v=boBD1qhCQ94" class="resource-link">Property-based State Machine Testing</a><div class="resource-author">Andrew McMiddlin</div><p class="resource-blurb">Andrew takes you on a guided tour of Hedgehog&#x27;s state machine testing facilities and then presents a series of examples to show off what you can do. This will show you how to start applying this tool to your own projects.<br/><br/>The application being tested will be a servant web application, and examples include testing fundamentals such as content creation and deletion, uniqueness constraints, and authentication.<br/></p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://qfpl.io/posts/intro-to-state-machine-testing-3/" class="resource-link">Introduction to state machine testing</a><div class="resource-author">Andrew McMiddlin</div><p class="resource-blurb">Andrew gives an introduction to state machine testing with Hedgehog and shows why it&#x27;s a great solution to testing code that deals with mutable state.<br/><br/>This series supplements the fast paced talk above with a slower-paced introduction over a series of blog posts.<br/></p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://www.youtube.com/watch?v=AIv_9T0xKEo" class="resource-link">Gens N’ Roses: Appetite for Reduction</a><div class="resource-author">Jacob Stanley</div><p class="resource-blurb">Jacob highlights the technical and social problems that he and his coworkers experienced with the type-directed shrinking approach which QuickCheck takes. He explores the alternative, integrated shrinking, and shows that even in a statically typed language, integrated shrinking provides enormous benefits for developer productivity.<br/><br/>You will learn about the difference between type-directed and integrated shrinking, and how integrated shrinking can provide superior counterexamples, while placing a smaller burden on developers writing tests.<br/></p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://www.well-typed.com/blog/2019/05/integrated-shrinking/" class="resource-link">Integrated versus Manual Shrinking</a><div class="resource-author">Edsko de Vries</div><p class="resource-blurb">In Haskell, QuickCheck has been the library of choice for property-based testing, but Hedgehog has been gaining popularity. One of the key differences between these two is that in QuickCheck one writes explicit generation and shrinking functions, whereas in Hedgehog shrinking is integrated in generation.<br/><br/>In this blog post Edsko explains what that means by developing a mini-QuickCheck and mini-Hedgehog and comparing the two.</p></div></div></li><li class="resource-item"><div class="resource-columns w-row"><div class="resource-icon-column w-col w-col-1"><div class="resource-icon"></div></div><div class="resource-info-column w-col w-col-11"><a href="https://youtu.be/LCaNfT8WiPw" class="resource-link">State Machine Testing in Hedgehog</a><div class="resource-author">Huw Campbell</div><p class="resource-blurb">State Machine Testing is an extremely powerful technique, and builds upon property based testing and even temporal logic. It can go beyond standard property based testing, in that we can easily test highly stateful external systems, such as distributed systems, C libraries, and databases – even finding race conditions and concurrency issues. In this talk, Huw looks at what state machine testing is, and how it works in Hedgehog by reimplementing a simple QuickCheck clone, and writing a State Machine Testing library on top of it.<br/></p></div></div></li></ul></div></div><div class="get-section"><div class="get-background"></div><div class="get-heading-section"><h2 class="get-heading-get">Get</h2><h2 class="get-heading-hedgehog">Hedgehog</h2><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca925eff8e0121d33e19650_logo-purple.svg" width="50" alt="" class="get-heading-image"/></div><div class="get-list"><div class="get-language"><h4 class="get-name">Haskell</h4><div class="get-body"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca92fc61283e56f3c070176_haskell-purple.svg" width="100" alt="" class="get-image"/><div class="get-image-spacer"></div><div class="get-details"><h6 class="install-instruction">build-depends: hedgehog</h6><a href="http://hackage.haskell.org/package/hedgehog" class="get-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87c58d27f4dd5cb783bad_package.svg" width="28" height="28" alt="" class="link-image"/><div>Download</div></a><a href="http://github.com/hedgehogqa/haskell-hedgehog" class="contribute-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca8795922793f077923c9a5_github-black.svg" width="28" height="28" alt="" class="link-image"/><div>Contribute</div></a></div></div></div><div class="get-list-spacer"></div><div class="get-language"><h4 class="get-name">F# (and C#)</h4><div class="get-body"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca92fc61aed3676356cf280_fsharp-purple.svg" width="100" alt="" class="get-image"/><div class="get-image-spacer"></div><div class="get-details"><h6 class="install-instruction">nuget install Hedgehog</h6><a href="https://www.nuget.org/packages/Hedgehog/" class="get-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87c58d27f4dd5cb783bad_package.svg" width="28" height="28" alt="" class="link-image"/><div class="link-text">Download</div></a><a href="http://github.com/hedgehogqa/fsharp-hedgehog" class="contribute-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca8795922793f077923c9a5_github-black.svg" width="28" height="28" alt="" class="link-image"/><div>Contribute</div></a></div></div></div><div class="get-list-spacer"></div><div class="get-language"><h4 class="get-name">R</h4><div class="get-body"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca92fc63be192591a7af51b_r-purple.svg" width="100" alt="" class="get-image"/><div class="get-image-spacer"></div><div class="get-details"><h6 class="install-instruction">install.packages(&quot;hedgehog&quot;)</h6><a href="https://cran.r-project.org/web/packages/hedgehog/" class="get-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87c58d27f4dd5cb783bad_package.svg" width="28" height="28" alt="" class="link-image"/><div>Download</div></a><a href="http://github.com/hedgehogqa/r-hedgehog" class="contribute-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca8795922793f077923c9a5_github-black.svg" width="28" height="28" alt="" class="link-image"/><div>Contribute</div></a></div></div></div><div class="get-list-spacer"></div><div class="get-language"><h4 class="get-name">Scala</h4><div class="get-body"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5caaa3ed1283e512420a5145_scala-purple-square.svg" width="100" alt="" class="get-image"/><div class="get-image-spacer"></div><div class="get-details"><h6 class="install-instruction">&quot;hedgehog&quot; %% &quot;hedgehog-sbt&quot;<br/>            % &quot;${commit}&quot;</h6><a href="https://bintray.com/hedgehogqa/scala-hedgehog" class="get-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca87c58d27f4dd5cb783bad_package.svg" width="28" height="28" alt="" class="link-image"/><div>Download</div></a><a href="http://github.com/hedgehogqa/scala-hedgehog" class="contribute-link w-inline-block"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca8795922793f077923c9a5_github-black.svg" width="28" height="28" alt="" class="link-image"/><div>Contribute</div></a></div></div></div></div></div><div class="footer"><img src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/5ca6d25b7fb85930a51f6d32_text-logo-white.svg" height="50" alt="" class="footer-image"/><div class="footer-info"><div class="footer-text">Website by Jacob Stanley</div><div class="footer-text">© Hedgehog Website Team 2019</div><div class="footer-text">Design by Jessica Stanley</div></div><div class="footer-info"><a href="/privacy" class="footer-link">Privacy Policy</a></div></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=5c86ee0a3f656c56d9d2bb35" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://uploads-ssl.webflow.com/5c86ee0a3f656c56d9d2bb35/js/webflow.e340015ac.js" type="text/javascript"></script><!--[if lte IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script><![endif]--></body></html>
\ No newline at end of file