Full-stack ClojureScript unit etc. testing?

We usually write full-stack Clojure apps, and for these our editor (Cider) powered testing is invaluable for TDD. We write tests and then write code to make those tests pass, quickly hopping from code to test and rerunning as necessary in just a couple of keystrokes. But how shall such testing work for front-end ClojureScript? We’ve even gone so far on some apps as to write as much as possible in cljc for the single purpose of allowing it to be logically checked by our back-end. For one while we used Etaoin GitHub - clj-commons/etaoin: Pure Clojure Webdriver protocol implementation but that is only checking the interface; it doesn’t hit the point of testing functions. Also, we test our routes with handler tests and mocks; we don’t need any CLJS testing for this.

We inherited from our early Luminus derivation some dependencies and file-structure for doorunner GitHub - bensu/doo: doo is a library and lein plugin to run cljs.test on different js environments. , which appears outdated now (which matters when dealing with things touching Javascript). But my questions are beside that:

  • With a full-stack app, which front-end things SHOULD be tested?

  • HOW do you test them (tooling, libraries, etc)?