2.44.0
======
September 20, 2020
- Add settings `gwen.web.chrome.path` and `gwen.web.firefox.path` to override
  the browser binary path (merged PR #72 by @Sorixelle)
- Add support for sending keys to web driver
- Add support for enabling local file detector on remove webdriver through new
  `gwen.web.remote.localFileDetector=true|false` setting (default is false)
- Improve utilisation of processor threads for better parallel execution
- Prevent the use of more than one web driver instance per thread
- Update Gwen core from v2.27.2 to v[2.27.3](https://github.com/gwen-interpreter/gwen/releases/tag/v2.27.3)

2.43.0
======
July 14, 2020
- Ignore screenshot capture error if session has been closed by the driver
- Add `gwen.web.sendKeys.clickFirst=true|false` setting to enable or disable 
  clicking into input fields before sending keys (default = false)

2.42.2
======
May 8, 2020
- Fix `empty.max` error in HTML report generator
- Update Gwen core from v2.27.1 to v[2.27.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.27.2)

2.42.1
======
May 1, 2020
- Fix loading of custom log4j configuration (issue gwen-interpreter/gwen#55)
- Update Gwen core from v2.27.0 to v[2.27.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.27.1)

2.42.0
======
March 28, 2020
- I18n (issue gwen-interpreter/gwen#53): Add support for writing feature specs with Gherkin's spoken languages
- Add setting `gwen.feature.dialect`
  - Used to set the default dialect for Gherkin keywords in feature files and the REPL console 
    (so you don't have to set the # language header in every feature file). Default is `en`. 
    Dialects do not apply to meta files which must use English keywords.
- Treat universal `*` keyword as `And`
- Update Gwen core from v2.25.1 to v[2.27.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.27.0)

2.41.1
======
March 11, 2020
- Dry run fix for nexted foreach steps
- Update WebDriverManager from v3.6.2 to v3.8.1
- Clean up tests
- Update Gwen core from v2.25.0 to v[2.25.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.25.1)

2.41.0
======
March 8, 2020
- Introduce behavior rules setting to enforce good Gherkin style
  - `gwen.behavior.rules=strict|lenient`
    - `strict`: The following rules are enforced in feature files with violations reported as errors:
      - Steps in scenarios and backgrounds must satisfy *Given-When-Then order*
      - *Given* steps must set context
      - *When* steps must perform actions
      - *Then* steps must perform assertions
      - *But* steps must perform assertions (and are permitted after *Then* steps)
      - StepDefs tagged with:
        - `@Context` : can only be called by *Givens*
        - `@Action` : can only be called by *Whens*
        - `@Assertion` : can only be called by *Thens* or *Buts*
    - `lenient`: no rules are enforced
    - Default is `lenient` for backwards compatiblity but plan is to change it 
      to `strict` in upcoming major (v3.0.0) release
- Update AppliTools Eyes JDK from v3.150.0 to v3.160.2
- Update Gwen core from v2.24.0 to v[2.25.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.25.0)

2.40.1
======
February 10, 2020
- Fix for issue #70: make DSL work with file input type

2.40.0
======
January 29, 2020
- Update Gwen core from v2.23.0 to v[2.24.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.24.0)
  - Add assocative meta setting:
    - `gwen.associative.meta=true|false` (default is false)
    - If enabled, then if a meta file has the same name (excluding file extension) and is 
      in the same location as a feature, then load that meta last for that feature only and skip over 
      all other meta in the path to the feature that is assocaited in same way to any other features. 
      This enables users to define meta that is bound to one feature only by defininig it in a meta 
      file in the same location as the feature and naming it with the same name as the feature but 
      with the .meta extension instead (handy for cases where a meta per feature is desirable).
    - This setting is only honoured if `gwen.auto.discover.meta` is enabled (which it is by default).

2.39.0
======
January 23, 2020
- Update Gwen core from v2.22.1 to v[2.23.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.23.0)
  - Introduce "declarative" mode for features to prevent the use of imperative 
  steps in features so they can be kept clean. Controlled through new Gwen setting:
    - `gwen.feature.mode=declarative|imperative` (imperative is default)

2.38.1
======
November 28, 2019
- Calculate summary overhead to be the sum of all feature overheads
- Update Gwen core from v2.22.1 to v[2.22.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.22.2)
  to pick up the above

2.38.0
======
November 23, 2019
- Introduce state levels and parallel execution for scenarions in addition to features.
  State levels are configurable with the `gwen.state.level` setting which can be set to:
  - `feature`: to give each feature a state that is shared across scenarios (default)
  - `scenario`: to give each scenario a new state that is not shared across scenarios
- The `--parallel` option now runs:
  - features in parallel when configured state level is `feature`
  - scenarios in parallel when the configured state level is `scenario`
- Added `--parallel-features` command line option to force parallel feature execution
  regardless of state level
- Input CSV data records are now resolved to Backgrounds instead of top level Scenarios
  to support both feature and scenario level states
- Update Gwen core from v2.21.0 to v[2.22.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.22.1)
  to pick up the above

2.37.0
======
November 15, 2019
- Update Gwen core from v2.20.0 to v[2.21.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.21.0)
  to pickup latest Gherkin 8.1.1 parser from Cucumber to support rules and 
  [example mapping](https://cucumber.io/blog/2015/12/08/example-mapping-introduction) 
   - `Rule` and `Example` keywords, synonyms, etc..

2.36.2
======
September 11, 2019
- Store classpath in JAR manifest to fix Windows 'file is too long' issue

2.36.1
======
September 2, 2019
- Use latest native pakcage manager to pick up java version checking fix

2.36.0
======
August 18, 2019
- Update Gwen core from v2.19.4 to v[2.20.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.20.0)
  - Add support for interpolating environment variables using ${env.VARNAME} syntax

2.35.2
======
August 15, 2019
- Fix screenshot capture when including highlighting and when moving to elements
- Update Gwen core from v2.19.3 to v[2.19.4](https://github.com/gwen-interpreter/gwen/releases/tag/v2.19.4)
  - Only log stack traces to console if DEBUG logging is enabled
  - Allow up to 18 frames per second in slideshow playback (and default is now 5 instead of 1)

2.35.1
======
August 14, 2019
- Move to elements when using locate|highlight DSL

2.35.0
======
August 9, 2019
- Add supoprt for Edge browser
- Cross browser fixes
  - Bring elements that are outside of the visibile vewport into view
  - Click to check and uncheck radio buttons before sending keys as secondary measure
  - Set default capabilities to enable IE driver to function
- Do not override user provided web capabilities with defaults
- Report error when locating elements by XPath in IE since it does not support XPath

2.34.2
======
July 30, 2019
- Set default WebDriverManager download directory to `~.gwen/wdm` only if the `wdm.targetPath` system 
  property is not already set
- Do not capture screenshot for visual assertion errors when we have link to AppliTools dashboard

2.34.1
======
July 29, 2019
- Update Gwen core from v2.19.2 to v[2.19.3](https://github.com/gwen-interpreter/gwen/releases/tag/v2.19.3)
  - Ensure error attachments are always added to reports for failing steps

2.34.0
======
July 27, 2019
- Embedded [WebDriverManager](https://github.com/bonigarcia/webdrivermanager) now manages all native drivers for
  you unless explicit driver locations (`webdriver.xxx.driver`) are set in Gwen settings files.
  WebDriverManger (`wdm.*`) properties can be stored in Gwen settings files for custom configurations.
  All downloaded native web driver binaries are stored in the .gwen/wdm folder in the user's home directory.
- Update Gwen core from v2.19.1 to v[2.19.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.19.2)

2.33.0
======
June 28, 2019
- Manage child windows at web driver session level
- Add settings for [mobile emulation in Chrome](https://github.com/gwen-interpreter/gwen-web/wiki/Mobile-Emulation) browser by:
  - device name
    - `gwen.web.chrome.mobile.deviceName`
  - device metrics
    - `gwen.web.chrome.mobile.width` (integer)
    - `gwen.web.chrome.mobile.height` (integer)
    - `gwen.web.chrome.mobile.pixelRatio` (double)
    - `gwen.web.chrome.mobile.touch` (boolean)
    - `gwen.web.chrome.mobile.userAgent` (string)
- Resolve current URL on demand in URL comparison checks
- Do not create new page scope when navigating by URL

2.32.1
======
March 28, 2019
- Update Gwen core from v2.19.0 to v[2.19.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.19.1)
  - Resolve hostname in JUnit reports
- Restore clear first behavior in sendKeys operation when `gwen.web.sendKeys.clearFirst=true`

2.32.0
======
March 24, 2019
- Introduce AppliTools integration for visual testing
- Update Gwen core from v2.18.3 to v[2.19.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.19.0)
  - Introduce Disabled evaluation status to support conditionally disabling steps
  - Upgrade library dependencies
    - scopt from 3.7.0 to 3.7.1
    - scala-logging from 3.9.0 to 3.9.2
    - commons-codec from 1.11 to 1.12
    - commons-text from 1.4 to 1.6
    - joda-time from 2.10 to 2.10.1

2.31.0
======
March 12, 2019
- Introduce `gwen.web.sendKeys.clearFirst` setting to control whether or not Gwen will clear text fields before
  sending keys to them. (default value is `false`).
- Update Gwen core from v2.18.2 to v[2.18.3](https://github.com/gwen-interpreter/gwen/releases/tag/v2.18.3)
  - Clear thread local settings before executing each feature
  - Log non assertion exceptions as errors in console
  - Update Scala from 2.12.7 to 2.12.8

2.30.2
======
March 4, 2019
- Do not clear text elements before entering text

2.30.1
======
February 17, 2019
- Updated Gwen core from v2.18.0 to v[2.18.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.18.2)
  - Honor hard, soft, and sustained assertion modes when processing data table records
  - Add implicit `record.index` attribute to data table record scope
    - `record.index` starts at 0 (whereas `record.number` starts at 1)

2.30.0
======
January 26, 2019
- Updated Gwen core from v2.17.0 to v[2.18.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.18.0)
  - Add support for hard, soft, and sustained [assertion modes](https://github.com/gwen-interpreter/gwen/wiki/Assertion-Modes)
    though new setting:
    - `gwen.assertion.mode`
      - Set to one of these values:
        - `hard` to halt execution on first assertion error and report failure (default)
        - `soft` to collect all assertion errors and continue execution whilst reporting them as failures
        - `sustained` to collect all assertion errors and continue execution without reporting them as failures

2.29.2
======
January 20, 2019
- Fix highlighting for locate and highlight step

2.29.1
======
December 9, 2018
- Fix append DSL issue #65 raised by @Rahul9844
  - Solution was to move into the field before sending keys

2.29.0
======
November 24, 2018
- Fix timeout overrides for javascript locators
- Improve element locator performance and robustness
  - If element is not present in DOM (and hence not found), a WebElementNotFoundException will be thrown
  - If element is not present in DOM but not interactable, a WebElementNotInteractableException will be thrown
  - Both exceptions are treated the same way and are not thrown during retries until in the locator timeout period has
    expired. The timeout period defined by either:
    - the locator level wait/timeout assigned to an element (overridden locator level timeout)
    - the global locator wait/timeout setting: `gwen.web.locator.wait.seconds` (configured locator timeout)
    - the global wait/timeout setting: `gwen.web.wait.seconds` (configured global timeout)
    - or 10 seconds (default global timeout)
- Update Gwen core from v2.16.3. to v[2.17.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.17.0)
  - Add global default and working Gwen properties. Properties are loaded in the following order of precedence:
    - System properties passed through `-D` Java command line option
    - `gwen.properties` file in root of user directory (user overrides)
    - Properties files passed into Gwen through the -p/--properties command line option
      - These are loaded in the order provided so that later ones override earlier ones
    - `gwen.properties` file in working directory where Gwen is invoked (working defaults)
    - `gwen.properties` file in `.gwen` folder of user home directory (global defaults)

2.28.1
======
November 19, 2018
- Improve locator error handling and retries

2.28.0
======
November 18, 2018
- Allow `wait` and `timeout` literals to be used interchangeably in all DSL steps
- Add support to DSL for indexed locators:
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index>`
  - `<element> can be located at index <index> by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>"`
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index> in <container>`
  - ```
    <element> can be located at index <index> by
      | <locator 1>  | <expression 1> |
      | <locator 2>  | <expression 2> |
      | ..           | ..             |
      | <locator N>  | <expression N> |
    ```
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index> with no <wait|timeout>`
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index> with <timeoutPeriod> second <wait|timeout>`
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index> in <container> with no <wait|timeout>`
  - `<element> can be located by <id|name|tag name|css selector|xpath|class name|link text|partial link text|javascript> "<expression>" at index <index> in <container> with <timeoutPeriod> second <wait|timeout>`
  - ```
    <element> can be located at index <index> with no <wait|timeout> by
      | <locator 1>  | <expression 1> |
      | <locator 2>  | <expression 2> |
      | ..           | ..             |
      | <locator N>  | <expression N> |
    ```
  - ```
    <element> can be located at index <index> with <timeoutPeriod> second <wait|timeout> by
      | <locator 1>  | <expression 1> |
      | <locator 2>  | <expression 2> |
      | ..           | ..             |
      | <locator N>  | <expression N> |
    ```

2.27.0
======
November 17, 2018
- Add `gwen.web.browser.size=width x height` setting for controlling browser window size
- Retry failed web actions until `gwen.web.wait.seconds` expires
- Wrap all sendKeys operations in web driver actions (cross browser fix)
- Upgrade Selenium WebDriver from v3.141.0 to v3.141.59
- Update Gwen core from v2.16.2 to v[2.16.3](https://github.com/gwen-interpreter/gwen/releases/tag/v2.16.3)
  - Add settings exception for raising invalid settings errors

2.26.5
======
November 6, 2018
- Restore timeout on negative assertions
- Use full screen mode if max size is not supported
- Upgrade Selenium WebDriver from v3.14.0 to v3.141.0

2.26.4
======
October 25, 2018
- Fix element displayed and hidden checks

2.26.3
======
October 9, 2018
- Dry run fix for assertion DSL's ('should' matchers)

2.26.2
======
October 6, 2018
- Update Gwen core from v2.16.1. to v[2.16.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.16.2)
  - Use futures instead of parallel collections to ensure that all cores are utilised at all times during parallel
    execution.
  - Update Scala from version 2.12.6 to 2.12.7

2.26.1
======
October 2, 2018
- Update Gwen core from v2.16.0. to v[2.16.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.16.1)
  - Use `==` instead of `.equals` for string equality check in assertions (as per scala recommendation)
- Fine tune implementation of original solution for gwen-interpreter/gwen#37
  - Assertion DSL's should not wait for global time out when value for assertion is already captured
- Update todoMVC meta in example features used in CI tests
  - elements in angular site now need to be looked up by class instead of id (site has changed recently)

2.26.0
======
September 1, 2018
- Update Gwen core from v2.15.2 to v[2.16.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.16.0)
  - Introduced @Synchronized annotation for StepDefs to support synchronized execution of certain steps.
    StepDefs having this annotation will have their steps executed by a single feature thread at a time in the case
    of parallel execution. This feature was requested through PR #63 raised by @rkevin99 and implemented in PR
    gwen-interpreter/gwen#42 in the core interpreter.
  - Number all attachment items in reports (requested by @Rahul9844)

2.25.3
======
August 8, 2018
- Update selenium from version 3.13.0 to 3.14.0

2.25.2
======
June 27, 2018
- Update selenium from version 3.12.0 to 3.13.0

2.25.1
======
June 25, 2018
- Better support for remote web driver capabilities
  - `gwen.web.browser` setting no longer mandatory if `browserName`, `browser` or `device` capabilities are provided

2.25.0
======
June 23, 2018
- Add DSL to support waiting for element state changes
  - `I wait until <element> <is|is not> <displayed|hidden|checked|ticked|unchecked|unticked|enabled|disabled>`
- Update Gwen core from v2.15.1 to v[2.15.2](https://github.com/gwen-interpreter/gwen/releases/tag/v2.15.2)
  - Update scala from version 2.12.4 to 2.12.6
  - Update gherkin from version 5.0.0 to 5.1.0
  - Update scalaLogging from version 3.8.0 to 3.9.0
  - Update jline from version 2.14.5 to 2.14.6
  - Update commonsText from version 1.2 to 1.4
  - Update jodaTime from version 2.9.9 to 2.10

2.24.0
======
June 19, 2018
- Add the following DSLs to support querying alert/confirmation popup messages:
  - `the <alert|confirmation> popup message <should|should not> <be|contain|start with|end with|match regex|match xpath|match json path|match template|match template file> "<expression>"`
  - `the <alert|confirmation> popup message <should|should not> <be|contain|start with|end with|match regex|match xpath|match json path|match template|match template file> <attribute>`
  - `I capture the <alert|confirmation> popup message`
  - `I capture the <alert|confirmation> popup message as <attribute>`
- Update Gwen from v2.15.0 to v[2.15.1](https://github.com/gwen-interpreter/gwen/releases/tag/v2.15.1)

2.23.0
======
June 5, 2018
- Update Gwen from v2.14.0 to v[2.15.0](https://github.com/gwen-interpreter/gwen/releases/tag/v2.15.0)
- Add support for loading chrome arguments from one comma separated setting and from many individual
  settings with arbitrarily named suffixes. If both forms are provided, then all values are merged.
  - For example, the following 3 settings..
      ```
      gwen.web.chrome.args=--touch-events=disabled,--incognito
      gwen.web.chrome.args.0=--ignore-certificate-errors
      gwen.web.chrome.args.1=--window-size=1920,1080
      ```
      ..will resolve to the following 4 arguments:
      - `--touch-events=disabled`
      - `--incognito`
      - `--ignore-certificate-errors`
      - `--window-size=1920,1080`

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)
