Feature support

There are multiple implementations of Pact, and while we try to keep feature parity between them, some implementations are ahead of others in terms of feature support.

FeaturePact-JVMPact JS #Pact Ruby #Pact NET #Pact GO #Pact PHP #Pact Python #Pact Swift #
HTTP pactsYYYYYYYY
Asychronous message pactsYYY
Regular expression matchingYYYYYYYY
Type based matching ("like")YYYYYYYY
Flexible array length ("each like")YYYYYYYY
Verify a pact that uses the Pact specification v3 formatYYYYYYYY
Pact specification v3 matchersY
Pact specification v3 generatorsY
Multiple provider states (pact creation)YY
Multiple provider states (pact verification)YYYYYYYY
Publish pacts to Pact BrokerYYYYY***
Tag consumer version in Pact Broker when publishing pactYYY*****
Dynamically fetch pacts for provider from Pact Broker for verificationYYY*****
Dynamically fetch pacts for provider with specified tagsYYY*****
Automatically tag consumer/provider with name of git branch*Y*****
Use 'pacts for verification' Pact Broker APIYYYY**YN
Pending pactsYYYY**YN
WIP pactsNYYY**YN
JSON test results outputY*Y*Y***
XML test results outputN*Y*Y***
Markdown test results outputY
Run a single interaction when verifying a pactYYY*****
Injecting values from provider state callbacksY
Date/Time expressions with generatorsY
FeaturePactmanScala PactPact RustPact C++
HTTP pactsYYYY
Asychronous message pacts?N(1)N
Regular expression matchingYYYY
Type based matching ("like")YYYY
Flexible array length ("each like")YYYY
Verify a pact that uses the Pact specification v3 formatY?YN
Pact specification v3 matchersY?YY
Pact specification v3 generatorsYY
Multiple provider states (pact creation)??YY
Multiple provider states (pact verification)??YN
Publish pacts to Pact BrokerY?NN
Tag consumer version in Pact Broker when publishing pact??NN
Dynamically fetch pacts for provider from Pact Broker for verificationY?YN
Dynamically fetch pacts for provider with specified tags??YN
Automatically tag consumer/provider with name of git branchNN
Use 'pacts for verification' Pact Broker APINNNN
Pending pactsNNNN
WIP pactsNNNN
JSON test results outputNN
XML test results outputNN
Markdown test results outputNN
Run a single interaction when verifying a pact??NN
Injecting values from provider state callbacksNN
Date/Time expressions with generatorsNN

# - these implementations wrap the shared "pact-ruby-standalone" executable

* - the feature is available in the underlying shared implementation but may not have been exposed in the native "wrapper" code yet. If you are interested in this feature, but cannot see any documentation for it in your implementation, please raise an issue in the relevant repository.

(1) - base support for the feature is implemented, but it is not used by anything.

Last updated on by Elliott Murray