MithrilJS / ospec

Noiseless testing framework
MIT License
49 stars 13 forks source link

ospec: use string substitution to expose values in assertion reports #31

Open barneycarroll opened 3 years ago

barneycarroll commented 3 years ago

ospecs messaging processes assertion values differently depending on environment. Under Node it uses util.inspect, the platforms preferred tool for debugging; but in the browser it falls back to a loosely opinionated custom process for stringifying values.

Browser consoles are much richer than Nodes' terminal output and could be better served by making use of string substitution, which allow intelligent representations of complex entities - see below for current vs suggested behaviour for exotic objects logged by ospec in Chrome

image

Happy to implement this myself.

pygy commented 3 years ago

I would have transferred this to MithrilJS/ospec, but I've been stripped of my admin rights...

What gives @isiahmeadows? I'm not exactly active, but I don't remember stepping down either.

pygy commented 3 years ago

This would require keeping structured assertion results, rather than strigifying on the fly as we do now...

The results are exposed to custom reporters, and some people take advantage of this, so the custom stringification will have to be kept around until the next major version.

barneycarroll commented 3 years ago

I agree ospec reporting data shouldn’t be contingent on output APIs but I feel it should be easy enough to change the shape of the records to store the assertion operands — the (re)substitution could then take place as a runtime operation in o.report.

pygy commented 3 years ago

Agreed!