Remix.run Logo
rcxdude 9 hours ago

Not a good idea for CI tests. It will just make things flaky and gum up your PR/release process. Randomness or any form of nondeterminism should be in a different set of fuzzing tests (if you must use an RNG, a deterministic one is fine for CI).

dathinab 7 hours ago | parent | next [-]

if it makes thing flaky

then it actually is a huge success

because it found a bug you overlooked in both impl. and tests

at least iff we speak about unit tests

jstanley 6 hours ago | parent | next [-]

Only if it becomes obvious why it is flaky. If it's just sometimes broken but really hard to reproduce then it just gets piled on to the background level of flakiness and never gets fixed.

nomel 4 hours ago | parent [-]

To get around this, I have it log the relevant inputs, so it can be reproduced.

The whole concept of allowing a flaky unit test to exist is wild and dangerous to me. It makes a culture of ignoring real failures in what, should be, deterministic code.

marcosdumay 3 hours ago | parent [-]

Well, if people can't reproduce the failures, people won't fix them.

So, yes, logging the inputs is extremely important. So is minimizing any IO dependency in your tests.

But then that runs against another important rule, that integration tests should test the entire system, IO included. So, your error handling must always log very clearly the cause of any IO error it finds.

yxhuvud 4 hours ago | parent | prev | next [-]

This will often break on stuff like daylight saving changes, while almost as often you don't give a rats ass about the boundary behaviour.

tremon 5 hours ago | parent | prev [-]

Burma-shave

whynotmaybe 8 hours ago | parent | prev [-]

That's why it's "randomInt(1,42)", not "randomLong()".