<commit_before># Zombie.js
### Insanely fast, headless full-stack testing using Node.js

[![NPM](https://img.shields.io/npm/v/zombie.svg?style=flat-square&label=latest)](https://www.npmjs.com/package/zombie)
[![Changelog](https://img.shields.io/badge/see-CHANGELOG-red.svg?style=flat-square)](https://github.com/assaf/zombie/blob/master/CHANGELOG.md)
<img width="12" src="data:image/gif;base64,R0lGODlhAQABAPAAAP">
![Node](https://img.shields.io/node/v/zombie.svg?style=flat-square&label=io.js)
[![Travis.ci](https://img.shields.io/travis/assaf/zombie.svg?style=flat-square)](https://travis-ci.org/assaf/zombie)
<img width="12" src="data:image/gif;base64,R0lGODlhAQABAPAAAP">
[![JS.ORG](https://img.shields.io/badge/js.org-zombie-ffb400.svg?style=flat-square)](http://js.org)

**Zombie 4.x** is tested to work with [io.js](https://iojs.org/en/index.html).
For Node compatibility, consider using Zombie 3.x.



## The Bite

If you're going to write an insanely fast, headless browser, how can you not
call it Zombie?  Zombie it is.

Zombie.js is a lightweight framework for testing client-side JavaScript code in
a simulated environment.  No browser required.

Let's try to sign up to a page and see what happens:

```js
const Browser = require('zombie');

// We're going to make requests to http://example.com/signup
// Which will be routed to our test server localhost:3000
Browser.localhost('example.com', 3000);

describe('User visits signup page', function() {

  const browser = new Browser();

  before(function(done) {
    browser.visit('/signup', done);
  });

  describe('submits form', function() {<commit_msg>Another change to README<commit_after># Zombie.js
### Insanely fast, headless full-stack testing using Node.js

[![NPM](https://img.shields.io/npm/v/zombie.svg?style=flat-square&label=latest)](https://www.npmjs.com/package/zombie)
[![Changelog](https://img.shields.io/badge/see-CHANGELOG-red.svg?style=flat-square)](https://github.com/assaf/zombie/blob/master/CHANGELOG.md)
<img width="12" src="data:image/gif;base64,R0lGODlhAQABAPAAAP">
![Node](https://img.shields.io/node/v/zombie.svg?style=flat-square&label=io.js)
[![Travis.ci](https://img.shields.io/travis/assaf/zombie.svg?style=flat-square)](https://travis-ci.org/assaf/zombie)
<img width="12" src="data:image/gif;base64,R0lGODlhAQABAPAAAP">
[![JS.ORG](https://img.shields.io/badge/js.org-zombie-ffb400.svg?style=flat-square)](http://js.org)

**Zombie 4.x** is tested to work with [io.js 1.6 or later](https://iojs.org/en/index.html).
If you need to use Node 0.12 or earlier, consider using Zombie 2.x.



## The Bite

If you're going to write an insanely fast, headless browser, how can you not
call it Zombie?  Zombie it is.

Zombie.js is a lightweight framework for testing client-side JavaScript code in
a simulated environment.  No browser required.

Let's try to sign up to a page and see what happens:

```js
const Browser = require('zombie');

// We're going to make requests to http://example.com/signup
// Which will be routed to our test server localhost:3000
Browser.localhost('example.com', 3000);

describe('User visits signup page', function() {

  const browser = new Browser();

  before(function(done) {
    browser.visit('/signup', done);
  });

  describe('submits form', function() {
{'fraction_non_alphanumeric': 0.16458396830234684, 'fraction_numerical': 0.015544041450777202, 'mean_word_length': 4.956442831215971, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 18, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3154281', 'n_tokens_mistral': 1266, 'n_tokens_neox': 1183, 'n_words': 258}