Skip to main content

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
Asynchronous messagingYYYYYYY
Synchronous messagingYYNNYY*
PluginsYY*YY*
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 v2YYYYYYYY
Pact specification v3YYYYYYY
Pact specification v4YYYYYY
Multiple provider states (pact creation)YYYYYYY
Multiple provider states (pact verification)YYYYYYYY
Publish pacts to Pact BrokerYYYCLIYCLICLICLI
Tag consumer version in Pact Broker when publishing pactYYYCLICLICLICLICLI
Dynamically fetch pacts for provider from Pact Broker for verificationYYYYYYY*
Dynamically fetch pacts for provider with specified tagsYYYYYYY*
Automatically tag consumer/provider with name of git branchCLIYCLICLICLICLICLI
Use 'pacts for verification' Pact Broker APIYYYYYYYN
Pending pactsYYYYYYYN
WIP pactsYYYYYYYN
Run a single interaction when verifying a pactYYYYYYY*
Injecting values from provider state callbacksYY*YY**
Date/Time expressions with generatorsYY*YY**
XMLYY**Y**
Featurepact4sPact RustPact C++
HTTP pactsYYY
Asynchronous messagingN(1)N
Synchronous messagingN(1)N
PluginsN(1)N
Regular expression matchingYYY
Type based matching ("like")YYY
Flexible array length ("each like")YYY
Verify a pact that uses the Pact specification v3 format?YN
Pact specification v2YYY
Pact specification v3YYY
Pact specification v4?Y*
Multiple provider states (pact creation)?YY
Multiple provider states (pact verification)?YN
Publish pacts to Pact Broker?NN
Tag consumer version in Pact Broker when publishing pact?NN
Dynamically fetch pacts for provider from Pact Broker for verification?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 APINNN
Pending pactsNNN
WIP pactsNNN
Run a single interaction when verifying a pact?NN
Injecting values from provider state callbacksNN
Date/Time expressions with generatorsNN
XMLYN(1)N

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

^ - these implementations wrap the rust shared core

* - 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.

CLI - it is recommended to use the Pact CLI tools.

1 - A beta version of the package is available with the selected feature.