diff --git a/enzyme.md b/enzyme.md
index c0f123c0e..8b1ed5c10 100644
--- a/enzyme.md
+++ b/enzyme.md
@@ -42,6 +42,93 @@ Shows HTML for debugging purposes.
See: [debug()](http://airbnb.io/enzyme/docs/api/ReactWrapper/debug.html)
+## Examples
+{: .-three-column}
+
+### Basic example
+{: .-prime}
+
+```js
+import { shallow } from 'enzyme'
+import MyComponent from '../MyComponent'
+```
+{: .-setup}
+
+```js
+it('works', () => {
+ const wrap = shallow(
+
+ )
+
+ expect(wrap.text()).toEqual('I am Groot')
+})
+```
+
+### Props and state
+
+#### Setting
+
+```js
+wrap.setProps({ name: 'Moe' })
+wrap.setState({ show: true })
+```
+
+#### Asserting
+
+```js
+expect(wrap.props('name')).toEqual('Moe')
+expect(wrap.state('show')).toEqual(true)
+```
+
+```js
+expect('name' in wrap.props()).toEqual(true)
+expect('show' in wrap.state()).toEqual(true)
+```
+
+### Matching elements
+
+```js
+expect(
+ wrap.containsMatchingElement(
+ I am groot
+ )
+).toBeTruthy()
+```
+
+`containsMatchingElement()` is probably the most useful assertion in Jest.
+
+### Snapshots
+
+```js
+expect(wrap).toMatchSnapshot()
+```
+
+Be sure you've set up enzyme-to-json for snapshots (see [Installing](#installing) below).
+
+### Traversions
+
+```js
+expect(
+ wrap.find('button').text()
+).toEqual('Submit')
+```
+
+Use `.find()` to traverse down to nodes. It will return wrapper objects, too.
+
+### Simulating events
+
+```js
+wrap.find('input').simulate('click')
+```
+
+#### With event object props
+
+```js
+wrap.find('input').simulate('change', {
+ target: { value: 'hello' }
+})
+```
+
## Installing
### Initial setup
@@ -111,23 +198,23 @@ See: [enzyme-to-json](https://www.npmjs.com/package/enzyme-to-json)
### Traversing
```js
-wrap.find('button') // => ReactWrapper
-wrap.filter('button') // => ReactWrapper
-wrap.not('span') // => ReactWrapper (inverse of filter())
-wrap.children() // => ReactWrapper
-wrap.parent() // => ReactWrapper
-wrap.closest('div') // => ReactWrapper
-wrap.childAt(0) // => ReactWrapper
-wrap.at(0) // => ReactWrapper
-wrap.first() // => ReactWrapper
-wrap.last() // => ReactWrapper
+wrap.find('button') // → ReactWrapper
+wrap.filter('button') // → ReactWrapper
+wrap.not('span') // → ReactWrapper (inverse of filter())
+wrap.children() // → ReactWrapper
+wrap.parent() // → ReactWrapper
+wrap.closest('div') // → ReactWrapper
+wrap.childAt(0) // → ReactWrapper
+wrap.at(0) // → ReactWrapper
+wrap.first() // → ReactWrapper
+wrap.last() // → ReactWrapper
```
```js
-wrap.get(0) // => ReactElement
-wrap.getNode() // => ReactElement
-wrap.getNodes() // => Array
-wrap.getDOMNode() // => DOMComponent
+wrap.get(0) // → ReactElement
+wrap.getNode() // → ReactElement
+wrap.getNodes() // → Array
+wrap.getDOMNode() // → DOMComponent
```
See: [Full rendering API](http://airbnb.io/enzyme/docs/api/mount.html)
@@ -141,15 +228,25 @@ wrap.simulate('click')
### React components
```js
-wrap.setState({ ... })
-wrap.setProps({ ... })
-wrap.setContext({ ... })
+wrap.setState({ ··· })
+wrap.setProps({ ··· })
+wrap.setContext({ ··· })
+```
-wrap.state() // => Any (get state)
-wrap.props() // => object (get props)
-wrap.context() // => Any (get context)
+```js
+wrap.state() // get full state
+wrap.props() // get full props
+wrap.context() // get full context
+```
-wrap.instance() // => ReactComponent
+```js
+wrap.state('key') // → any
+wrap.props('key') // → any
+wrap.context('key') // → any
+```
+
+```js
+wrap.instance() // → ReactComponent
```
### Mount
@@ -163,20 +260,23 @@ wrap.update() // calls forceUpdate()
### Tests
```js
-wrap.debug() // => string
-wrap.html() // => string
-wrap.text() // => string
-wrap.type() // => string | function
-wrap.name() // => string
-wrap.is('.classname') // => boolean
-wrap.hasClass('class') // => boolean
-wrap.exists() // => boolean
-wrap.contains() // => boolean
-wrap.contains([ ]) // => boolean
+wrap.debug() // → string
+wrap.html() // → string
+wrap.text() // → string
+wrap.type() // → string | function
+wrap.name() // → string
+wrap.is('.classname') // → boolean
+wrap.hasClass('class') // → boolean
+wrap.exists() // → boolean
+wrap.contains() // → boolean
+wrap.contains([ ]) // → boolean
+wrap.some('.child') // → boolean
-wrap.containsMatchingElement() // => boolean
-wrap.containsAllMatchingElements([ ]) // => boolean
-wrap.containsAnyMatchingElements([ ]) // => boolean
+wrap.someWhere(n => n.hasClass('foo'))
+
+wrap.containsMatchingElement() // → boolean
+wrap.containsAllMatchingElements([ ]) // → boolean
+wrap.containsAnyMatchingElements([ ]) // → boolean
```
## References