<commit_before>---
title: Plugins
template: default.ejs
theme: light
repository: https://github.com/unexpectedjs/unexpected
---

# Plugins

Unexpected is designed to be highly extensible with new data types, assertions,
output styles and themes.

Here's a partial list of plugins for Unexpected:

* [unexpected-check](http://unexpected.js.org/unexpected-check/): Property
  based testing using unexpected.
* [unexpected-color](http://unexpected.js.org/unexpected-color/): Assertions for
  strings representing colors.
* [unexpected-couchdb](https://github.com/alexjeffburke/unexpected-couchdb/):
  Run your tests against a mock CouchDB server initialized to a given state.
* [unexpected-date](http://sushantdhiman.com/projects/unexpected-date/): Date/time assertions on Date object.
* [unexpected-dom](http://unexpected.js.org/unexpected-dom/): Assertions for
  XML/HTML DOM and HTML/XML strings. Works in the browser and in node.js via
  [jsdom](https://github.com/tmpvar/jsdom).
* [unexpected-exif](http://unexpected.js.org/unexpected-exif/): Assertions for
  EXIF data of images (node.js only).
* [unexpected-events](https://github.com/alexjeffburke/unexpected-events/):
  Assertions for unit testing EventEmitters.
* [unexpected-eventemitter](https://github.com/boneskull/unexpected-eventemitter/):
  Alternative assertions for unit testing EventEmitters.
* [unexpected-express](https://github.com/unexpectedjs/unexpected-express/): Express
  app/middleware assertions with a declarative syntax.
* [unexpected-http](https://github.com/unexpectedjs/unexpected-http/): Assertions for
  testing local or remote HTTP servers.
  Browser-compatible via browserify (experimental).
* [unexpected-image](http://unexpected.js.org/unexpected-image/): Assertions for
  image metadata (node.js only).
* [unexpected-knockout](http://unexpected.js.org/unexpected-knockout/): Add support
  for [Knockout.js](http://knockoutjs.com/) observables.
* [unexpected-messy](http://unexpected.js.org/unexpected-messy/): Assertions for
  HTTP messages (requests and responses) and mails (rfc2822). Browser-compatible.
* [unexpected-mitm](http://unexpected.js.org/unexpected-mitm/): Mock out HTTP
  and make assertions about the HTTP traffic that goes on while executing other
  assertions. Based on the [mitm](https://github.com/moll/node-mitm/) module.
  Only works with node.js and io.js.
* [unexpected-moment](http://unexpected.js.org/unexpected-moment/):
  Assertions for testing [moment.js](http://momentjs.com/) instances.
* [unexpected-preact](https://bruderstein.github.io/unexpected-preact/): Assertions for preact.js
* [unexpected-react](http://bruderstein.github.io/unexpected-react): Assertions for React.js. Assert using JSX.
* [unexpected-reaction](http://unexpected.js.org/unexpected-reaction/): An Unexpected plugin to make React testing with [unexpected-dom](https://munter.github.io/unexpected-dom/) more convenient.
* [unexpected-resemble](http://unexpected.js.org/unexpected-resemble/): Image resemblance
  assertions based on [resemble.js](http://huddle.github.io/Resemble.js/). Works in
  both node.js and the browser.
* [unexpected-set](http://unexpected.js.org/unexpected-set/): Add support for [Set](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set) instances.
* [unexpected-sinon](http://unexpected.js.org/unexpected-sinon/): Add support for
  [sinon](http://sinonjs.org/) spies.
* [unexpected-stream](http://unexpected.js.org/unexpected-stream/): Assertions for
  node.js streams.
* [unexpected-webdriver](https://github.com/fgnass/unexpected-webdriver): Assertions for Selenium WebDriver.
* [unexpected-generator](https://github.com/gertsonderby/unexpected-generator): Assertions for ES2015 generators and iterators.

## Installation

The recommended way to get plugins is installing them via npm:

```<commit_msg>Docs: Use https urls on the plugin page, fix a dead link<commit_after>---
title: Plugins
template: default.ejs
theme: light
repository: https://github.com/unexpectedjs/unexpected
---

# Plugins

Unexpected is designed to be highly extensible with new data types, assertions,
output styles and themes.

Here's a partial list of plugins for Unexpected:

* [unexpected-check](https://unexpected.js.org/unexpected-check/): Property
  based testing using unexpected.
* [unexpected-color](https://unexpected.js.org/unexpected-color/): Assertions for
  strings representing colors.
* [unexpected-couchdb](https://github.com/alexjeffburke/unexpected-couchdb/):
  Run your tests against a mock CouchDB server initialized to a given state.
* [unexpected-date](https://sushantdhiman.com/projects/unexpected-date/): Date/time assertions on Date object.
* [unexpected-dom](https://unexpected.js.org/unexpected-dom/): Assertions for
  XML/HTML DOM and HTML/XML strings. Works in the browser and in node.js via
  [jsdom](https://github.com/tmpvar/jsdom).
* [unexpected-exif](https://unexpected.js.org/unexpected-exif/): Assertions for
  EXIF data of images (node.js only).
* [unexpected-events](https://github.com/alexjeffburke/unexpected-events/):
  Assertions for unit testing EventEmitters.
* [unexpected-eventemitter](https://github.com/boneskull/unexpected-eventemitter/):
  Alternative assertions for unit testing EventEmitters.
* [unexpected-express](https://github.com/unexpectedjs/unexpected-express/): Express
  app/middleware assertions with a declarative syntax.
* [unexpected-http](https://github.com/unexpectedjs/unexpected-http/): Assertions for
  testing local or remote HTTP servers.
  Browser-compatible via browserify (experimental).
* [unexpected-image](https://unexpected.js.org/unexpected-image/): Assertions for
  image metadata (node.js only).
* [unexpected-knockout](https://unexpected.js.org/unexpected-knockout/): Add support
  for [Knockout.js](https://knockoutjs.com/) observables.
* [unexpected-messy](https://unexpected.js.org/unexpected-messy/): Assertions for
  HTTP messages (requests and responses) and mails (rfc2822). Browser-compatible.
* [unexpected-mitm](https://unexpected.js.org/unexpected-mitm/): Mock out HTTP
  and make assertions about the HTTP traffic that goes on while executing other
  assertions. Based on the [mitm](https://github.com/moll/node-mitm/) module.
  Only works with node.js and io.js.
* [unexpected-moment](https://unexpected.js.org/unexpected-moment/):
  Assertions for testing [moment.js](https://momentjs.com/) instances.
* [unexpected-preact](https://bruderstein.github.io/unexpected-preact/): Assertions for preact.js
* [unexpected-react](https://bruderstein.github.io/unexpected-react): Assertions for React.js. Assert using JSX.
* [unexpected-reaction](https://unexpected.js.org/unexpected-reaction/): An Unexpected plugin to make React testing with [unexpected-dom](https://munter.github.io/unexpected-dom/) more convenient.
* [unexpected-resemble](https://unexpected.js.org/unexpected-resemble/): Image resemblance
  assertions based on [resemble.js](https://rsmbl.github.io/Resemble.js/). Works in
  both node.js and the browser.
* [unexpected-set](https://unexpected.js.org/unexpected-set/): Add support for [Set](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set) instances.
* [unexpected-sinon](https://unexpected.js.org/unexpected-sinon/): Add support for
  [sinon](https://sinonjs.org/) spies.
* [unexpected-stream](https://unexpected.js.org/unexpected-stream/): Assertions for
  node.js streams.
* [unexpected-webdriver](https://github.com/fgnass/unexpected-webdriver): Assertions for Selenium WebDriver.
* [unexpected-generator](https://github.com/gertsonderby/unexpected-generator): Assertions for ES2015 generators and iterators.

## Installation

The recommended way to get plugins is installing them via npm:

```
{'fraction_non_alphanumeric': 0.13851699279093718, 'fraction_numerical': 0.0020597322348094747, 'mean_word_length': 4.994598765432099, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 46, 'lorem ipsum': 0, 'www.': 0, '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': '737946', 'n_tokens_mistral': 2434, 'n_tokens_neox': 2358, 'n_words': 539}