diff --git a/docs/dev-practices.md b/docs/dev-practices.md index 1be7496a6e..281f23fb51 100644 --- a/docs/dev-practices.md +++ b/docs/dev-practices.md @@ -139,7 +139,17 @@ By convention, a namespace's tests are found at a corresponding namespace of the same name with an added `-test` suffix. For example, tests for `frontend.db.model` are found in `frontend.db.model-test`. -There are a couple different ways to develop with tests: +There are a couple different ways to run tests: + +* [Focus tests](#focus-tests) - Run one or more tests from the CLI +* [Autorun tests](#autorun-tests) - Autorun tests from the CLI +* [Repl tests](#repl-tests) - Run tests from REPL + +There a couple types of tests and they can overlap with each other: + +* [Database tests](#database-tests) - Tests that involve a datascript DB. +* [Performance tests](#performance-tests) - Tests that aim to measure and enforce a performance characteristic. +* [Async tests](#async-tests) - Tests that run async code and require some helpers. #### Focus Tests @@ -166,6 +176,15 @@ To run tests automatically on file save, run `clojure -M:test watch test the `:ns-regexp` option e.g. `clojure -M:test watch test --config-merge '{:autorun true :ns-regexp "frontend.util.page-property-test"}'`. +#### REPL tests + +Most unit tests e.g. ones that are browser compatible and don't require node libraries, can be run from the REPL. To do so: + +* Start a REPL for your editor. See [here for an example](https://github.com/logseq/logseq/blob/master/docs/develop-logseq.md#repl-setup). +* Load a test namespace. +* Run `(cljs.test/run-tests)` to run tests for the current test namespace. + + #### Database tests To write a test that uses a datascript db: @@ -188,7 +207,7 @@ To write a performance test: For examples of these tests, see `frontend.db.query-dsl-test` and `frontend.db.model-test`. -### Async Unit Testing +#### Async Tests Async unit testing is well supported in ClojureScript. https://clojurescript.org/tools/testing#async-testing is a good guide for how to