2.22.0
======
May 18, 2018
- Add setting to enable/disable implicit element focus (default is enabled, true)
  `gwen.web.implicit.element.focus=true|false`
- Restore previous timeout behavior for compare operations
  - Retry failed comparisons until timeout expires instead of returning immediately

2.21.0
======
May 13, 2018
- Fix slow dropdown select issue #59 (raised by @anshu781126)
- Make all Gwen settings set in features or meta by following DSL thread-local
  - `my <name> <property|setting> <is|will be> "<value>"`
  -  The DSL documentation has been updated [here](https://github.com/gwen-interpreter/gwen-web/wiki/Supported-DSL#my-name-propertysetting-iswill-be-value)
  - Also added following DSL to support resetting (undoing the thread-local setting)
    - `I reset my <name> <property|setting>`
- Update Gwen from v2.13.2 to v[2.14.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.14.0)

2.20.1
======
May 9, 2018
- Update selenium webdriver from 3.11.0 to 3.12.0

2.20.0
======
May 9, 2018
- Add support for setting for setting firefox browser preferences
  - `gwen.web.firefox.prefs`
  - `gwen.web.firefox.pref.<name>`
- Update Gwen from v2.13.1 to v[2.13.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.13.2)

2.19.1
======
May 7, 2018
- Fix link text js locator

2.19.0
======
May 5, 2018
- Do not highlight container elements
- Add DSL to support inserting new lines into text fields (to address issue #56 raised by @anshu781126 )
  - `I insert a new line in <element>`
- Add following setting for tuning locator timeouts (implicit web driver waits) independently of Gwen repeats and
  assertions:
  - `gwen.web.locator.wait.seconds`
    - will default to `gwen.web.wait.seconds` if not overridden or to 10 seconds if that value is not configured either
- Add support for overriding configured timeouts (implicit waits) at the locator level.
  The following DSLs were introduced:
  - `<element> can be located by <locator> "<expression>" with no wait`
  - `<element> can be located by <locator> "<expression>" with <timeoutPeriod> second timeout`
  - `<element> can be located by <locator> "<expression>" in <container> with no wait`
  - `<element> can be located by <locator> "<expression>" in <container> with <timeoutPeriod> second timeout`
  - `<step> for each <element> located by <locator> "<expression>" with no wait`
  - `<step> for each <element> located by <locator> "<expression>" with <timeoutPeriod> second timeout`
  - `<step> for each <element> located by <locator> "<expression>" in <container> with no wait`
  - `<step> for each <element> located by <locator> "<expression>" in <container> with <timeoutPeriod> second timeout`
  - ```
    <element> can be located with no wait by
      | locator 1  | expression 1  |
      | locator 2  | expression 2  |
      | locator .. | expression .. |
      | locator N  | expression N  |
    ```
    - Where
      - column 1 = id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript
      - column 2 = the lookup expression literal
  - ```
     <element> can be located with <timeoutPeriod> second timeout by
      | locator 1  | expression 1  |
      | locator 2  | expression 2  |
      | locator .. | expression .. |
      | locator N  | expression N  |
    ```
    - Where
      - column 1 = id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript
      - column 2 = the lookup expression literal
- Add `gwen.web.implicit.js.locators` setting to enable Gwen to implicitly convert all locator bindings to JavaScript
  equivalents and force all elements to be located by executing javascript on the page instead of looking them up
  using web driver locators. Enabling this is useful when dealing with web sites that dynamically render or change
  the visibility of elements on pages or manipulate the DOM. Value values are:
  - `false` to disable (default)
  - `false` to enable

2.18.0
======
Apr 13, 2018
- Add unit tests for WebContext and WebEngine classes
- Move feature integration tests to sub package
- Some refactoring
- Fixed following DSL's which were not working:
  - `<source> at json path "<path>" should ..`
  - `<source> at xpath "<path>" should ..`
- Add new DSL to support appending text to elements without clearing first or pressing enter at the end (requested
  by @anshu781126)
  - `I append "<text>" to <element>`
  - `I append <reference> to <element>`
- Update Gwen from v2.13.0 to v[2.13.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.13.1)

2.17.0
======
Apr 2, 2018
- Add drag and drop DSL
  - `I drag and drop <element> to <element>`

2.16.1
======
Mar 27, 2018
- PR #53 by @acuciureanu - Fix switch to default content + Added tests

2.16.0
======
Mar 24, 2018
- Contributions by @acuciureanu:
  - Add ability to switch from an iframe to a top window by using the functionality
    already implemented in the web driver (ie: switching to the default content). The following DSL was added:
    - `I switch to the default content`
  - PR #52 - Refactoring of sbt build file
- Update Gwen from v2.12.6 to v[2.13.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.13.0)
  - Contributions by @acuciureanu
    - PR gwen-interpreter/gwen#42 - Unit tests for SQL support
    - PR gwen-interpreter/gwen#43 - Refactoring of sbt build file
- Introduce [template matching](https://github.com/gwen-interpreter/gwen/wiki/Template-Matching)
  - The following DSL's where introduced
    - `<reference> <should|should not> match template "<expression>"`
    - `<reference> <should|should not> match template file "<filepath>"`
    - `<source> at <json path|xpath> "<path>" <should|should not> match template "<expression>"`
    - `<source> at <json path|xpath> "<path>" <should|should not> match template file "<filepath>"`
    - `the page title <should|should not> match template "<expression>"`
    - `the page title <should|should not> match template file "<filepath>"`
    - `<dropdown> <text|value> <should|should not> match template "<expression>"`
    - `<dropdown> <text|value> <should|should not> match template file "<filepath>"`
    - `the current URL <should|should not> match template "<expression>"`
    - `the current URL <should|should not> match template file "<filepath>"`
  - Template expressions may contain:
    - Extract attributes: `@{name}`
      - Extracts and binds the source value at `@{name}` in the template to the `name` attribute in the feature scope
    - Ignore values: `!{}`
      - Ignores the source value at `!{}` in the template
    - Inject values: `${name}`
      - Injects the value bound to the `name` attribute into `${name}` in the template

2.15.7
======
Mar 14, 2018
- Update selenium webdriver from 3.10.0 to 3.11.0

2.15.6
======
Mar 3, 2018
- Update library dependencies
  - selenium-java from 2.9.1 to 3.10.0
  - scalatest 3.0.4 to 3.0.5
- Update Gwen from v2.12.5 to v[2.12.6](https://github.com/gwen-interpreter/gwen/releases/tag/v2.12.6)
  - Update library dependencies
    - scala-logging 3.7.2 to 3.8.0
    - commons-text 1.1 to 1.2
    - scalatest 3.0.4 to 3.0.5

2.15.5
======
Feb 24, 2018
- Update Gwen from v2.12.4 to v[2.12.5](https://github.com/gwen-interpreter/gwen/releases/tag/v2.12.5)
  - Fix issue #50 raised by @Rahul9844
    - Only log the visible environment bindings (global or global+scoped) on failure

2.15.4
======
Feb 9, 2018
- Roll back implicit auto-scroll behavior introduced in issue #46 implementation
  - This had negative side effects on select controls in that options could not be selected if they appear near the
    viewport boundary

2.15.3
======
Feb 9, 2018
- Update selenium webdriver from 3.9.0 to 3.9.1

2.15.2
======
Feb 6, 2018
- Update selenium webdriver from 3.8.1 to 3.9.0

2.15.1
======
Feb 6, 2018
- Enhancement: address issue #46 reopened by @anshu781126: unable to auto scroll and click
  - include auto-scroll behavior on elements before performing actions
  - as noted on the issue, the behaviour is still not fully consistent across all drivers/environments
- Update Gwen from v2.12.1 to v[2.12.4](https://github.com/gwen-interpreter/gwen/releases/tag/v2.12.4)
  - Fix issue #47 raised by @Rahul9844: infinite recursion error when calling a step that expects a data table with
    no data table followed by another call with a data table
  - Fix issue #48 raised by @Rahul9844: Report count is incorrect in case of scenario outline
  - Fix issue #49 raised by @Rahul9844: StepDef parameter matching

2.15.0
======
Jan 15, 2018
- Update Gwen from v2.11.1 to v[2.12.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.12.1)
  - Fix issue gwen-interpreter/gwen#40 reopened by @Rahul9844: support empty StepDef params in any position
  - Fix issue #45 raised by @ketu4u2010: Gwen fails to handle DSL keywords in string literals
  - Add support for loading multi valued settings
  - Improved error handling for Gherkin syntax errors
   - Suppressed stack trace of errors handled by Gwen
- Implement support for [desired capabilities](https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities)
  (as requested in issue #43 raised by @Rahul9844)
  - Capabilities can be set using the `gwen.web.capabilities` setting.
    - Multiple name=value entries can be comma separated.
    - Alternatively many individual properties can be set using `gwen.web.capability.<name>`
      - where <name> is a desired capability
  - Any browser capability can be set.
  - Capabilities not supported by browsers will have no effect and will be ignored.

2.14.3
======
Nov 8, 2017
- Update selenium from 3.7.1. to 3.8.1

2.14.2
======
Nov 8, 2017
- Update selenium from 3.7.0. to 3.7.1

2.14.1
======
Nov 4, 2017
- Update selenium from 3.6.0. to 3.7.0
- Update commons-io from 2.5 to 2.6
- Update Gwen from v2.11.0 to v[2.11.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.11.1)
  - Update scala from 2.12.3 to 2.12.4
  - Update gherkin from 4.1.3 to 5.0.0
  - Update scopt from 3.6.0 to 3.7.0
  - Update slf4j-log4j from 1.7.22 to 1.7.25
  - Update scala-logging from 3.5.0 to 3.7.2
  - Update jline from 2.14.2 to 2.14.5
  - Update commons-codec from 1.10 to 1.11
  - Update scala-csv from 1.3.4 to 1.3.5
  - Update json-path from 2.2.0 to 2.4.0
  - Update joda-time from 2.9.7 to 2.9.9

2.14.0
======
Oct 6, 2017
- Update Selenium WebDriver from 3.5.3. to 3.6.0
- Implement gwen-interpreter/gwen#37: Assertion DSL's should not wait for global time out when
  value for assertion is already captured
  - Solution was to immediately return if the value compared has been captured beforehand
- Add support for running chrome or firefox in headless mode through new Gwen setting:
  - gwen.web.browser.headless=true|false (default is false)

2.13.0
======
Sep 28, 2017
- Update Gwen from v2.10.1 to v[2.11.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.11.0)
  - <step> for each <entry> in <source> delimited by "<delimiter>"
     - Calls <step> for each string entry in <source> text delimited by some value
  - Refactored attachments handling
- Add DSLs for deselecting options in multi value dropdowns
  - I deselect the <position>st option in <element>
  - I deselect the <position>nd option in <element>
  - I deselect the <position>rd option in <element>
  - I deselect the <position>th option in <element>
  - I deselect "<text>" in <element>
  - I deselect "<text>" in <element> by value
  - I deselect <reference> in <element>
  - I deselect <reference> in <element> by value

2.12.1
======
Sep 21, 2017
- Update Gwen from v2.10.0 to v[2.10.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.10.1)
  - Improved error handling for @Examples tag

2.12.0
======
Sep 19, 2017
- Implement #39: Add DSL for mousing over elements
  - I move to <element>
- Implement #41: Add double click action support
- Add DSL for eager capture of a value by calling a javascript function on an element
  - I capture <attribute> <of|on|in> <element> by javascript "<expression>"
    - where <element> can be referenced as 'element' in javascript <expression> (e.g: element.value)
- Handle case where javascript returns null (by returning null instead of script expression)
- Update Gwen from v2.9.2 to v[2.10.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.10.0)
  - Allow attributes in scoped data bindings to be overridden with blanks.
  - Add new DSLs
    - I capture <attribute> by javascript "<expression>"
      - Eagerly captures the result of a javascript expression
    - <step> if <condition>
      - Calls <step> if a javascript predicate <condition> returns true (skips it otherwise)
    - Issue gwen-interpreter/gwen#34 - SQL insert, update, and delete support
      - I update the <dbName> database by sql "<updateSmt>"
        - Runs an insert, update, or delete statement on a database
        - Number of rows affected accessible as attribute named '<dbName> rows affected'
  - Make current record of data feed available through 'data record number' attribute
  - Make current record of for-each iteration available through '<element name> number' attribute
  - Make current record of repeat-until iteration available through '<element name> iteration' attribute
  - Fix error reporting for priority steps
  - Better error reporting for
    - nested settings properties that fail to resolve at load time
    - javascript errors
  - Implement gwen-interpreter/gwen#36: access feature file name and scenario name
  - Allow override when using the following DSL to set a property value:
    - my <name> <property|setting> <is|will be> "<value>"
  - Add interpolation for filepath in @Examples tag

2.11.1
======
Sep 2, 2017
- Update Gwen from v2.9.1 to v[2.9.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.9.2)
  - If no elements are found by for-each step, then set status to Passed instead of Skipped
    and display '-- none found --' in report line.

2.11.0
======
Aug 31, 2017
- Fix dry run validation of repeat while/until steps
- Update Selenium from 3.5.2 to 3.5.3
- fix issue #38: ensure that repeat while/until steps fails if terminating condition is not satisfied before timeout
- Add multi-locator DSL for web elements (will return web element resolved by first locator in table)
  - <element> can be located by
      | locator 1  | expression 1  |
      | locator 2  | expression 2  |
      | locator .. | expression .. |
      | locator N  | expression N  |
  - Where
    - column 1 = id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript
    - column 2 = the lookup expression literal
- Support in container javascript locators (container references in javascript as `containerElem`)
- Make timeout error messages more consistent and relevant
- Update Gwen from v2.9.0 to v[2.9.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.9.1)

2.10.0
======
Aug 23, 2017
- Update Scala from 2.12.1 to 2.12.3
- Update Gherkin from 4.0.0 to 4.1.3
- Update Scopt from 3.5.0 to 3.6.0
- Update Selenium from 3.4.0 to 3.5.2
- Add DSL to clear web element by javascript
  - <element> can be cleared by javascript "<javascript>"
- Added support for binding SQL query using DocString syntax
  - <attribute> <is|will be> defined in the <dbName> database by sql
    """
    <selectStmt>
    """

2.9.1
=====
Aug 3, 2017
- Fixed setting Boolean chrome preferences

2.9.0
=====
Jul 17, 2017
- Update Gwen from v2.7.3 to v[2.8.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.8.0)
  - Add support for DocStrings
  - Evaluate all javascript expressions in anonymous function block
  - Add paste mode to REPL to support multiline step evaluation (steps with tables or docStrings)
  - Add Gherkin language header to Gwen model
- Added DSL for executing arbitrary JavaScript
  - I execute javascript "<javascript>"

2.8.3
=====
Jul 11, 2017
- Update Gwen from v2.7.2 to v[2.7.3](https://github.com/gwen-interpreter/gwen/releases/tag/v2.7.3)
  - Fix fail handling where cause was not being reported to console

2.8.2
=====
Jul 10, 2017
- Update Gwen from v2.7.1 to v[2.7.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.7.2)
  - Add syntax checking for DataTable tags
  - Report error if Data Table tag is specified without StepDef tag
  - Give steps that call other steps execution priority over all other steps or StepDefs that may have the same
    structure to ensure that they are evaluated and not raised as conflicts that require renaming.
  - All data table cell references must be include data record index unless in foreach step
- Updated sample features to demonstrate and exercise data tables

2.8.1
=====
Jul 8, 2017
- Update Gwen from v2.7.0 to v[2.7.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.7.1)
  - Renamed JS methods for consistency
  - Changed dry run values for consistency
- Update sample google search features
- Title comparison fix - keep fetching title until comparison is satisfied or driver times out

2.8.0
=====
Jul 7, 2017
- Update Gwen from v2.6.1 to v[2.7.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.7.0)
  - PR gwen-interpreter/gwen#32 - Add support for Gherkin data tables (horizontal, vertical, and matrix forms)
  - Log the results of bound value lookups at debug level
  - Refactor of code to support more seamless dry run
- Introduce right click wherever click is supported
  - I right click <element>
  - I right click <element> of <context>
- Allow click with modifier keys
  - I <modifiers> click <element>
  - I <modifiers> right click <element>
- Allow sending any key combinations to <elements> (for simulating browser shortcuts)
  - I send "<keys>" to <element>
- Propagate underlying exception messages that may occur when looking up bindings so that the user can see them
- Refactor to code to separate web and environment context concerns
  - All web actions now happen in WebContext instead of WebEnvContext

2.7.1
=====
Jun 27, 2017
- Update Gwen from v2.6.0 to v[2.6.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.6.1)
  - Correct id in example rows for scenario outlines in JSON reports
  - Use StringEscapeUtils from Apache Commons to escape HTML, XML, and JSON in reports where necessary

2.7.0
=====
Jun 25, 2017
- Update Gwen from v2.5.0 to v[2.6.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.6.0)
  - Add cucumber compliant JSON output reports
    - json -f/--format option
    - evaluated scenario outlines are expanded in the report (and not expanded if not evaluated)
  - Expand evaluated scenario outlines in JUnit-XML reports (and do not expanded if not evaluated)
  - Capture location of all gherkin nodes instead of just steps only
  - Add support for binding closure functions to data scopes

2.6.0
=====
Jun 9, 2017
- And new DSL steps, see also [Gwen web DSL](http://htmlpreview.github.io/?https://github.com/gwen-interpreter/gwen-web/blob/master/docs/dsl/gwen-web-dsl.html)
  - <attribute> should be absent
  - <source> at json path|xpath "<path>" should be|contain|start with|end with|match regex "<expression"
  - <source> at json path|xpath "<path>" should not be|contain|start with|end with|match regex "<expression"
- Update Gwen from v2.4.1 to v[2.5.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.5.0)
  - Make string interpolation work with multi-line strings (use DOTALL mode in regex matcher)
  - Introduce Java Scripting API (JSR 223) to support JavaScript evaluation in non web engines
  - Merge common steps into default engine support class so other engines can easily inherit them

2.5.3
=====
Jun 1, 2017
- Update Gwen from v2.4.0 to v[2.4.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.4.1)
  - Make env REPL output more compact and readable
  - Remove json-play dependency

2.5.2
=====
May 30, 2017
- Update Gwen from v2.3.1 to v[2.4.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.4.0)
  - Enable cntl-d in REPL for exit (issue gwen-interpreter/gwen#31 raised by @asgillett)

2.5.1
=====
May 20, 2017
- Fix issue gwen-interpreter/gwen#30
  - use web driver click instead of javascript click
- Update Gwen from v2.3.0 to v[2.3.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.3.1)

2.5.0
=====
Apr 23, 2017
- Fixed issue #37 - When closing child window, Gwen can get confused about the parent window ID
  - Solution was to move tracking state to env context where lifecycle (initialisation, resetting, etc..) is managed
  - This ensures that all window tracking state is reset for each feature execution
- Update selenium from version 3.3.1 to 3.4.0
- Make at most two attempts to relocate stale elements

2.4.0
=====
Apr 11, 2017
- Add support for repeating a step for each element in a list of web elements
  - <step> for each <element> located by id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript "<expression>"
  - <step> for each <element> located by id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript "<expression>" in <container>
  - <step> for each <element> in <elements>
- Add examples and unit tests to exercise new capability of sourcing examples tables from CSV files in scenario outlines
- Send click action to checkboxes if sending space has no effect
- Support ticked|unticked and tick|untick in all checkbox DSL steps in addition to checked|unchecked and check|uncheck
- Update Gwen from v2.2.1 to v[2.2.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.3.0)
  - Add cache in feature scope for storing temporary objects (non string values)
  - Add support for sourcing examples tables from CSV data files in scenario outlines
  - Add settings for enabling or disabling auto meta and CSV data file discovery
    - gwen.auto.discover.meta (true to enable auto meta discovery, false to disable, default is true for enabled)
    - gwen.auto.discover.data.csv (true to enable auto CSV data discovery, false to disable, default is true for enabled)

2.3.4
=====
Mar 31, 2017
- Add dry run unit test for todoMVC examples
- Convert null text retrieved from web pages to blank strings
- Generate slideshows in reports only if screen shot capture has been enabled
- Update Gwen from v2.2.0 to v[2.2.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.2.1)

2.3.3
=====
Mar 29, 2017
- When checking if an element is displayed or hidden, report no such element instead of unbound reference if the
  element cannot be located.
- move element state checking to Web env context class
- dry run fix for steps accessing element text
- Add todoMVC feature examples

2.3.2
=====
Mar 23, 2017
- Documented steps for working with the current URL and also included them in the DSL for tab completion

2.3.1
=====
Mar 21, 2017
- Fail with assertion error when a timeout is detected on compare step (instead of throwing timeout error)

2.3.0
=====
Mar 12, 2017
- Added support for scenario outlines (see PR gwen-interpreter/gwen#29)
- Update Selenium from v3.0.1 to v3.3.1
- Update Gwen from v2.1.0 to v[2.2.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.2.0)

2.2.0
=====
Feb 23, 2017
- Add DSLs for resizing currently active browser window (issue #36)
  - I resize the window to width <w> and height <h>
  - I <maximize|maximise> the window

2.1.0
=====
Feb 10, 2017
  - Added SQL support for binding attributes to fields in databases
  - Introduced GWEN_CLASSPATH environment variable for adding external JARs to Gwen classpath
  - new DSL: <attribute> <is|will be> defined by sql "<selectStmt>" in the <dbName> database
  - Update Gwen from v2.0.0 to v[2.1.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.1.0)

2.0.1
=====
Jan 27, 2017
  - Fixed bug where regex, xpath, and json path bindings were not being resolved
  
2.0.0
=====
Jan 20, 2017
- Update to Java 8 (Java 7 no longer supported)
- Update from Scala 2.11.8 to 2.12.1
- Update Selenium from v2.53.1 to v3.0.1
- Update Gwen from v1.4.3 to v[2.0.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.0.0)
  
1.11.10
=======
Nov 25, 2016, 6:30 PM GMT+10 (AEDT)
- Added DSL to support binding attributes to file contents (in support of issue #32):
  - `<attribute> <is|will be> defined by file "<filepath>"`
- Move attribute fetch and compare logic from web engine to environemt context
- Removed stale feature samples
- Updated Gwen from v1.4.2 to v[1.4.3](https://github.com/gwen-interpreter/gwen/releases/tag/v1.4.3)
  - Mix XPath, Regex, and JSON support into core environment context

1.10.1
======
Oct 11, 2016, 9:23 PM GMT+10 (AEDT)
- Fixed getElementText method in web context to return None instead of null if 
  no value is found
- Changed the default throttle time from 200 to 100 msecs
- Suppress highlighting if throttle is set to zero
- Updated Gwen from v1.4.1 to v[1.4.2](https://github.com/gwen-interpreter/gwen/releases/tag/v1.4.1)
  - Fixed play function in modal popup slideshow. Solution was to:
    - add `height="100%"` to the slideshow image tag
    - if the 1st frame is displayed then point the reel control to the last frame 
      and immediately back to 1st frame before triggering play
    
1.10.0
======
Oct 4 2016, 3:51 PM GMT+11 (AEDT)
- Enhancement (issue #29): Add setting for passing comma separated list of 
  browser preferences to chrome 
  - gwen.web.chrome.prefs

1.9.1
=====
Sep 14, 2016, 12:49 AM GMT+10 (AEST)
- Updated Gwen from v1.4.0 to v[1.4.1](https://github.com/gwen-interpreter/gwen/releases/tag/v1.4.1)
  - Fix analytics and timings in reports
  - Suppress hyperlink for 'Loaded' status in reports

1.9.0
=====
Sep 12, 2016, 10:54 PM GMT+10 (AEST)
- Updated failed assertion messages
- Ensure that same named locally scoped bindings shadow global ones (regardless of type)
- Updated Gwen from v1.3.4 to v[1.4.0](https://github.com/gwen-interpreter/gwen/releases/tag/v1.4.0)
  - Include total elapsed time at the top of all reports
  - Include start and finish times at the top of all reports
  - Make failed status in detail report a hyperlink to first failed scenario
  - Performance enhancement gwen-interpreter/gwen#26: add meta imports 
    - to allow fine grained and explicit control over how meta is loaded
    - `-m` overrides still supported 
  - Performance enhancement: internally store tags in list instead of set
  - Display elapsed time on report summary lines
  - Do not auto discover CSV files below feature directory
  - Do not treat embedded '+' literals in strings as concatenation operator
  - Scoping fix: use flash scope to track changes made to global attributes in local scopes
  - wrap long text in reports
  - Performance enhancement: store atts as list of nvp tuples instead of json
  - update gherkin parser from v3.1.2 to v4.0.0
  - Performance enhancement: improved StepDef lookup performance (use lazy iterator over view)

1.8.1
=====
Aug 17, 2016, 8:47 PM GMT+10 (AEST)
- Updated Gwen from v1.3.3 to v[1.3.4](https://github.com/gwen-interpreter/gwen/releases/tag/v1.3.4)
  - Report ambiguous stepdef lookup errors instead of exiting interpreter
  - Raise invalid property error if a property without a key is found in a 
    properties file

1.8.0
=====
Jul 28, 2016 12:00 AM GMT+10 (AEST)
- Add DSL for registering javascript actions on web elements (to assist with cross browser actions 
  where standard web driver instructions do not produce expected results).
  - `<element> can be <clicked|submitted|checked|unchecked> by javascript "<javascript>"` 
    - The web element can be referenced in the javascript by an implicit parameter named `element`
    - The element is implicitly given the focus before the given script is executed
- Cross browser fixes
  - Use javascript to set focus and then click for all click actions on all elements (instead of 
    standard web driver click)
  - Retry "wait until" operations when browser is not ready to execute javascript predicates
- Dry run fix
  - check that the condition and element attributes are bound in calls to DSL:
    `I wait until <condition> when <element> is ..`
- Add setting for passing comma separated list of arguments to chrome web driver
  - gwen.web.chrome.args
  
1.7.0
=====
Jul 21, 2016, 12:36 AM GMT+10 (AEST)
- Updated Gwen from v1.3.2 to v[1.3.3](https://github.com/gwen-interpreter/gwen/releases/tag/v1.3.3)
- Fix for user issue #26
  - Support dynamically changing conditions in repeat-until and repeat-while steps
- User request #27
  - Added support for setting explicit delay and timeout periods in repeat-until and 
    repeat-while steps. New DSL includes:
    - `<step> <until|while> <condition> using <delayPeriod> <second|millisecond> delay and <timeoutPeriod> <minute|second|millisecond> timeout`
    - `<step> <until|while> <condition> using <delayPeriod> <second|millisecond> delay`
    - `<step> <until|while> <condition> using <timeoutPeriod> <minute|second|millisecond> timeout`
    - `<step> <until|while> <condition> using no delay and <timeoutPeriod> <minute|second|millisecond> timeout`
    - `<step> <until|while> <condition> using no delay`
   
1.6.1
=====
Jul 18, 2016, 9:12 PM GMT+10 (AEST)
- Updated Gwen from v1.3.1 to v[1.3.2](https://github.com/gwen-interpreter/gwen/releases/tag/v1.3.2)
  - Fix version hyperlink in report 
- Update scala version from 2.11.7 to 2.11.8

1.6.0
=====
Jul 15, 2016, 10:50 PM GMT+10 (AEST)
- Update web driver from 2.53.0 to 2.53.1 to support Firefox 47.0.1+
- Add DSL for capturing the current screenshot on demand
  - `I capture the current screenshot`
- Updated Gwen from v1.3.0 to v[1.3.1](https://github.com/gwen-interpreter/gwen/releases/tag/v1.3.1)
  - Wrap list of meta that is displayed in HTML detail reports with a 
    collapsable container that is hidden by default and can be expanded when 
    user clicks the 'no of meta files' hyperlink.
  - Link version number in report to release notes

1.5.0
=====
Jun 21, 2016, 7:45 PM GMT+10 (AEST)
- Updated Gwen from v1.2.1 to v[1.3.0](https://github.com/gwen-interpreter/gwen/releases/tag/v1.3.0)
  - User request gwen-interpreter/gwen#21
    - Implemented ability to load multiple meta files in directories
      instead of just one
  - Fix issue gwen-interpreter/gwen#23 
    - Raise ambigious error if a step resolves to more than one StepDef at runtime
  - Fix issue gwen-interpreter/gwen#24
    - Change stepdef parameter interpolation for dry run mode so that 
      `$<name>` becomes `$[param:name]` (otherwise it forever recurses)
  - Implement enhancement gwen-interpreter/#25
  	- Add support for passing directories to the `-m/--meta` option instead of 
      just files. All meta files within a specified directory will be recursively 
      loaded.
  
1.4.1
=====
May 24, 2016, 7.24 PM GMT+10 (AEST)
- Updated Gwen from v1.2.0 to v[1.2.1](https://github.com/gwen-interpreter/gwen/releases/tag/v1.2.1)
  To pick up the following:
  - Fixed tag filtering to accept tagged features and scenarios that have at 
    least one specified include tag and exclude all specified exclude tags. 
    The specified include and exclude tags are now partitioned and evaluated 
    separately (as per above) instead of being logically ANDed together from 
    left to right. Fixed #24
  - Only dump environment on failure when in batch mode

1.4.0
=====
Apr 12 2016, 10:55 PM GMT+10 (AEST)
- Add support for accepting and dismissing browser popup boxes (PR #21). New DSL includes:
  - I <accept|dismiss> the <alert|confirmation> popup
- Add ability to switch between parent and child windows (PR #22). New DSL includes:
  - I switch to the child window
  - I close the child window
  - I switch to the parent window
- Avoid contiguous duplicate screenshots (PR #23)
  - Solution was to discard the current screenshot if its size in bytes matches that 
    of the last captured screenshot.
  - This feature is now on by default. It can be turned off by setting: 
      gwen.web.capture.screenshots.duplicates=true
- Added support for JSON path matching using library: https://github.com/jayway/JsonPath
  - New DSL includes:
    - the page title <should|should not> match json path "<expression>"
    - the page title <should|should not> match json path <attribute>
    - <element|attribute> <should|should not> match json path "<expression>"
    - <dropdown> <text|value> <should|should not> match json path "<expression>"
    - <dropdown> <text|value> <should|should not> match json path <attribute>
    - I capture the content in <element|attribute|property> by json path "<expression>" as <attribute>
    - <attribute> <is|will be> defined in <source> by json path "<expression>"
- Updated Gwen from v1.1.1 to v[1.2.0](https://github.com/gwen-interpreter/gwen/releases/tag/v1.1.2)
  - To pick up sequence counter number fix for all attachment filenames
- Update bundled selenium webdriver from v2.51.0 to v2.53.0

1.3.1
=====
Mar 6, 2016, 10:21 PM GMT+11 (AEDT)
- Updated Gwen from v1.1.0 to v[1.1.1](https://github.com/gwen-interpreter/gwen/releases/tag/v1.1.1)
  - To pick up exit code changes
- Added convenience launch scripts in root directory of distributed package
  (so users can invoke gwen directly from the install directory)

1.3.0
=====
Feb 29, 2016, 9:18 PM GMT+11 (AEDT)
- Updated Gwen from v1.0.3 to v[1.1.0](https://github.com/gwen-interpreter/gwen/releases/tag/v1.1.0)
  - Added support for configuring a ramp up interval (in seconds) for 
    staggered parallel execution ~ for user request issue gwen-interpreter/gwen#18. 
    The interval can be set through the `gwen.rampup.interval.seconds` setting
    This setting is only applicable for parallel execution mode. If it is 
    not set or is set to zero, then no staggering will occur (as per default 
    behavior). 
  - Added new `gwen.report.suppress.meta` setting for controlling whether or 
    not meta reports should be generated with HTML reports (default value is 
    false). If you have a lot of meta, suppressing the meta reports can 
    save a lot of disk space. Enabling this setting does not suppress the 
    hyperlinked stepdefs in feature reports (they will always be rendered).
- Added the following alternative DSL for closing the current browser session
  - I close the current browser

1.2.1
=====
Feb 29, 2016, 6:37 PM GMT+11 (AEDT)
- Fixed issue #20 - Cannot perform actions on elements bound to names containing 'of' literal 
  - Solution was to perform the `I <click|check|uncheck> <element>` logic if 
    `I  <click|check|uncheck> <element> of <context>` results in a LocatorBindingException
- Immediately return from a 'should not' assertion step if it evaluates to true (instead of 
  waiting until timeout)

1.2.0
=====
Feb 23, 2016, 09:57 PM GMT+11 (AEDT)
- Added the following DSLs for managing browser sessions (pull request #19):
  - I start a new browser
  - I close the current browser
  - I start a browser for <session>
  - I close the browser for <session>
  - I switch to <session>
- Added DSL for performing actions on context sensitive elements (pull request #18):
  - I <click|check|uncheck> <element> of <context>

1.1.1
=====
Feb 16, 2016, 12:43 PM GMT+11 (AEDT)
- Fixed #17 - Do nothing when checking/unchecking checkboxes or radio 
  buttons that are already checked or unchecked respectively 
  - Solution was to move the guards from the check and uncheck 
    pattern match clauses to their bodies instead

1.1.0
=====
Feb 11, 2016, 11:47 PM GMT+11 (AEDT)
- Added support for chaining locators through new DSL:
  - <element> can be located by <locator> "<expression>" in <container>
  - Where <container> can be 
    - An element
      - In this case <element> is located within the <container> element
    - A frame
      - In this case <element> is located within the page in the <container> 
        frame  
      - The WebEnvContext.withElement function will restore the previous window 
        in the web driver if the location of the element within the frame 
        fails on the first attempt. 
  - All element lookups and operations now occur inside the
    WebEnvContext.withElement function. This is where all 1st and 2nd lookup 
    attempts occur and where switching to the previous window is performed 
    when operations on elements are completed. The web engine no longer 
    calls the locator methods directly (it now calls withElement instead).
- Simplified assertion error messages
- Update selenium webdriver from v2.48.1 to v2.51.0
- Update Gwen from v1.0.1 to v[1.0.3](https://github.com/gwen-interpreter/gwen/releases/tag/v1.0.3)

1.0.2
=====
Jan 29, 2016, 5:13 PM GMT+11 (AEDT)
- Fixed problem with 1.0.1 release which had a snapshot dependency to Gwen
  in the maven POM file.

1.0.1
=====
Jan 26, 2016, 11:43 PM GMT+11 (AEDT)
- Resolved gwen-interpreter/gwen#15 - Use compact report attachment names
- Update Gwen from v1.0.0 to v[1.0.1](https://github.com/gwen-interpreter/gwen/releases/tag/v1.0.1)
    
1.0.0
=====
Jan 19, 2016, 11:51 PM GMT+11 (AEDT) 
First gwen-web release.
- Uses:
  - gwen.interpreger gwen v1.0.0
  - org.seleniumhq.selenium selenium-java v2.48.1
- Requires:
  - Java 7+
  - A Web Browser. The following are supported:
    - Firefox
    - Chrome
      - Requires native web driver
    - Safari
      - Requires safari extension
    - IE
      - Requires native web driver
- Introduces:
  - Web engine DSL:
    - I am on the <page>
    - the url will be "<url>"
    - the url will be defined by property|setting "<name>"
    - I navigate to the <page>
    - I navigate to "<url>"
    - I scroll to the top|bottom of <element>
    - <element> can be located by id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript "<expression>"
    - the page title should|should not be|contain|start with|end with|match regex|match xpath "<expression>"
    - the page title should|should not be|contain|start with|end with|match regex|match xpath <attribute>
    - <element> should|should not be displayed|hidden|checked|unchecked|enabled|disabled
    - <element|attribute> should|should not be|contain|start with|end with|match regex|match xpath "<expression>"
    - <element|attribute> should|should not be|contain|start with|end with|match regex|match xpath <attribute>
    - <dropdown> <text|value> should|should not be|contain|start with|end with|match regex|match xpath "<expression>"
    - <dropdown> <text|value> should|should not be|contain|start with|end with|match regex|match xpath <attribute>
    - I capture the text|node|nodeset in <element|attribute|property> by xpath "<expression>" as <attribute>
    - I capture the text in <element|attribute|property> by regex "<expression>" as <attribute>
    - I capture the current URL
    - I capture the current URL as <attribute>
    - I capture <element|attribute|property> as <attribute>
    - I capture <element|attribute|property>
    - I capture <dropdown> <text|value> as <attribute>
    - I capture <dropdown> <text|value>
    - my <name> property|setting is|will be "<value>"
    - <attribute> is|will be defined by javascript|system process|property|setting "<expression>"
    - <attribute> is|will be defined by the text|node|nodeset in <source> by xpath "<expression>"
    - <attribute> is|will be defined in <source> by regex "<expression>"
    - <attribute> is|will be "<value>"
    - I wait for <element> text for <duration> second|seconds
    - I wait for <element> text
    - I wait for <element> for <duration> second|seconds
    - I wait for <element>
    - I clear <element>
    - I press enter|tab in <element>
    - I enter|type "<value>" in <element>
    - I enter|type <attribute> in <element>
    - I select the <position>st|nd|rd|th option in <element>
    - I select "<value>" in <element>
    - I select "<value>" in <element> by value
    - I select <attribute> in <element>
    - I select <attribute> in <element> by value
    - I click|submit|check|uncheck <element>
    - I wait <duration> second|seconds when <element> is clicked|submitted|checked|unchecked|selected|typed|entered|tabbed|cleared
    - I wait until <condition> when <element> is clicked|submitted|checked|unchecked|selected|typed|entered|tabbed|cleared
    - I wait until "<javascript>"
    - I wait until <condition>
    - I wait <duration> second|seconds
    - I highlight|locate <element>
    - I execute system process "<process>"
    - I execute a unix system process "<process>"
    - I refresh the current page
    - I base64 decode <element|attribute> as <attribute>
    - I base64 decode <element|attribute>
    - <step> until <condition>
    - <step> while <condition>
  - Configuration settings:
    - gwen.web.browser
    - gwen.web.useragent
    - gwen.web.authorize.plugins
    - gwen.web.wait.seconds
    - gwen.web.maximize
    - gwen.web.throttle.msecs
    - gwen.web.highlight.style
    - gwen.web.capture.screenshots
    - gwen.web.capture.screenshots.highlighting
    - gwen.web.remote.url
    - gwen.web.accept.untrusted.certs
    - gwen.web.suppress.images (firefox only)
    - gwen.web.chrome.extensions (chrome only)
  - Interchangeable selenium implementation through SELENIUM_HOME environment variable
  - Depends on: [Gwen 1.0.0](https://github.com/gwen-interpreter/gwen/releases/tag/v1.0.0)
