# webica I've just pushed the first version of my new Clojure wrapper for [Selenium][se] called [webica][webica]. The reason I need **webica** is that I want to do automated browser testing for [ClojureScript][cljs] based web applications. Certainly NodeJS, PhantomJS, Nashorn and the like are useful... but these can't quite emulate the full browser experience. We want to test our ClojureScript web apps in browsers -- ideally via our favorite automated continuous integration tools.

Selenium
My new approach with the **webica** library is to do full Java introspection in the spirit that [amazonica][amazonica] does for the AWS API. In fact I wanted to take it a step further by actually generating Clojure source code via introspection that can be used by Codox to generate nice API docs (which you don't get with amazonica). That, alas, was a little trickier than expected due to pesky [Quine][quine]-like problems :) . If you load the library on the REPL you can get a feeling for each namespace by calling the `show-functions` function. I realize this approach of aggressive introspection, playing fast and loose with types and application level dynamic dispatch are crazy antipatterns. In my defense I started out playing around to see "if I could do it". After seeing the result in the form of a *shell script* in Clojure -- imitating [lmgtfy][lmgtfy] -- perhaps **webica** will actually be useful! I plan to talk about **webica** tonight at [clojure.mn][clojuremn] -- hope to see you there! [[!tag clojure web selenium]] [se]: http://docs.seleniumhq.org/ [webica]: https://github.com/tmarble/webica [cljs]: https://github.com/clojure/clojurescript [clojuremn]: http://www.meetup.com/clojuremn/events/232762945/ [amazonica]: https://github.com/mcohen01/amazonica [quine]: https://en.wikipedia.org/wiki/Quine_%28computing%29 [lmgtfy]: https://github.com/tmarble/webica/blob/master/examples/lmgtfy