
Zombie.js -- headless full-stack testing using node.js - johnm
http://zombie.labnotes.org/
======
Stuk
This looks very interesting.

If you're interested in testing on browsers with their heads intact, have a
look at the Watir project, for which Opera has just released an implementation
to complete the set: <http://operawatir.com>

Disclaimer: I work for Opera.

~~~
whimsy
<http://operawatir.com/> appears to be down.

~~~
ks
Correct URL: <http://operawatir.org/>

------
karterk
Very interesting. At my work, we use Selenium for writing automated functional
tests. I'm wondering how this will stack up against that... Is there a way to
capture a screen shot when an assert fails? Often, that has been very useful
in error resolution.

~~~
sleight42
A "screenshot" wouldn't be easily done without a browser. ;-)

However, there ought to be a way to dump the DOM as HTML that can then be
viewed in a browser. If the feature doesn't exist, it couldn't be all that
difficult to write.

------
hanibash
Oh wow. If this lets me test the bookmarklet I'm developing without setting up
a fake environment, you have made my life much easier. Will try it out real
soon.

------
wmwong
This looks interesting. Would anyone be able to explain why I would use this
over something like Capybara?

Side note: This is the same guy who gave us Vanity! Thanks!

~~~
sleight42
1\. Capybara is Ruby-specific (but generally awesome). This appears to be a
pure JS solution as far as I can tell.

2\. Capybara (currently) uses envjs for headless full-stack testing.

3\. JSDOM, used by Zombie.js, certainly has different characteristics that may
make it better/worse under some conditions.

4\. If you're thinking Ruby, I doubt that any gems currently integrate with
Zombie.js. However, that is also (somewhat easily) changed.

Sadly, full-stack testing in Ruby still kind of sucks. We spent a whole
session at Ruby DCamp 2010 discussing the state of affairs. As much as we'd
all like a robust headless solution, at the moment, the best browser simulator
is still a browser.

YMMV. I've had mixed results with env.js. While not as sexy, I've been using
Capybara with the Selenium driver with more success lately.

~~~
hgimenez
akephalos is also worth a look, as opposed to env.js. We've had much better
support for things like jquery live() using (a slightly hacked) akephalos:
[http://robots.thoughtbot.com/post/1658763359/thoughtbot-
and-...](http://robots.thoughtbot.com/post/1658763359/thoughtbot-and-the-holy-
grail)

------
endtime
Does this support SVG? Would it work for server-side rendering of Raphael.JS
drawings?

------
shadowpwner
I'm not too good with Javascript, but this would only work on domains you own,
correct?

~~~
udp
It'd work on any domain you like, but you need to run it on your own system.

I bet this could be used to write some very interesting Javascript-aware
crawlers/scrapers.

~~~
shadowpwner
Oh wow. Couldn't this easily be abused, if someone visited my Javascript page,
that automatically entered a form under their IP?

~~~
nlco
it runs on node.js (a server side software), not a browser. So no need to
worry about hijacking someones ip.

