- Notifications
You must be signed in to change notification settings - Fork4
Clojure UI testing with Chrome
License
milankinen/cuic
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Clojure UI testing with Chrome. Special thanks to Timo L. for the awesome logo!
I needed a library for writing robust and maintainable UI tests for my workand hobby Clojure(Script) projects. The library had to run on top of theJVM to simplify test setups and enable code sharing, but without theannoying WebDriver version hassle.cuic
is a response to fill that gap.
The design of the current version ofcuic
is the result of countless(re)written tests, hours after hours of CI test runs and endless debuggingsessions, driven by the following core principles:
- Prefer Clojure core data structures and language featuresto custom macros and DSLs
- Minimal and unambiguous but easily extendable API
- Seamless integration with
clojure.test
and the tooling around it - First class REPL usage
Here's a small snippet showing how to test the classicTodoMVC app withcuic
(nsexample-todomvc-tests (:require [clojure.test:refer:all] [cuic.core:as c] [cuic.test:refer [deftest* is* browser-test-fixture]]))(use-fixtures:once (browser-test-fixture))(defntodos [] (->> (c/query".todo-list li") (map c/text-content)))(defnadd-todo [text] (doto (c/find".new-todo") (c/fill text)) (c/press 'Enter))(deftest*creating-new-todos (c/goto"http://todomvc.com/examples/react") (is* (= [] (todos))) (add-todo"Hello world!") (is* (= ["Hello world!"] (todos))) (add-todo"Tsers!") (is* (= ["Hello world!""Tsers!"] (todos))))
Eachcuic
function has a Clojure doc-string describing its behaviour and usage.Generated API docs and guides are also available incljdoc.org.
- Etaoin - Pure Clojure implementation of Webdriver protocol
- clj-chrome-devtools - Clojure wrapper for Chrome Debug Protocol
MIT
About
Clojure UI testing with Chrome