Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bhauman/cljs-test-display
Visual display for ClojureScript tests.
https://github.com/bhauman/cljs-test-display
clojure clojurescript testing testing-tools
Last synced: 5 days ago
JSON representation
Visual display for ClojureScript tests.
- Host: GitHub
- URL: https://github.com/bhauman/cljs-test-display
- Owner: bhauman
- Created: 2018-06-24T18:29:21.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-07-15T15:44:06.000Z (over 2 years ago)
- Last Synced: 2024-05-08T19:13:31.327Z (8 months ago)
- Topics: clojure, clojurescript, testing, testing-tools
- Language: Clojure
- Size: 25.4 KB
- Stars: 108
- Watchers: 7
- Forks: 10
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# cljs-test-display
[![Clojars Project](https://img.shields.io/clojars/v/com.bhauman/cljs-test-display.svg)](https://clojars.org/com.bhauman/cljs-test-display)
`cljs-test-display` is a library that produces a visual display of an
in-browser ClojureScript test run.## Overview
`cljs-test-display` is a ClojureScript library that you can use
along with your web-based test runner to provide visual and system
feedback for your test runs.If you have tests written with `cljs.test` and you can run them in the
browser you can use `cljs-test-display`.## Features
* Fully compatible with `cljs.test`
* Small understandable codebase
* Only a ClojureScript library, no server-side component
* No dependencies* Red/green favicon feedback
* Numbered stacktraces for test exceptions in the dev console
* Hide/show passing tests with a key-press
* System notifications for passing and failing test runs
* Straightforward integration
```clojure
;; where "app" is the HTML node where you want to mount the tests
(cljs.test/run-tests
(cljs-test-display.core/init! "app") ;;<-- initialize cljs-test-display here
'example.foo-test
'example.bar-test
'example.baz-test)
```# Usage
> You will need to be familiar with how to create a ClojureScript
> application and run it in a browser.### Dependencies
You will need to add `[com.bhauman/cljs-test-display "0.1.1"]` to your
project's dependencies *along with* a recent version of
ClojureScript. It has been tested with
`[org.clojure/cojurescript 1.10.238]` and above, but it should work
with almost any version of ClojureScript that includes `cljs.test`.### Test runner integration
First, you will need to require `cljs-test-display.core` in your test
runner, then call the `cljs-test-display.core/init!` function.
`init!` returns a `cljs.test` environment much like
`cljs.test/empty-env` initialized so that `cljs-test-display` is
engaged.Example: `test/example/test_runner.cljs`
```clojure
(ns example.test-runner
(:require
[cljs.test]
[cljs-test-display.core]
[example.foo-test]
[example.bar-test]
[example.baz-test])
(:require-macros
[cljs.test]))
(defn test-run []
;; where "app" is the HTML node where you want to mount the tests
(cljs.test/run-tests
(cljs-test-display.core/init! "app") ;;<-- initialize cljs-test-display here
'example.foo-test
'example.bar-test
'example.baz-test))
```Providing `init!` the element id is optional: `app` is the default.
It is important to note that the `cljs-test-display.core/init!`
function is designed to be called repeatedly in the same environment,
to facilitate hot reloading and test re-runs.> For the best development experience, invoke your test
> runner after every hot reload.### HTML host file
The HTML that hosts the tests can be very simple.
Example `resources/public/tests.html` file:
```html
```
## Configuration
You can configure `cljs-test-display` by adding keys to the
`:closure-defines` key in your ClojureScript compiler options.```clojure
{:main example.core
:output-to "main.js"
...
:closure-defines {
;; set the element id of where the tests will mount
cljs-test-display.core/root-node-id "test-app" ;; default "app"
;; disable the favicon changing behavior
cljs-test-display.core/change-favicon false ;; default true
;; disable the system notifications
cljs-test-display.core/notifications false ;; default true
;; enable the printing of test results
cljs-test-display.core/printing true ;; default false
}}
```### Providing your own style
You can override the injected CSS by supplying your own CSS via an HTML tag
with an id `cljs-test-display-style`.For Example:
```html
;; you can also place CSS here if you only wish to ammend the CSS
```
## Development
You should be able to work on `cljs-test-display` by forking/cloning
this repo and then `cd`ing into the `cljs-test-display` directory and
running.clojure -A:build
This will auto-compile and send all changes to the browser without the
need to reload. After the compilation process is complete, you will
get a Browser Connected REPL. An easy way to try it is:(js/alert "Am I connected?")
This should cause an alert to pop up in the browser window.
You will now be able to live edit the code in
`src/cljs-test-display/core.cljs` and live edit the CSS in
`resources/public/com/bhauman/cljs-test-display/css/style.css`.To clean all compiled files:
rm -rf target/public
## License
Copyright © 2018 Bruce Hauman
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.