Property based testing framework for JavaScript (like QuickCheck) written in TypeScript
Installations
npm install fast-check
Score
99.7
Supply Chain
100
Quality
89.4
Maintenance
100
Vulnerability
100
License
Releases
Faster instantiation of internet-related arbitraries
Published on 03 Nov 2024
Rework our testing stack
Published on 01 Nov 2024
Rework our testing stack
Published on 01 Nov 2024
Rework our testing stack
Published on 01 Nov 2024
Rework our testing stack
Published on 01 Nov 2024
Rework our testing stack
Published on 01 Nov 2024
Developer
Developer Guide
Module System
CommonJS, ESM
Min. Node Version
>=8.0.0
Typescript Support
Yes
Node Version
20.18.0
NPM Version
10.8.2
Statistics
4,357 Stars
5,352 Commits
182 Forks
19 Watching
23 Branches
70 Contributors
Updated on 29 Nov 2024
Bundle Size
162.47 kB
Minified
48.65 kB
Minified + Gzipped
Languages
TypeScript (95.47%)
JavaScript (2.95%)
MDX (1.03%)
CSS (0.43%)
Shell (0.13%)
Total Downloads
Cumulative downloads
Total Downloads
69,368,415
Last day
-62.4%
200,323
Compared to previous day
Last week
-14.6%
2,048,371
Compared to previous week
Last month
12.6%
8,602,815
Compared to previous month
Last year
278.4%
44,571,476
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Property based testing framework for JavaScript/TypeScript
Getting started
Hands-on tutorial and definition of Property Based Testing: 🏁 see tutorial. Or directly try it online on our pre-configured CodeSandbox.
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.
Install the module with: yarn add fast-check --dev
or npm install fast-check --save-dev
Example of integration in mocha:
1import fc from 'fast-check'; 2 3// Code under test 4const contains = (text, pattern) => text.indexOf(pattern) >= 0; 5 6// Properties 7describe('properties', () => { 8 // string text always contains itself 9 it('should always contain itself', () => { 10 fc.assert(fc.property(fc.string(), (text) => contains(text, text))); 11 }); 12 // string a + b + c always contains b, whatever the values of a, b and c 13 it('should always contain its substrings', () => { 14 fc.assert( 15 fc.property(fc.string(), fc.string(), fc.string(), (a, b, c) => { 16 // Alternatively: no return statement and direct usage of expect or assert 17 return contains(a + b + c, b); 18 }), 19 ); 20 }); 21});
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:
1) should always contain its substrings
Error: Property failed after 1 tests (seed: 1527422598337, path: 0:0): ["","",""]
Shrunk 1 time(s)
Got error: Property failed by returning false
Hint: Enable verbose mode in order to have the list of all failing values encountered during the run
Integration with other test frameworks: ava, jasmine, jest, mocha and tape.
More examples: simple examples, fuzzing and against various algorithms.
Useful documentations:
- 🏁 Introduction to Property Based & Hands On
- 🐣 Built-in arbitraries
- 🔧 Custom arbitraries
- 🏃♂️ Property based runners
- 💥 Tips
- 🔌 API Reference
- ⭐ Awesome fast-check
Why should I migrate to fast-check?
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:
- Types: strong and up-to-date types - thanks to TypeScript
- Extendable: easy
map
method to derive existing arbitraries while keeping shrink [more] - some frameworks ask the user to provide both a->b and b->a mappings in order to keep a shrinker - Extendable: kind of flatMap-operation called
chain
[more] - able to bind the output of an arbitrary as input of another one while keeping the shrink working - Extendable: precondition checks with
fc.pre(...)
[more] - filtering invalid entries can be done directly inside the check function if needed - Extendable: easily switch from fake data in tests to property based with
fc.gen()
[more] - generate random values within your predicates - Smart: ability to shrink on
fc.oneof
[more] - surprisingly some frameworks don't - 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
- Debug: verbose mode [more][tutorial] - easier troubleshooting with verbose mode enabled
- Debug: replay directly on the minimal counterexample [tutorial] - no need to replay the whole sequence, you get directly the counterexample
- Debug: custom examples in addition of generated ones [more] - no need to duplicate the code to play the property on custom examples
- Debug: logger per predicate run [more] - simplify your troubleshoot with fc.context and its logging feature
- Unique: model based approach [more][article] - use the power of property based testing to test UI, APIs or state machines
- Unique: detect race conditions in your code [more][tutorial] - shuffle the way your promises and async calls resolve using the power of property based testing to detect races
- Unique: simplify user definable corner cases [more] - simplify bug resolution by asking fast-check if it can find an even simpler corner case
For more details, refer to the documentation in the links above.
Trusted
fast-check has been trusted for years by big projects like: jest, jasmine, fp-ts, io-ts, ramda, js-yaml, query-string...
Powerful
It also proved useful in finding bugs among major open source projects such as jest, query-string... and many others.
Compatibility
Here are the minimal requirements to use fast-check properly without any polyfills:
fast-check | node | ECMAScript version | TypeScript (optional) |
---|---|---|---|
3.x | ≥8(1) | ES2017 | ≥4.1(2) |
2.x | ≥8(1) | ES2017 | ≥3.2(3) |
1.x | ≥0.12(1) | ES3 | ≥3.0(3) |
More details...
- 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. - Require either lib or target ≥ ES2020 or
@types/node
to be installed. - Require either lib or target ≥ ES2015 or
@types/node
to be installed.
ReScript bindings
Bindings to use fast-check in ReScript are available in package rescript-fast-check. They are maintained by @TheSpyder as an external project.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome! Become one of them
Sponsors 💸
Many individuals and companies offer their financial support to the project, a huge thanks to all of them too 💓
You can also become one of them by contributing via GitHub Sponsors or OpenCollective.
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
update tool detected
Details
- Info: detected update tool: RenovateBot: .github/renovate.json:1
Reason
project is fuzzed
Details
- Info: TypeScriptPropertyBasedTesting integration found: examples/001-simple/decompPrime/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/001-simple/fibonacci/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/001-simple/indexOf/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/001-simple/sort/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/002-recursive/isSearchTree/arbitraries/BinarySearchTreeArbitrary.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/002-recursive/isSearchTree/arbitraries/BinaryTreeArbitrary.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/002-recursive/isSearchTree/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/003-misc/knight/arbitraries/SpaceArbitrary.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/003-misc/knight/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/003-misc/mazeGenerator/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/003-misc/mazeGenerator/src/mazeGenerator.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/003-misc/roman/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/004-stateMachine/musicPlayer/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/004-stateMachine/musicPlayer/model-based/MusicPlayerCommands.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/004-stateMachine/musicPlayer/model-based/MusicPlayerModel.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/005-race/counter/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/005-race/dependencyTree/main.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/005-race/supertest/app.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/005-race/todolist/model-based/Model.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: examples/vitest.setup.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/ava/src/ava-fast-check.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/ava/test-types/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test-types/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/e2e/Bundle.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/e2e/seed.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/__test-helpers__/ArbitraryAssertions.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/__test-helpers__/FloatingPointHelpers.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/__test-helpers__/ShrinkTree.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/__test-helpers__/SizeHelpers.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/__test-helpers__/SpyCleaner.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/AdapterArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/ArrayArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/ArrayInt64Arbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/BigIntArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/CloneArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/ConstantArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/FrequencyArbitrary.part1.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/FrequencyArbitrary.part2.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/IntegerArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/LimitedShrinkArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/MixedCaseArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/StreamArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/SubarrayArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/WithShrinkFromOtherArbitrary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/builders/AnyArbitraryBuilder.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/builders/TypedIntArrayArbitraryBuilder.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/ArrayInt64.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/BiasNumericRange.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/CustomEqualSet.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/DoubleHelpers.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/DoubleOnlyHelpers.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/FloatHelpers.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/GraphemeRangesHelpers.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/InvalidSubdomainLabelFiIter.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/MaxLengthFromMinLength.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/SameValueSet.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/SameValueZeroSet.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/ShrinkBigInt.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/ShrinkInteger.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/StrictlyEqualSet.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/TextEscaper.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/ToggleFlags.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/helpers/ZipIterableIterators.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/implementations/SchedulerImplem.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/implementations/SlicedBasedGenerator.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/CharsToString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/CodePointsToString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/IndexToCharString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/NatToStringifiedNat.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/NumberToPaddedEight.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/PaddedEightsToUuid.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/PartsToUrl.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/PatternsToString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/SegmentsToPath.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/TimeToDate.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/UintToBase32String.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/UnboxedToBoxed.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/VersionsApplierForUuid.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/_internals/mappers/WordsToLorem.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/array.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/ascii.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/asciiString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/base64.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/base64String.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/bigInt.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/bigIntN.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/bigUint.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/bigUintN.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/char.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/char16bits.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/commands.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/compareBooleanFunc.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/compareFunc.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/constant.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/constantFrom.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/date.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/dictionary.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/domain.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/double.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/emailAddress.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/float.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/float32Array.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/float64Array.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/fullUnicode.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/fullUnicodeString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/func.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/hexa.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/hexaString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/integer.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/jsonValue.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/lorem.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/mapToConstant.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/nat.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/oneof.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/option.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/record.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/sparseArray.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/string.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/string16bits.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/stringMatching.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/stringOf.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/unicode.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/unicodeJsonValue.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/unicodeString.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/uniqueArray.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/uuid.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/uuidV.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/webAuthority.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/webPath.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/arbitrary/webUrl.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/model/ModelRunner.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/model/ReplayPath.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/model/commands/CommandsIterable.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/precondition/Pre.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/property/AsyncProperty.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/property/Property.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/Runner.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/Sampler.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/SourceValuesIterator.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/Tosser.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/configuration/GlobalParameters.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/configuration/QualifiedParameters.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/runner/reporter/RunExecution.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/check/symbols.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/random/generator/Random.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/utils/hash.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/fast-check/test/unit/utils/stringify.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/internals/TestBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/internals/TestBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/internals/TestWithPropRunnerBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/internals/TestWithPropRunnerBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/internals/types.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/jest-fast-check-worker.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/src/jest-fast-check.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test-types/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test/jest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test/jest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test/jest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test/jest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/jest/test/types.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/internals/TestBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/internals/TestBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/internals/TestWithPropRunnerBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/internals/TestWithPropRunnerBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/internals/types.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/src/vitest-fast-check.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/test-types/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/test/vitest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/test/vitest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/test/vitest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/vitest/test/vitest-fast-check.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/MainThreadRunner.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/SharedTypes.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/ValueFromState.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/ValueFromState.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-property/NoopWorkerProperty.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-property/WorkerPropertyBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-property/WorkerPropertyBuilder.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-property/WorkerPropertyFromWorker.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-property/WorkerPropertyFromWorker.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/internals/worker-runner/WorkerRunner.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/src/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test-types/main.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/asyncThrow.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/blockEventLoop.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/concurrentAssert.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/failing.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/noWorker.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/nonSerializableButSameData.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/nonSerializableButSameData.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/nonSerializableData.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/passing.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/predicateIsolation.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/propertyIsolation.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/supportPre.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/syncThrow.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/e2e/unregistered.spec.ts:2
- Info: TypeScriptPropertyBasedTesting integration found: packages/worker/test/internals/worker-property/WorkerPropertyFromWorker.spec.ts:2
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Reason
packaging workflow detected
Details
- Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build-status.yml:603
Reason
all dependencies are pinned
Details
- Info: 70 out of 70 GitHub-owned GitHubAction dependencies pinned
- Info: 2 out of 2 third-party GitHubAction dependencies pinned
Reason
SAST tool is run on all commits
Details
- Info: SAST configuration detected: CodeQL
- Info: all commits (30) are checked with a SAST tool
Reason
security policy file detected
Details
- Info: security policy file detected: SECURITY.md:1
- Info: Found linked content: SECURITY.md:1
- Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1
- Info: Found text in security policy: SECURITY.md:1
Reason
GitHub workflow tokens follow principle of least privilege
Details
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:889
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:729
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:849
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:689
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:649
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:769
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:809
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:609
- Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:17
- Warn: jobLevel 'contents' permission set to 'write': .github/workflows/generate-changelog.yml:13
- Info: topLevel 'contents' permission set to 'read': .github/workflows/build-status.yml:20
- Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:10
- Info: topLevel 'contents' permission set to 'read': .github/workflows/generate-changelog.yml:6
- Info: topLevel 'contents' permission set to 'read': .github/workflows/safe-release.yml:17
- Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18
Reason
3 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
- Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm
Reason
project has 2 contributing companies or organizations -- score normalized to 6
Details
- Info: pigment contributor org/company found, screenmeet contributor org/company found,
Reason
badge detected: Passing
Reason
branch protection is not maximal on development and all release branches
Details
- Info: 'allow deletion' disabled on branch 'main'
- Info: 'force pushes' disabled on branch 'main'
- Info: 'branch protection settings apply to administrators' is required to merge on branch 'main'
- Info: 'stale review dismissal' is required to merge on branch 'main'
- Warn: branch 'main' does not require approvers
- Warn: codeowners review is not required on branch 'main'
- Warn: 'last push approval' is disable on branch 'main'
- Warn: 'up-to-date branches' is disable on branch 'main'
- Info: status check found to merge onto on branch 'main'
- Info: PRs are required in order to make changes on branch 'main'
Score
8.9
/10
Last Scanned on 2024-11-29T22:10:06Z
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More