# 3.0.1 / 2018-03-29

* bump electron to fix #1424

# 3.0.0 / 2018-03-02

* BREAKING: remove window.\_\_nightmare.ipc to resolve the major security issues (#1390)
* BREAKING: properly serialize error values (#1391)
* added linting, formatting and a git pre-commit hook (#1386)
* Added ability to specify the client certificate selected by electron (#1339)
* adding selector to the timeout error in .wait() (#1381)
* Pin Electron version (#1270)
* Fix error on preload (#1247)
* Add mouseout action to complement mouseover (#1238)
* fix problems that are rejected when adding child actions with objects. (#1093)
* Set mouse position for mouse events (#1077)
* Repaired support for multiple timeouts in FrameManager (#945)

# 2.10.0 / 2017-02-23

* Remove redundant docs for 'log' event from README
* changed some `var` declarations to `const`
* replace the 404 link with valid link
* added Promise override tests
* added docs for new Promise override features
* added ability to override internal Promise library

# 2.9.1 / 2017-01-02

* Minor touchups to key press documentation
* Link to Electron documentation updated
* Updates speed information on the readme
* Swaps Yahoo example out for a faster DuckDuckGo example
* Fixes an issue where `nightmare` may be undefined in the browser at injection time
* Changes screenshot rendering to use debugger API instead of forcing a DOM change

# 2.9.0 / 2016-12-17

* Prevents unload dialogs, allowing Nightmare to end gracefully
* `.end(fn)` now uses `.then()` under the covers
* **Possibly breaking change:** Nightmare will now default to using a non-persistent partition. Data between executions of Nightmare will no longer be saved.
* Adds `.mouseup()` action
* Fixes several typos/copy-paste errors in the readme, as well as clarifying error-first callbacks
* Adds `.path()` to get the URL's route (as opposed to the fully-qualified URL)

# 2.8.1 / 2016-10-20

* Fixes parsing issues with arguments to `evaluate_now`
* Upgrades to Electron 1.4.4

# 2.8.0 / 2016-10-20

* Fixes a missing semicolon in the first readme example
* Fixes a reference error inside `.wait()` when using `node --use_strict`
* Adds missing documentation for `.mouseover()`
* Corrects a typo in the readme
* Removes dependency on `object-assign`
* Adds `.halt()` API to stop Nightmare execution immediately
* Fixes `blur` exception when elements are removed by keyboard events
* **Possibly breaking change:** Changes `.evaluate()` to allow for asynchronous execution. If the `.evaluate()`d function's arity is one less than the passed in parameters, it'll assume the last argument to the function is the callback. If the return value is a thenable, it'll call `then()` to wait for promise fulfillment. Otherwise, the call will behave synchronously as it does now.

# 2.7.0 / 2016-09-05

* Adds `.wait(element, timeout)` to wait for whichever comes first
* `.end()` will now end Electron gracefully instead of issuing a `SIGKILL`
* Touches up readme for `.end()`

# 2.6.1 / 2016-08-08

* Fixes treating provisional load failures as real load failures

# 2.6.0 / 2016-08-02

* Makes the CircleCI badge an SVG
* Adds an option for `.type()` to control time elapsed between keystrokes with `typeInterval`
* Adds `.cookies.clearAll()` to clear all cookies
* Fixes crashing if the Electron process is closed first
* Adds `pollInterval` as an option to control the tick time for `.wait()`
* Forces Nightmare to error on bad HTTP authentication
* Fixes a crash by omitting event data due to circular references
* Adds environment variable forwarding to the Electron process
* Fixes `openDevTools` docs to be more explicit about detaching the devtools tray
* Fixes the link to the preload script

# 2.5.3 / 2016-07-08

* Adds better proxy information to the readme
* Fixes a readme typo
* Updates `ipcRenderer` usage for preload scripts in readme
* Bumps Electron to version 1.2.5

# 2.5.2 / 2016-06-20

* Fixes `Referer` header support
* Removes timeout between keystrokes when using `.type()`
* Checks instance existence when calling `.end()`
* Adds a link to `nightmare-examples`
* Changes `yield` to `.then()` in readme
* Swaps `did-finish-loading` for `did-stop-loading` when waiting for page transitions
* Adds optional `loadTimeout` for server responses that do not end

# 2.5.1 / 2016-06-07

* Bumps Electron dependency to 1.2.1.
* Removes a `sender` workaround
* Moves the start of Electron from the constructor into the queue

# 2.5.0 / 2016-05-27

* adds a timeout to `.goto()` such that pages that load the DOM but never finish are considered successful, otherwise failing, preventing a hang.
* updates the example script and readme file for consistency.
* reports with more helpful messages when the element does not exist when running `.click()`, `.mousedown()` and `.mouseover()`.
* `.coookies.clear()` with no arguments will clear all cookies for the current domain.
* adds Node engine information to package and ensures CircleCI builds and tests against 4.x, 5.x and 6.x.
* removes extranneous `javascript` event listeners upon execution completion or error.
* adds `.once()` and `.removeListener()` for more complete Electron process event handling.

# 2.4.1 / 2016-05-19

* Points invalid test URLs to the `.tld` domain
* Switches javascript templates over to using template strings.
* Adds better switch tests
* Javascript `goto`s now only wait if the main frame is loading
* Allows a Nightmare instance to use `.catch()` without a `.then()`
* Fixes a deprecated IPC inclusion in tests
* `.goto()` rejects with a helpful message when `url` is not provided

# 2.4.0 / 2016-05-05

* adds call safety with IPC callbacks
* adds `.engineVersions()` to get Electron and Chrome versions, as well as Nightmare.version
* changes Yahoo example to use more robust selectors, adds `.catch()`
* adds a check for `runner` arguments

# 2.3.4 / 2016-04-23

* blurs text inputs when finished with `.type()` or `.input()`, including clearing selectors
* now errors properly for non-existent selectors when using `.type()` and `.input()`
* strips `sender` from Electron -> parent process forwarded events
* improves test speed for dev tools
* fixes `.then()` to comply with A+ promises
* pipes Electron output to `debug` prefixed with `electron:`
* cleans up several exception test cases using `.should.be.rejected` from `chai-as-promised`
* upgrades to Electron 0.37.7
* removes `process` event listeners when a Nightmare instance ends
* fixes support for `javascript:` urls

# 2.3.3 / 2016-04-19

* fixes `.goto()` failing when the page does not load
* fixes deprecated Electron APIs
* adds testing for deprecated API usage in Electron

# 2.3.2 / 2016-04-14

* fixes the `.wait(selector)` comment
* adds documentation about headers
* adds an interim gitter badge
* adds a unit test for `openDevTools`
* bumps to electron 0.37.5
* adds a wrapper to run unit tests when on CircleCI, when Xvfb is running, or the `HEADLESS` environment variable is set. Prevents Nightmare from hanging when running headlessly.
* `.evaluate()` errors if a function to evaluate is not supplied

# 2.3.1 / 2016-04-11

* fixes passing uncaught exceptions back to the default handler after cleanup
* fixes overhead due to automatic subscription to frame data for screenshots
* Adds unicode documentation for `.type()`

# 2.3.0 / 2016-04-02

* extends `.action()` to include adding actions on the Electron process
* adds a debugging message to inspect how Electron exited
* ensures multiple instances of Nightmare do not use the same `waitTimeout` value
* ensures cookies are not shared across tests
* adds basic HTTP authentication
* fixes `console.log` with injected/evaluated script
* ensures screenshots match the currently rendered frame
* adds ability to open and detach dev tools
* removes the double-injection from `.inject()`
* adds ability to save entire page as HTML

# 2.2.0 / 2016-02-16

* .then() now returns a full promise instead of nightmare. update yahoo example.

# 2.1.6 / 2016-02-01

* Fix failed wait with queued up functions
* fix fullscreen switching (#434)

# 2.1.5 / 2016-02-01

* add .insert(selector[, text]).
* improve .type(selector[, text]) robustness.
* bump electron and fix API updates.

# 2.1.4 / 2016-01-28

* added debugging flags to README
* Update use of electron APIs to kill deprecation warnings for 1.0
* Implement dock option
* added default waitTimout
* page event listener fix

# 2.1.3 / 2016-01-18

* added ability to uncheck
* now properly fails with integer wait time
* Added ability to return buffer from pdf
* add ability to clear cookies
* Added a documentation for .viewport(width, height)
* Uncomment OS X dock hide
* fix setting electron paths

# 2.1.2 / 2015-12-25

* Support typing in non-strings
* Support Chrome command line switches.
* fix eventemitter leak message
* Blur focussed on click. Fixes #400

# 2.1.1 / 2015-12-21

* clears inputs on falsey/empty values

# 2.1.0 / 2015-12-17

* **BREAKING**: changed `page-error`, `page-alert`, and `page-log` to `console` with types `error`, `alert`, `log`
* **BREAKING**: fixed signature on nightmare.on('console', ...), to act more like console.log(...)

* use native electron sendInputEvent for nightmare.type(...)
* properly shutdown nightmare after certain tests and update formatting on the readme
* add events for prompt, alert, confirm, and the other console events
* update docs for preload script
* support passing in a custom preload script
* Update PDF Options
* follow new BrowserWindow option naming
* remove useless mocha opt
* implement `electronPath` option
* Fixed 'args is not defined' error for paths option

# 2.0.9 / 2015-12-09

* add Nightmare.action(name, action|namespace) and nightmare.use(plugin)
* bump dependencies
* Add header() method, and optional headers param to goto()
* "manipulation" fixture fixed to correctly test horizontal scrolling
* Viewport size changed in the 'should set viewport' test (for test passing on small screen resolution).
* prevent alerts from blocking
* Add support to wait(fn) for passing arguments from node context to browser context, just like evaluate()
* better cross-platform tests
* add mousedown event
* add nightmare.cookies.get(...) and nightmare.cookies.set(...) support
* improve screenshot documentation
* remove `.only` from buffered image test case
* return a buffered image if no path is provided
* Allow overriding Electron app paths
* Update mocha-generators so tests run

# 2.0.8 / 2015-11-24

* pointing to versioned Electron documentation
* Use "did-stop-loading" event in "continue"
* Fix menu sub-section URL in documentation
* updating yahoo mocha example so it works with yahoo's changes, fixes #275
* adding a more complete example, fixes #295
* updating atom events links, fixes #312 and #258
* set make test as the npm test target
* log and error event clean up
* Added license to package.json
* replace co-mocha w/ mocha-generators
* Allow for user-specified web-preferences options.
* Add test case for 'type' The test case of 'type and click' doesn't ensure 'type' works
* Remove old evaluate method, fix #257

# 2.0.7 / 2015-10-01

* updated and clarified docs
* fixed package.json description, thanks @tscanlin
* better error handling for ipc, thanks @davidnaas

  # 2.0.6 / 2015-09-25

* changing the tests to point to github to avoid the great firewall fix #249
* Use node-integration for electron, fix scripts loading fix #242 #247
* Remove after and util in test/index.js
* adding windows debug hint

  # 2.0.5 / 2015-09-20

* adding .useragent() support back, thanks @jefeweisen!

  # 2.0.4 / 2015-09-20

* improving logging for screenshot, events and goto

  # 2.0.3 / 2015-09-19

* improving test cleanup, thanks @fritx!
* bumping electron from 0.32.2 to 0.33.0

  # 2.0.2 / 2015-09-13

* improving tests for rendering
* adding support for screenshot clip rect #107

  # 2.0.1 / 2015-09-13

* updated package.json
* credits to @matthewmueller!

# 2.0.0 / 2015-06-01

* see #200 for details
* added generator love
* switched to electron to speed things up
* many many thanks to @matthewmueller!

# 1.8.1 / 2015-04-27

* Fix escaping of selectors in .wait(selector) thanks @thotypous
* Updated Mocha link thanks @mortonfox

# 1.8.0 / 2015-03-23

* handling phantom crashes more gracefully
* fixing tests by using a local server and static fixtures
* feat(docs): add google-oauth2 plugin
* fixing links
* clearer ToC and clearer evaluate docs from #89

# 1.7.0 / 2015-01-26

* adding pdf ignore, fixing test timeout
* adding new resourceRequestStarted event for executing in phantomjs context
* Add scrollTo feature. Resolves #130.
* Adds zoom feature. Resolves #136.
* added error handling for requiring file extension in screenshot
* added documentation for supported filetypes for .screenshot
* add json parsing guard to test
* adding link to tests for more examples
* updating readme with clearer function lists and sections, and mocha test example
* add readme for headers()
* add tests for headers()
* add headers method
* upping timeouts
* Add ability to save an A4 sized PDF
* add check and select

# 1.6.5 / 2014-11-11

* updating tests and fixing global port issue
* Adding sequential test case
* adding multiple clicks across multiple pages test

# 1.6.4 / 2014-11-10

* fixing non-existent elem issue in .visible(), fixes #108

# 1.6.3 / 2014-11-09

* bumping circleci test version and timeout
* eliminating global phantom instance and state, fixes #104

# 1.6.2 / 2014-11-09

* .type() now uses uses phantom's sendEvent to trigger keypress events. Fixes #81. (by @johntitus)

# 1.6.1 / 2014-11-09

* bumping phantom to ~0.7.0, fixes #101
* readme tweaks
* adding resourceError event to docs

# 1.6.0 / 2014-11-02

* adding timeout handling (by @johntitus)
* cleaning up styles in tests, adding tests for timeout event

# 1.5.3 / 2014-11-02

* Add ability to specify a custom PhantomJS path (by @kevva)

# 1.5.2 / 2014-11-02

* updating readme to explain .on() before .goto()
* fixing callbacks for .wait()
* adding grep to makefile tests
* adding check for file existence before file upload, fixes #11

# 1.5.1 / 2014-10-26

* making clicks cancelable to allow for ajax forms

# 1.5.0 / 2014-10-22

* adding docs and support for ssl, proxy and other cli args

# 1.4.0 / 2014-10-22

* added .exists() (by @johntitus)
* Added .visible(selector) (by @johntitus)
* Added .authentication(user,password) (by @johntitus)

# 1.3.3 / 2014-10-20

* fix for 'Option to run phantom without weak' (by @securingsincity)

# 1.3.2 / 2014-10-15

* clarifying a readme example, see #55

# 1.3.1 / 2014-10-15

* expanding the readme (by @johntitus)

# 1.3.0 / 2014-10-15

* adding a on() action to handle phantom page events (by @johntitus)

# 1.2.0 / 2014-10-15

* adding .forward() method with test (by @stevenmiller888)
* adding .inject() action, test, and updated readme (by @johntitus)

# 1.1.1 / 2014-10-08

* adding wait(selector) test and clojure fix, fixes #39
* adding extraction readme example
* adding caveat to viewport docs, fixes #33
* updating readme example
* Remove OSX .DS_Store file

# 1.1.0 / 2014-10-05

* changing run structure to auto-terminate phantomjs instances
* naming goBack to back

# 1.0.5 / 2014-09-30

* added .goBack()

# 1.0.4 / 2014-05-12

* contain zalgo

# 1.0.3 / 2014-05-12

* cleaning up run based on ians feedback

# 1.0.2 / 2014-05-12

* fixing concat in place
* cleaning up naming, whitespace, structure.. thanks @ianstormtaylor!
* fixing readme and history

# 1.0.1 / 2014-05-10

* fixing queueing and .use() call order
* Merge pull request #15 from queckezz/fix/use-queueing
* fixing tests
* fixing history
* queue .use(). Closes #10

# 1.0.0 / 2014-05-10

* renaming methods, fixes #18 and #19
* Merge pull request #17 from queckezz/update/phantomjs-node
* Merge pull request #16 from stevenschobert/master
* update phantomjs-node for 0.11.x support
* add instance option for phantomjs port

# 0.1.7 / 2014-04-14

* Merge pull request #14 from queckezz/update/allow-no-args
* allow no args and fix debug for .evaluate()
* fixing history

# 0.1.6 / 2014-04-13

* adding .url(), more debug()s and a test for .url()
* fxiing histoyr

# 0.1.5 / 2014-04-12

* fixing impatient to only apply to upload since it breaks wait
* fixing history

# 0.1.4 / 2014-04-12

* making callbacks impatient based on timeouts
* fixing history

# 0.1.3 / 2014-04-12

* fixing upload not having a callback
* fixing history

# 0.1.2 / 2014-04-11

* clarifying readme
* adding refresh method and wait for fn on page refresh
* reworking wait function to make room for a new wait overload
* refactoring tests into sections
* fixing history

# 0.1.1 / 2014-04-08

* adding test to duplicate queue ordering issue, fixing issue, fixes #9
* adding nightmare-swiftly plugin mention with docs
* fixing history

# 0.1.0 / 2014-04-07

* adding .use() to docs
* Merge pull request #8 from segmentio/use-rewrite
* adding test for .use() pluggability
* changes .run() to .evaluate(), removes .error() and cleans up internal wrapping
* fixing history

# 0.0.13 / 2014-04-07

* Merge pull request #6 from segmentio/phantomjs-node
* fixing done callback, fixing agent setting and adding tests. fixes #4, #2, #3.
* fixing run callback hanging, fixes #3
* experimenting with phantomjs-node, for #5
* Merge branch 'master' of https://github.com/segmentio/nightmare
* Update Readme.md

# 0.0.12 / 2014-04-06

* adding .viewport() and .agent(), fixes #2

# 0.0.11 / 2014-04-06

* making debug output consistent
* consistent naming
* fixing .wait() readme docs
* fixing history

# 0.0.10 / 2014-04-06

* adding .run() method with docs and test. fixes #1
* Update Readme.md
* fixing history

# 0.0.9 / 2014-04-05

* adding more debug statements
* fixing history

# 0.0.8 / 2014-04-05

* updating readme for screen and options
* fixing timeout and adding debug for .screen() method
* fixing history

# 0.0.7 / 2014-04-05

* setting viewport
* fixing history

# 0.0.6 / 2014-04-05

* adding better debug logs for page load detection
* fixing history

# 0.0.5 / 2014-04-05

* fixing history

# 0.0.4 / 2014-04-05

* fixing main for require to work
* fixing history

# 0.0.3 / 2014-04-05

* fixing tests and getting screen working
* fixing history again

# 0.0.2 / 2014-04-05

* pkilling phantomjs more aggressively
* fixing phantom singletons
* fixing history.md

# 0.0.1 / 2014-04-05

* updating readme
* removing unneded circleci stuff
* adding circle badge to readme
* adding circle.yml
* adding tests with lots of fixes everywhere
* filling in remaining parts of api
* filling in wait function
* filling in lots of the first draft
* adding new done method
* blocks sync
* mvoing
* all before proceding
* copyright
* copy
* adding more wait options
* adding in scaffolding and readme outline
