RCF (turn your Rich Comment Forms into tests) now has async test support

Async support for RCF test blocks is now available! RCF turns your Rich Comment Forms into tests. Now develop async expressions at your REPL, with the full Clojure interactive experience. Try it: https://github.com/hyperfiddle/rcf

RCF is a tool for thought and communication. We made RCF because at Hyperfiddle we pair on ridiculously hard problems all day long, and we found that we subconsciously avoided writing tests while pairing due to context switching costs. It takes 5-10 minutes to find the right test place in some deep folder structure and then write out lines of boilerplate, interrupting and destroying the shared debug context that pairing so painstakingly establishes. The result was that our pairing sessions got frustratingly stuck due to being unable to detect confusion in the heat of the moment. (And TBH it was not just when pairing that we avoided writing tests…)

RCF reduces test writing costs to zero, so you can write a test in mid-thought. Now, at any point when pairing, we say “I don’t understand, show me a test”, and you can do it right then and there in the same file. Once challenged, the driver often realized that he assumed he understood something, but his test revealed that he didn’t! Establishing tests as a foundation for thought has drastically increased the happiness of our pairing sessions, and our capacity to successfully share abstract ideas for which we don’t even have the words.

We’ve been using async RCF internally for about a quarter. We’re preparing to use RCF to document and teach Missionary, a state-of-art functional effect and streaming system for Clojure/Script that currently suffers from a steep learning curve. We’re already using RCF to test, document and teach Photon, our reactive dialect of Clojure/Script that can express a streaming client/server web application as a single distributed expression. Without RCF, we could not have come to a shared understanding of Photon, let alone teach it to someone else. What is a reactive closure? What is a distributed closure? Better write a test!

We hope RCF also lets you take your team’s communication to the next level.

Changes since the initial release in July 2021:

  • async tests for clojure/script
  • streamlined easy setup
5 Likes

That’s great, I think it is time I try it out, too often my rich comment forms are temporary tests that really I should lift into real tests, but I end up just deleting them most of the time haha, cause I’m not in the “writing test mindset” yet. Maybe with RCF I can just make them tests directly and keep them in the file.

1 Like