Change log

All notable changes and releases to this project will be documented here.

With thanks to all contributors!

Maintained by davesmith00000.

2.3.14 - 2020-01-20

  • Fix publishing of sbt plugin. (orium)

2.3.13 - 2020-01-16

  • Cross compile for Scala 2.13. (orium)

2.3.12 - 2019-10-16

  • Exit with error if any pact push operations fail (not API breaking, but potentially CI breaking) (dantb)

2.3.11 - 2019-10-04

2.3.9 - 2019-06-27

  • Add pact metadata to generated contracts (Fixes #84) (davesmith00000)
  • Support finalising a ScalaPactDescription within the ScalaPactForger DSL (Fixes #134) (razerno)
  • Refactored squashPactFiles method in SBT plugin (dantb)
  • Added support for token based Pact Broker authentication (Fixes #140) (dantb)

2.3.8 - 2019-04-26

  • Added support for Http4s 0.20.0 (jacemale)

2.3.6 - 2019-04-13

  • Bugfix: Use correct Headers apply function in Http4sRequestResponseFactory (davesmith00000)
  • Use recommended scalafix SBT JVM memory settings (davesmith00000)
  • Added Http4s 0.20.0-M4 support (chrischivers)
  • Fix handling of URL parameter lists in PactStubService (cmcmteixeira)

2.3.5 - 2019-02-15

  • Added support for Circe 0.11 (mcarolan)
  • Fix typo in ScalaPactVerify (aggenebbisj)
  • Documentation corrections (ShahOdin)
  • Remove milestone version from package name (randbw)

2.3.4 - 2018-12-31

  • Adds support for http basic authentication (Fixes #110) (jnatten)
  • Adds support for tagging pacts while publishing and verifying (Fixes #107) (jnatten)
  • Added Http4s 0.20 support (version 0.20.0-M4) (randbw)
  • Fixed ScalaPactMatchingRuleArrayMinLength writing (Fixes #108) (Paulymorph)
  • Fix spelling of ColourOutput object (randbw)
  • Circe upgraded to 0.10.1 (dandxy89)

2.3.3 - 2018-10-24

  • Added ability publish verification results (Fixes #71) (garraspin)
  • Added support for Circe 0.10 (dandxy89)

2.3.2 - 2018-08-12

  • Added missing HTTP methods (opbokel)
  • Added ability to modify requests during Provider State setup (garraspin)
  • Failed Pact Broker calls now fail spectacularly (rather than silently)
  • Pact verifications that perform no tests exit with non-zero code

2.3.1 - 2018-07-05

  • Fixed find free port race condition (orium)

2.3.0-RC1 - 2018-05-03

  • Static dependencies converted to Typeclasses
  • SBT 1.x support
  • Verification test summary (dandxy89)
  • Documentation corrections (pgordon9)
  • Exclude logback.xml and from published jar (cjwebb)
  • Documentation corrections (cjwebb)
  • Bugfix: http client in 0-18 ignoring clientTimeout (gcvt)

2.2.3 - 2018-02-19

  • Update to stable Http4s 0.18 (benivf)
  • BUGFIX: Http4s interface incompatibility issue corrected (afiore)
  • Work to improve pact logging levels (phil-rice)

2.2.2 - 2018-01-17

  • SSL support added! (phil-rice)
  • Http4s 0.18.0-M8 milestone release support added (benivf, afiore)
  • Circe 0.9 support added
  • BUGFIX: Nasty lingering argonaut hard dependency has been removed.

2.2.1 - 2017-10-14

  • BUGFIX: Pact publishing works again
  • BUGFIX: Client timeout is supplied in seconds but is a duration after that.
  • Added more compiler flags and wart remover
  • Publisher will not publish files ending in tmp.json (protection for pactPush task)
  • Verification failures now show the description for the interaction that failed
  • Finding closest match now done by a points system

2.2.0 - 2017-10-05

Breaking changes.

With thanks to yasuba and itsDanOades for assisting with this release.


  • Accepts basic auth for Pact Broker addresses (phil-rice)
  • Output dir (target/pacts) is now configurable via SBT config and environment variable “pact.rootDir” (fergusstrange)
  • Publish to multiple provider pact brokers
  • [BREAKING] Matching logic completely rewritten (this could break existing tests in one or two cases, but once fixed they will be correct by the Pact Specification)
  • [BREAKING] No more dependency conflicts
    • No external lib dependancies in any of the core libraries.
    • You must tell Scala-Pact which Http and JSON libraries to use (see setup guide).
    • JSON support via either Argonaut 6.1, Argonaut 6.2, or Circe 0.8.0
    • HTTP support via Http4s versions 0.15.0a, 0.16.2, 0.16.2a, or 0.17.0
    • Example projects use a range of Scala and lib combinations to prove they work (to be expanded)
  • [BREAKING] Renamed sbt plugin to sbt-scalapact
  • Composable SBT Tasks (pactPack, packPush, pactStub, and pactCheck)
  • Scala-Pact env config (e.g. port and local dir) is now defined in the build sbt file.
  • Commands inherit and can override via the usual command line arguments.

Bug fixes:

  • Scala-Pact can now be used reliably inside SBT to avoid constantly starting SBT from cold.
  • Issues with matching rules and how they deal with deep or multiple layers of wildcards have been resolved.
  • Regex matching of values no longer expects an exact match, instead expects to find at least one match.

Other improvements for contributors:

  • Converted to multi-project build
  • Many more modules, improved separation of concerns
  • Extending support for alternate HTTP and JSON frameworks is now easy.
  • Better build / test scripts include testing cross compilation
  • Simpler project version management
  • Release script improvements

2.1.3 - 2017-03-24

  • Convert SBT plugin to AutoPlugin (yasuba)
  • Ability to set a client timeout on verification (itsDanOades)
  • XML matching rules now work as expected
  • Pact match failures against the stubber now return a 598 status, NOT a misleading 404.
  • BUGFIX: Pact stubber now accepts chunked requests
  • BUGFIX: Pact broker addresses can now include a port number
  • BUGFIX: Bad test case fixed that would previously always succeed (yasuba)

2.1.2 - 2017-01-25

  • BUGFIX: Small issue that slipped through testing: In order for providerStates to work you had to declare a providerStateMatcher somewhere even if you already have a normal providerState setting. This has been resolved.

2.1.1 - 2017-01-24

  • Accept provider_state on Pact file read to support old Pact formats (itsDanOades)
  • Added new providerStateMatcher partial function as a slicker, more useful alternative to the old mechanism. (jtsmith0107)

2.1.0 - 2016-12-16

  • Scala 2.12 release
    • Depends on http4s 0.15.0a which is bundled with argonaut 6.2-RC1 and scalaz 7.2.7
  • Fixed intermittent bug that failed otherwise good tests
  • Improved test speed
  • Fixed issue where having a large number of pact tests in one suite caused a failure (with thanks to BenParker22)
  • Increased performance / capacity of pact stubber
  • Provider state failures now fail noisily
  • runConsumerTest returns a result instead of Unit (agustafson)

2.0.0 - 2016-11-01

  • Full Pact Specification Version 2.0 Compliance
  • Body matching rules
  • Provider verification test framework
  • Strict mode
  • Reduced library dependencies
  • Improved mock config object
  • Handle lowercase method during verify (smithleej)

1.0.2 - 2016-10-04

  • Remove logging implementation dependencies (agustafson)
  • Added example projects
  • Scala-PactContractWriter creates directories ‘target’ and ‘pacts’ if they don’t exist (raoulk)
  • Add preflight request operation (OPTIONS) (itsDanOades)
  • Codified testing process in a shell script.

1.0.1 - 2016-07-19

  • Verifier does not post data if body is empty
  • Added the ability to specify a pact version when verifying (itsDanOades)

1.0.0 - 2016-05-26

The source code for this page can be found here.