1 | <h1 align="center">
|
2 | <img align="center" src="https://media.githubusercontent.com/media/dubzzz/fast-check/main/website/static/img/logo.png" alt="fast-check logo" />
|
3 | </h1>
|
4 |
|
5 | <p align="center">
|
6 | Property based testing framework for JavaScript/TypeScript
|
7 | </p>
|
8 |
|
9 | <p align="center">
|
10 | <a href="https://github.com/dubzzz/fast-check/actions?query=branch%3Amain+workflow%3A%22Build+Status%22"><img src="https://github.com/dubzzz/fast-check/workflows/Build%20Status/badge.svg?branch=main" alt="Build Status" /></a>
|
11 | <a href="https://badge.fury.io/js/fast-check"><img src="https://badge.fury.io/js/fast-check.svg" alt="npm version" /></a>
|
12 | <a href="https://www.npmjs.com/package/fast-check"><img src="https://img.shields.io/npm/dm/fast-check" alt="monthly downloads" /></a>
|
13 | <a href="https://fast-check.dev/"><img src="https://img.shields.io/badge/-Documentation-%23282ea9.svg" title="Documentation" /></a>
|
14 | </p>
|
15 | <p align="center">
|
16 | <a href="https://app.codecov.io/gh/dubzzz/fast-check/branch/main"><img src="https://codecov.io/gh/dubzzz/fast-check/branch/main/graph/badge.svg" alt="Coverage Status (unit tests)" /></a>
|
17 | <a href="https://packagequality.com/#?package=fast-check"><img src="https://packagequality.com/shield/fast-check.svg" alt="Package quality" /></a>
|
18 | <a href="https://snyk.io/advisor/npm-package/fast-check"><img src="https://snyk.io/advisor/npm-package/fast-check/badge.svg" alt="Snyk Package quality" /></a>
|
19 | <a href="https://securityscorecards.dev/viewer/?platform=github.com&org=dubzzz&repo=fast-check"><img src="https://api.securityscorecards.dev/projects/github.com/dubzzz/fast-check/badge" alt="OpenSSF Scorecard" /></a>
|
20 | <a href="https://bestpractices.coreinfrastructure.org/projects/7450"><img src="https://bestpractices.coreinfrastructure.org/projects/7450/badge" alt="OpenSSF Best Practices" /></a>
|
21 | </p>
|
22 | <p align="center">
|
23 | <a href="https://github.com/dubzzz/fast-check/labels/good%20first%20issue"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" /></a>
|
24 | <a href="https://github.com/dubzzz/fast-check/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/fast-check.svg" alt="License" /></a>
|
25 | <a href="https://twitter.com/intent/tweet?text=Check%20out%20fast-check%20by%20%40ndubien%20https%3A%2F%2Fgithub.com%2Fdubzzz%2Ffast-check%20%F0%9F%91%8D"><img src="https://img.shields.io/twitter/url/https/github.com/dubzzz/fast-check.svg?style=social" alt="Twitter" /></a>
|
26 | </p>
|
27 |
|
28 | ## Getting started
|
29 |
|
30 | Hands-on tutorial and definition of Property Based Testing: [๐ see tutorial](https://fast-check.dev/docs/tutorials/quick-start/). Or directly try it online on our pre-configured [CodeSandbox](https://codesandbox.io/s/github/dubzzz/fast-check/tree/main/examples?previewwindow=tests).
|
31 |
|
32 | Property based testing frameworks check the truthfulness of properties. A property is a statement like: _for all (x, y, ...) such that precondition(x, y, ...) holds predicate(x, y, ...) is true_.
|
33 |
|
34 | Install the module with: `yarn add fast-check --dev` or `npm install fast-check --save-dev`
|
35 |
|
36 | Example of integration in [mocha](http://mochajs.org/):
|
37 |
|
38 | ```js
|
39 | import fc from 'fast-check';
|
40 |
|
41 | // Code under test
|
42 | const contains = (text, pattern) => text.indexOf(pattern) >= 0;
|
43 |
|
44 | // Properties
|
45 | describe('properties', () => {
|
46 | // string text always contains itself
|
47 | it('should always contain itself', () => {
|
48 | fc.assert(fc.property(fc.string(), (text) => contains(text, text)));
|
49 | });
|
50 | // string a + b + c always contains b, whatever the values of a, b and c
|
51 | it('should always contain its substrings', () => {
|
52 | fc.assert(
|
53 | fc.property(fc.string(), fc.string(), fc.string(), (a, b, c) => {
|
54 | // Alternatively: no return statement and direct usage of expect or assert
|
55 | return contains(a + b + c, b);
|
56 | }),
|
57 | );
|
58 | });
|
59 | });
|
60 | ```
|
61 |
|
62 | In case of failure, the test raises a red flag. Its output should help you to diagnose what went wrong in your implementation. Example with a failing implementation of contain:
|
63 |
|
64 | ```
|
65 | 1) should always contain its substrings
|
66 | Error: Property failed after 1 tests (seed: 1527422598337, path: 0:0): ["","",""]
|
67 | Shrunk 1 time(s)
|
68 | Got error: Property failed by returning false
|
69 |
|
70 | Hint: Enable verbose mode in order to have the list of all failing values encountered during the run
|
71 | ```
|
72 |
|
73 | Integration with other test frameworks: [ava](https://github.com/dubzzz/fast-check-examples/blob/main/test-ava/example.spec.js), [jasmine](https://github.com/dubzzz/fast-check-examples/blob/main/test-jasmine/example.spec.js), [jest](https://github.com/dubzzz/fast-check-examples/blob/main/test-jest/example.spec.js), [mocha](https://github.com/dubzzz/fast-check-examples/blob/main/test/longest%20common%20substr/test.js) and [tape](https://github.com/dubzzz/fast-check-examples/blob/main/test-tape/example.spec.js).
|
74 |
|
75 | More examples: [simple examples](https://github.com/dubzzz/fast-check/tree/main/examples), [fuzzing](https://github.com/dubzzz/fuzz-rest-api) and [against various algorithms](https://github.com/dubzzz/fast-check-examples).
|
76 |
|
77 | Useful documentations:
|
78 |
|
79 | - [๐ Introduction to Property Based & Hands On](https://fast-check.dev/docs/tutorials/quick-start/)
|
80 | - [๐ฃ Built-in arbitraries](https://fast-check.dev/docs/core-blocks/arbitraries/)
|
81 | - [๐ง Custom arbitraries](https://fast-check.dev/docs/core-blocks/arbitraries/combiners/)
|
82 | - [๐โโ๏ธ Property based runners](https://fast-check.dev/docs/core-blocks/runners/)
|
83 | - [๐ฅ Tips](https://fast-check.dev/docs/configuration/)
|
84 | - [๐ API Reference](https://fast-check.dev/api-reference/index.html)
|
85 | - [โญ Awesome fast-check](https://fast-check.dev/docs/ecosystem/)
|
86 |
|
87 | ## Why should I migrate to fast-check?
|
88 |
|
89 | fast-check has initially been designed in an attempt to cope with limitations I encountered while using other property based testing frameworks designed for JavaScript:
|
90 |
|
91 | - **Types:** strong and up-to-date types - _thanks to TypeScript_
|
92 | - **Extendable:** easy `map` method to derive existing arbitraries while keeping shrink \[[more](https://fast-check.dev/docs/core-blocks/arbitraries/combiners/any/#map)\] - _some frameworks ask the user to provide both a->b and b->a mappings in order to keep a shrinker_
|
93 | - **Extendable:** kind of flatMap-operation called `chain` \[[more](https://fast-check.dev/docs/core-blocks/arbitraries/combiners/any/#chain)\] - _able to bind the output of an arbitrary as input of another one while keeping the shrink working_
|
94 | - **Extendable:** precondition checks with `fc.pre(...)` \[[more](https://fast-check.dev/docs/core-blocks/properties/#example)\] - _filtering invalid entries can be done directly inside the check function if needed_
|
95 | - **Extendable:** easily switch from fake data in tests to property based with `fc.gen()` \[[more](https://fast-check.dev/docs/core-blocks/arbitraries/others/#gen)\] - _generate random values within your predicates_
|
96 | - **Smart:** ability to shrink on `fc.oneof` \[[more](https://fast-check.dev/docs/core-blocks/arbitraries/combiners/any/#oneof)\] - _surprisingly some frameworks don't_
|
97 | - **Smart:** biased by default - _by default it generates both small and large values, making it easier to dig into counterexamples without having to tweak a size parameter manually_
|
98 | - **Debug:** verbose mode \[[more](https://fast-check.dev/docs/configuration/custom-reports/#verbosity)\]\[[tutorial](https://fast-check.dev/docs/tutorials/quick-start/read-test-reports/#how-to-increase-verbosity)\] - _easier troubleshooting with verbose mode enabled_
|
99 | - **Debug:** replay directly on the minimal counterexample \[[tutorial](https://fast-check.dev/docs/tutorials/quick-start/read-test-reports/#how-to-re-run)\] - _no need to replay the whole sequence, you get directly the counterexample_
|
100 | - **Debug:** custom examples in addition of generated ones \[[more](https://fast-check.dev/docs/configuration/user-definable-values/#run-against-custom-values)\] - _no need to duplicate the code to play the property on custom examples_
|
101 | - **Debug:** logger per predicate run \[[more](https://fast-check.dev/docs/core-blocks/arbitraries/others/#context)\] - _simplify your troubleshoot with fc.context and its logging feature_
|
102 | - **Unique:** model based approach \[[more](https://fast-check.dev/docs/advanced/model-based-testing/)\]\[[article](https://medium.com/criteo-labs/detecting-the-unexpected-in-web-ui-fuzzing-1f3822c8a3a5)\] - _use the power of property based testing to test UI, APIs or state machines_
|
103 | - **Unique:** detect race conditions in your code \[[more](https://fast-check.dev/docs/advanced/race-conditions/)\]\[[tutorial](https://fast-check.dev/docs/tutorials/detect-race-conditions/)\] - _shuffle the way your promises and async calls resolve using the power of property based testing to detect races_
|
104 | - **Unique:** simplify user definable corner cases \[[more](https://fast-check.dev/docs/configuration/user-definable-values/#shrink-custom-values)\] - _simplify bug resolution by asking fast-check if it can find an even simpler corner case_
|
105 |
|
106 | For more details, refer to the documentation in the links above.
|
107 |
|
108 | ### Trusted
|
109 |
|
110 | fast-check has been trusted for years by big projects like: [jest](https://github.com/jestjs/jest), [jasmine](https://github.com/jasmine/jasmine), [fp-ts](https://github.com/gcanti/fp-ts), [io-ts](https://github.com/gcanti/io-ts), [ramda](https://github.com/ramda/ramda), [js-yaml](https://github.com/nodeca/js-yaml), [query-string](https://github.com/sindresorhus/query-string)...
|
111 |
|
112 | ### Powerful
|
113 |
|
114 | It also proved useful in finding bugs among major open source projects such as [jest](https://github.com/jestjs/jest), [query-string](https://github.com/sindresorhus/query-string)... and [many others](https://fast-check.dev/docs/introduction/track-record/).
|
115 |
|
116 | ## Compatibility
|
117 |
|
118 | Here are the minimal requirements to use fast-check properly without any polyfills:
|
119 |
|
120 | | fast-check | node | ECMAScript version | _TypeScript (optional)_ |
|
121 | | ---------- | ------------------- | ------------------ | ----------------------- |
|
122 | | **3.x** | โฅ8<sup>(1)</sup> | ES2017 | โฅ4.1<sup>(2)</sup> |
|
123 | | **2.x** | โฅ8<sup>(1)</sup> | ES2017 | โฅ3.2<sup>(3)</sup> |
|
124 | | **1.x** | โฅ0.12<sup>(1)</sup> | ES3 | โฅ3.0<sup>(3)</sup> |
|
125 |
|
126 | <details>
|
127 | <summary>More details...</summary>
|
128 |
|
129 | 1. Except for features that cannot be polyfilled - such as `bigint`-related ones - all the capabilities of fast-check should be usable given you use at least the minimal recommended version of node associated to your major of fast-check.
|
130 | 2. Require either lib or target โฅ ES2020 or `@types/node` to be installed.
|
131 | 3. Require either lib or target โฅ ES2015 or `@types/node` to be installed.
|
132 |
|
133 | </details>
|
134 |
|
135 | ### ReScript bindings
|
136 |
|
137 | Bindings to use fast-check in [ReScript](https://rescript-lang.org) are available in package [rescript-fast-check](https://www.npmjs.com/rescript-fast-check). They are maintained by [@TheSpyder](https://github.com/TheSpyder) as an external project.
|
138 |
|
139 | ## Contributors โจ
|
140 |
|
141 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
142 |
|
143 |
|
144 |
|
145 |
|
146 | <table>
|
147 | <tbody>
|
148 | <tr>
|
149 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/dubzzz"><img src="https://avatars.githubusercontent.com/u/5300235?v=4?s=100" width="100px;" alt="Nicolas DUBIEN"/><br /><sub><b>Nicolas DUBIEN</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=dubzzz" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=dubzzz" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=dubzzz" title="Tests">โ ๏ธ</a> <a href="#infra-dubzzz" title="Infrastructure (Hosting, Build-Tools, etc)">๐</a> <a href="#design-dubzzz" title="Design">๐จ</a> <a href="#maintenance-dubzzz" title="Maintenance">๐ง</a></td>
|
150 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/hath995"><img src="https://avatars.githubusercontent.com/u/381037?v=4?s=100" width="100px;" alt="Aaron Elligsen"/><br /><sub><b>Aaron Elligsen</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=hath995" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=hath995" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=hath995" title="Tests">โ ๏ธ</a></td>
|
151 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/willheslam"><img src="https://avatars.githubusercontent.com/u/5377213?v=4?s=100" width="100px;" alt="Will Heslam"/><br /><sub><b>Will Heslam</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=willheslam" title="Documentation">๐</a></td>
|
152 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/kazchimo"><img src="https://avatars.githubusercontent.com/u/31263328?v=4?s=100" width="100px;" alt="kazchimo"/><br /><sub><b>kazchimo</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=kazchimo" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=kazchimo" title="Documentation">๐</a></td>
|
153 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/brandon-leapyear"><img src="https://avatars.githubusercontent.com/u/27799541?v=4?s=100" width="100px;" alt="Brandon Chinn"/><br /><sub><b>Brandon Chinn</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=brandon-leapyear" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=brandon-leapyear" title="Documentation">๐</a></td>
|
154 | <td align="center" valign="top" width="14.28%"><a href="http://safareli.github.io/resume/"><img src="https://avatars.githubusercontent.com/u/1932383?v=4?s=100" width="100px;" alt="Irakli Safareli"/><br /><sub><b>Irakli Safareli</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=safareli" title="Documentation">๐</a></td>
|
155 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/TheSpyder"><img src="https://avatars.githubusercontent.com/u/298292?v=4?s=100" width="100px;" alt="Andrew Herron"/><br /><sub><b>Andrew Herron</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=TheSpyder" title="Documentation">๐</a> <a href="#plugin-TheSpyder" title="Plugin/utility libraries">๐</a></td>
|
156 | </tr>
|
157 | <tr>
|
158 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/EricCrosson"><img src="https://avatars.githubusercontent.com/u/1596818?v=4?s=100" width="100px;" alt="Eric Crosson"/><br /><sub><b>Eric Crosson</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=EricCrosson" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=EricCrosson" title="Code">๐ป</a></td>
|
159 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/burrscurr"><img src="https://avatars.githubusercontent.com/u/23213508?v=4?s=100" width="100px;" alt="burrscurr"/><br /><sub><b>burrscurr</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=burrscurr" title="Documentation">๐</a></td>
|
160 | <td align="center" valign="top" width="14.28%"><a href="https://www.dijonkitchen.org/"><img src="https://avatars.githubusercontent.com/u/11434205?v=4?s=100" width="100px;" alt="JC (Jonathan Chen)"/><br /><sub><b>JC (Jonathan Chen)</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=dijonkitchen" title="Documentation">๐</a></td>
|
161 | <td align="center" valign="top" width="14.28%"><a href="http://fixate.it/"><img src="https://avatars.githubusercontent.com/u/1510520?v=4?s=100" width="100px;" alt="Larry Botha"/><br /><sub><b>Larry Botha</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=larrybotha" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=larrybotha" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=larrybotha" title="Tests">โ ๏ธ</a></td>
|
162 | <td align="center" valign="top" width="14.28%"><a href="https://epa.ms/RomanGusev"><img src="https://avatars.githubusercontent.com/u/5839225?v=4?s=100" width="100px;" alt="Roman Gusev"/><br /><sub><b>Roman Gusev</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=102" title="Documentation">๐</a></td>
|
163 | <td align="center" valign="top" width="14.28%"><a href="https://timwis.com/"><img src="https://avatars.githubusercontent.com/u/761444?v=4?s=100" width="100px;" alt="Tim Wisniewski"/><br /><sub><b>Tim Wisniewski</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=timwis" title="Documentation">๐</a></td>
|
164 | <td align="center" valign="top" width="14.28%"><a href="https://world.hey.com/brais"><img src="https://avatars.githubusercontent.com/u/17855450?v=4?s=100" width="100px;" alt="Brais Piรฑeiro"/><br /><sub><b>Brais Piรฑeiro</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=brapifra" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=brapifra" title="Tests">โ ๏ธ</a></td>
|
165 | </tr>
|
166 | <tr>
|
167 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/brds"><img src="https://avatars.githubusercontent.com/u/118620?v=4?s=100" width="100px;" alt="Renaud-Pierre Bordes"/><br /><sub><b>Renaud-Pierre Bordes</b></sub></a><br /><a href="#design-brds" title="Design">๐จ</a></td>
|
168 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/fwip"><img src="https://avatars.githubusercontent.com/u/190414?v=4?s=100" width="100px;" alt="Jemma Nelson"/><br /><sub><b>Jemma Nelson</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=fwip" title="Documentation">๐</a></td>
|
169 | <td align="center" valign="top" width="14.28%"><a href="http://fullof.bs/"><img src="https://avatars.githubusercontent.com/u/77482?v=4?s=100" width="100px;" alt="John Haugeland"/><br /><sub><b>John Haugeland</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=StoneCypher" title="Documentation">๐</a></td>
|
170 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/treydavis"><img src="https://avatars.githubusercontent.com/u/1691239?v=4?s=100" width="100px;" alt="Trey Davis"/><br /><sub><b>Trey Davis</b></sub></a><br /><a href="#design-treydavis" title="Design">๐จ</a></td>
|
171 | <td align="center" valign="top" width="14.28%"><a href="https://leonzalion.com/"><img src="https://avatars.githubusercontent.com/u/36966635?v=4?s=100" width="100px;" alt="Leon Si"/><br /><sub><b>Leon Si</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=leonzalion" title="Documentation">๐</a></td>
|
172 | <td align="center" valign="top" width="14.28%"><a href="http://spion.github.io/"><img src="https://avatars.githubusercontent.com/u/502412?v=4?s=100" width="100px;" alt="Gorgi Kosev"/><br /><sub><b>Gorgi Kosev</b></sub></a><br /><a href="#infra-spion" title="Infrastructure (Hosting, Build-Tools, etc)">๐</a></td>
|
173 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/mayconsacht"><img src="https://avatars.githubusercontent.com/u/5214042?v=4?s=100" width="100px;" alt="mayconsacht"/><br /><sub><b>mayconsacht</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=mayconsacht" title="Code">๐ป</a></td>
|
174 | </tr>
|
175 | <tr>
|
176 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/paldepind"><img src="https://avatars.githubusercontent.com/u/521604?v=4?s=100" width="100px;" alt="Simon Friis Vindum"/><br /><sub><b>Simon Friis Vindum</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=paldepind" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=paldepind" title="Tests">โ ๏ธ</a></td>
|
177 | <td align="center" valign="top" width="14.28%"><a href="https://twitter.com/gibson042"><img src="https://avatars.githubusercontent.com/u/1199584?v=4?s=100" width="100px;" alt="Richard Gibson"/><br /><sub><b>Richard Gibson</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=gibson042" title="Documentation">๐</a></td>
|
178 | <td align="center" valign="top" width="14.28%"><a href="https://alanharper.com.au/"><img src="https://avatars.githubusercontent.com/u/475?v=4?s=100" width="100px;" alt="Alan Harper"/><br /><sub><b>Alan Harper</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=aussiegeek" title="Documentation">๐</a></td>
|
179 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/Osman-Sodefa"><img src="https://avatars.githubusercontent.com/u/90332566?v=4?s=100" width="100px;" alt="Makien Osman"/><br /><sub><b>Makien Osman</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=Osman-Sodefa" title="Code">๐ป</a></td>
|
180 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/sommd"><img src="https://avatars.githubusercontent.com/u/7817485?v=4?s=100" width="100px;" alt="David Sommerich"/><br /><sub><b>David Sommerich</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=sommd" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=sommd" title="Tests">โ ๏ธ</a></td>
|
181 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/diegopedro94"><img src="https://avatars.githubusercontent.com/u/7157796?v=4?s=100" width="100px;" alt="Diego Pedro"/><br /><sub><b>Diego Pedro</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=diegopedro94" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=diegopedro94" title="Tests">โ ๏ธ</a></td>
|
182 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/BoruiGu"><img src="https://avatars.githubusercontent.com/u/8686167?v=4?s=100" width="100px;" alt="Borui Gu"/><br /><sub><b>Borui Gu</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=BoruiGu" title="Documentation">๐</a></td>
|
183 | </tr>
|
184 | <tr>
|
185 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/eventualbuddha"><img src="https://avatars.githubusercontent.com/u/1938?v=4?s=100" width="100px;" alt="Brian Donovan"/><br /><sub><b>Brian Donovan</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=eventualbuddha" title="Documentation">๐</a></td>
|
186 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/volrk"><img src="https://avatars.githubusercontent.com/u/32265974?v=4?s=100" width="100px;" alt="volrk"/><br /><sub><b>volrk</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=volrk" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=volrk" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=volrk" title="Tests">โ ๏ธ</a></td>
|
187 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/tinydylan"><img src="https://avatars.githubusercontent.com/u/41112113?v=4?s=100" width="100px;" alt="tinydylan"/><br /><sub><b>tinydylan</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=tinydylan" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=tinydylan" title="Tests">โ ๏ธ</a></td>
|
188 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/jasikpark"><img src="https://avatars.githubusercontent.com/u/10626596?v=4?s=100" width="100px;" alt="Caleb Jasik"/><br /><sub><b>Caleb Jasik</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=jasikpark" title="Documentation">๐</a></td>
|
189 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/rulai-hu"><img src="https://avatars.githubusercontent.com/u/2570932?v=4?s=100" width="100px;" alt="Rulai Hu"/><br /><sub><b>Rulai Hu</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=rulai-hu" title="Documentation">๐</a></td>
|
190 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/afonsojramos"><img src="https://avatars.githubusercontent.com/u/19473034?v=4?s=100" width="100px;" alt="Afonso Jorge Ramos"/><br /><sub><b>Afonso Jorge Ramos</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=afonsojramos" title="Documentation">๐</a></td>
|
191 | <td align="center" valign="top" width="14.28%"><a href="https://tjenkinson.me/"><img src="https://avatars.githubusercontent.com/u/3259993?v=4?s=100" width="100px;" alt="Tom Jenkinson"/><br /><sub><b>Tom Jenkinson</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=tjenkinson" title="Documentation">๐</a></td>
|
192 | </tr>
|
193 | <tr>
|
194 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/phormio"><img src="https://avatars.githubusercontent.com/u/28146332?v=4?s=100" width="100px;" alt="phormio"/><br /><sub><b>phormio</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=phormio" title="Documentation">๐</a></td>
|
195 | <td align="center" valign="top" width="14.28%"><a href="http://buildo.io/"><img src="https://avatars.githubusercontent.com/u/2643520?v=4?s=100" width="100px;" alt="Giovanni Gonzaga"/><br /><sub><b>Giovanni Gonzaga</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=giogonzo" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=giogonzo" title="Tests">โ ๏ธ</a></td>
|
196 | <td align="center" valign="top" width="14.28%"><a href="https://caurea.org/"><img src="https://avatars.githubusercontent.com/u/34538?v=4?s=100" width="100px;" alt="Tomas Carnecky"/><br /><sub><b>Tomas Carnecky</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=wereHamster" title="Code">๐ป</a></td>
|
197 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/Djaler"><img src="https://avatars.githubusercontent.com/u/7964583?v=4?s=100" width="100px;" alt="Kirill Romanov"/><br /><sub><b>Kirill Romanov</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=Djaler" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=Djaler" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=Djaler" title="Tests">โ ๏ธ</a></td>
|
198 | <td align="center" valign="top" width="14.28%"><a href="https://giovannyg.github.io/"><img src="https://avatars.githubusercontent.com/u/5326411?v=4?s=100" width="100px;" alt="Giovanny Gonzรกlez"/><br /><sub><b>Giovanny Gonzรกlez</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=giovannyg" title="Documentation">๐</a></td>
|
199 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/markkulube"><img src="https://avatars.githubusercontent.com/u/34955942?v=4?s=100" width="100px;" alt="Mark Kulube"/><br /><sub><b>Mark Kulube</b></sub></a><br /><a href="#infra-markkulube" title="Infrastructure (Hosting, Build-Tools, etc)">๐</a></td>
|
200 | <td align="center" valign="top" width="14.28%"><a href="http://www.undiscoveredfeatures.com/"><img src="https://avatars.githubusercontent.com/u/354848?v=4?s=100" width="100px;" alt="Peter Hamilton"/><br /><sub><b>Peter Hamilton</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=hamiltop" title="Code">๐ป</a></td>
|
201 | </tr>
|
202 | <tr>
|
203 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/ChineduOzodi"><img src="https://avatars.githubusercontent.com/u/11678369?v=4?s=100" width="100px;" alt="Chinedu Ozodi"/><br /><sub><b>Chinedu Ozodi</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=ChineduOzodi" title="Documentation">๐</a></td>
|
204 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/gunar"><img src="https://avatars.githubusercontent.com/u/7684574?v=4?s=100" width="100px;" alt="Gunar Gessner"/><br /><sub><b>Gunar Gessner</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=gunar" title="Documentation">๐</a></td>
|
205 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/CSBatchelor"><img src="https://avatars.githubusercontent.com/u/18668440?v=4?s=100" width="100px;" alt="Christian Batchelor"/><br /><sub><b>Christian Batchelor</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=CSBatchelor" title="Tests">โ ๏ธ</a></td>
|
206 | <td align="center" valign="top" width="14.28%"><a href="https://tomeraberba.ch/"><img src="https://avatars.githubusercontent.com/u/23299544?v=4?s=100" width="100px;" alt="Tomer Aberbach"/><br /><sub><b>Tomer Aberbach</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=TomerAberbach" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=TomerAberbach" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=TomerAberbach" title="Tests">โ ๏ธ</a></td>
|
207 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/0xflotus"><img src="https://avatars.githubusercontent.com/u/26602940?v=4?s=100" width="100px;" alt="0xflotus"/><br /><sub><b>0xflotus</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=0xflotus" title="Documentation">๐</a></td>
|
208 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/CodeLenny"><img src="https://avatars.githubusercontent.com/u/9272847?v=4?s=100" width="100px;" alt="Ryan Leonard"/><br /><sub><b>Ryan Leonard</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=CodeLenny" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=CodeLenny" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=CodeLenny" title="Tests">โ ๏ธ</a></td>
|
209 | <td align="center" valign="top" width="14.28%"><a href="https://blog.bitjson.com/"><img src="https://avatars.githubusercontent.com/u/904007?v=4?s=100" width="100px;" alt="Jason Dreyzehner"/><br /><sub><b>Jason Dreyzehner</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=bitjson" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=bitjson" title="Tests">โ ๏ธ</a></td>
|
210 | </tr>
|
211 | <tr>
|
212 | <td align="center" valign="top" width="14.28%"><a href="https://matinzd.dev/"><img src="https://avatars.githubusercontent.com/u/24797481?v=4?s=100" width="100px;" alt="Matin Zadeh Dolatabad"/><br /><sub><b>Matin Zadeh Dolatabad</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=matinzd" title="Code">๐ป</a></td>
|
213 | <td align="center" valign="top" width="14.28%"><a href="http://goo.gl/IlWG8U"><img src="https://avatars.githubusercontent.com/u/500?v=4?s=100" width="100px;" alt="Juan Juliรกn Merelo Guervรณs"/><br /><sub><b>Juan Juliรกn Merelo Guervรณs</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=JJ" title="Documentation">๐</a></td>
|
214 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/SimenB"><img src="https://avatars.githubusercontent.com/u/1404810?v=4?s=100" width="100px;" alt="Simen Bekkhus"/><br /><sub><b>Simen Bekkhus</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=SimenB" title="Documentation">๐</a></td>
|
215 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/tskj"><img src="https://avatars.githubusercontent.com/u/25415972?v=4?s=100" width="100px;" alt="Tarjei Skjรฆrset"/><br /><sub><b>Tarjei Skjรฆrset</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=tskj" title="Documentation">๐</a></td>
|
216 | <td align="center" valign="top" width="14.28%"><a href="http://denisgorbachev.com/"><img src="https://avatars.githubusercontent.com/u/829578?v=4?s=100" width="100px;" alt="Denis Gorbachev"/><br /><sub><b>Denis Gorbachev</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=DenisGorbachev" title="Documentation">๐</a></td>
|
217 | <td align="center" valign="top" width="14.28%"><a href="http://senocular.github.io/"><img src="https://avatars.githubusercontent.com/u/3536716?v=4?s=100" width="100px;" alt="Trevor McCauley"/><br /><sub><b>Trevor McCauley</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=senocular" title="Documentation">๐</a></td>
|
218 | <td align="center" valign="top" width="14.28%"><a href="http://grantkiely.com/"><img src="https://avatars.githubusercontent.com/u/1948935?v=4?s=100" width="100px;" alt="Grant Kiely"/><br /><sub><b>Grant Kiely</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=gkiely" title="Documentation">๐</a></td>
|
219 | </tr>
|
220 | <tr>
|
221 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/vecerek"><img src="https://avatars.githubusercontent.com/u/5737996?v=4?s=100" width="100px;" alt="Attila Veฤerek"/><br /><sub><b>Attila Veฤerek</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=vecerek" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=vecerek" title="Documentation">๐</a> <a href="https://github.com/dubzzz/fast-check/commits?author=vecerek" title="Tests">โ ๏ธ</a></td>
|
222 | <td align="center" valign="top" width="14.28%"><a href="http://www.zachbjornson.com/"><img src="https://avatars.githubusercontent.com/u/469365?v=4?s=100" width="100px;" alt="Zach Bjornson"/><br /><sub><b>Zach Bjornson</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=zbjornson" title="Code">๐ป</a> <a href="https://github.com/dubzzz/fast-check/commits?author=zbjornson" title="Documentation">๐</a></td>
|
223 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/bennettp123"><img src="https://avatars.githubusercontent.com/u/1610227?v=4?s=100" width="100px;" alt="Bennett Perkins"/><br /><sub><b>Bennett Perkins</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=bennettp123" title="Documentation">๐</a></td>
|
224 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/nielk"><img src="https://avatars.githubusercontent.com/u/4980521?v=4?s=100" width="100px;" alt="Alexandre Oger"/><br /><sub><b>Alexandre Oger</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=nielk" title="Documentation">๐</a></td>
|
225 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/ej-shafran"><img src="https://avatars.githubusercontent.com/u/116496520?v=4?s=100" width="100px;" alt="ej shafran"/><br /><sub><b>ej shafran</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=ej-shafran" title="Documentation">๐</a></td>
|
226 | <td align="center" valign="top" width="14.28%"><a href="https://github.com/gruhn"><img src="https://avatars.githubusercontent.com/u/26570572?v=4?s=100" width="100px;" alt="Niklas Gruhn"/><br /><sub><b>Niklas Gruhn</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=gruhn" title="Code">๐ป</a></td>
|
227 | <td align="center" valign="top" width="14.28%"><a href="https://patrickroza.com/"><img src="https://avatars.githubusercontent.com/u/42661?v=4?s=100" width="100px;" alt="Patrick Roza"/><br /><sub><b>Patrick Roza</b></sub></a><br /><a href="https://github.com/dubzzz/fast-check/commits?author=patroza" title="Code">๐ป</a></td>
|
228 | </tr>
|
229 | </tbody>
|
230 | </table>
|
231 |
|
232 |
|
233 |
|
234 |
|
235 |
|
236 |
|
237 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! [Become one of them](CONTRIBUTING.md)
|
238 |
|
239 | ## Sponsors ๐ธ
|
240 |
|
241 | Many individuals and companies offer their financial support to the project, a huge thanks to all of them too ๐
|
242 |
|
243 | <a href="https://github.com/sponsors/dubzzz"><img align="center" src="https://raw.githubusercontent.com/dubzzz/sponsors-svg/main/sponsorkit/sponsors.svg" alt="all sponsors" /></a>
|
244 |
|
245 | You can also become one of them by contributing via [GitHub Sponsors](https://github.com/sponsors/dubzzz) or [OpenCollective](https://opencollective.com/fast-check/contribute).
|