A pure Clojure implementation of the Webdriver protocol, named after Etaoin Shrdlu — a typing machine that came to life after a mysterious note was produced on it.
Use the Etaoin library to automate a browser, test your frontend behaviour, simulate human actions or whatever you want.
-
Selenium-free: no big dependencies, no tons of downloaded jars, etc.
-
Lightweight, fast. Simple, easy to understand.
-
Compact: just one main namespace with a couple of helpers.
-
Declarative: the code is just a list of actions.
-
Currently supports Chrome, Firefox, Safari and Edge.
-
Can either connect to a remote WebDriver process, or have Etaoin launch one for you.
-
Run your unit tests directly from Emacs by pressing
C-t t
as usual. -
Can imitate human-like behaviour (delays, typos, etc).
API docs and articles are best viewed on cljdoc:
See also:
-
Thoughts on UI tests Ivan’s blog-post about pitfalls that can occur when testing UI.
-
Live-coding session where Ivan works through some Etaoin issues.
Some companies:
Some examples usages:
-
Control a SpaceX ISS Docking Simulator.
-
Automatically watch/refresh the browser when making edits to Babashka book.
-
Generate contributor badges for rewrite-clj, cljdoc and test-doc-blocks via a doc-update-readme babashka task.
You are most welcome to submit your company or project to this list.
Eatoin uses: major
.minor
.patch
-test-qualifier
-
major
increments when a non alpha release API has been broken - something, as a rule, we’d like to avoid. -
minor
increments to convey significant new features have been added. -
patch
indicates bug fixes or minor changes - it is the total number of releases to date. -
test-qualifier
is absent for stable releases. Can bealpha
,beta
,rc1
, etc.
Etaoin is open for your improvements and ideas. If any of unit tests fail on your machine, please submit an issue giving your OS version, browser and console output.