dubzzz / fast-check

Property based testing framework for JavaScript (like QuickCheck) written in TypeScript
https://fast-check.dev/
MIT License
4.3k stars 178 forks source link

Consider separating the arbitrary system to a separate package so we can use it just for data generation #3527

Open CMCDragonkai opened 1 year ago

CMCDragonkai commented 1 year ago

💡 Idea

I'm thinking of using the arbitrary system as a very powerful fake data generator for some database work. But it doesn't involve any js based testing.

Motivation

Would be nice to just import the code necessary for arbitraries instead of bringing all the other utilities for testing.

Example

import arbitraries from 'fast-check-arbitraries`
dubzzz commented 1 year ago

Splitting fast-check into sub-packages was initially the motivation guiding us to adopt a monorepo approach but it came with an extra maintenance cost:

But benefits are low. Actually, basic tree shaking already offers such capabilities without the overhead on package side. Only requirement on fast-check's side being to be tree shakeable (not yet the case). But if we start being tree shakeable it should solve most of the issues.

dubzzz commented 1 year ago

To make my answer clearer: tree shaking will probably be a first step, then split will probably happen but the exact split will require a deep thinking given the possible additional costs it might bring