Skip to main content

Pact Open Source Update โ€” May 2025

ยท 8 min read

It's May and we are back with another update of all things Pact.

We've had a bit of a sabbatical from writing blog posts over the last couple of months, but not to fear, I am back with lots of goodies to share, including completed RFC's, community contributions a plenty and some tooling enhancements to make your contract testing lives easier.

Pact & AIโ€‹

I have been quite quiet on the AI front, which is unlike me for several reasons, not least that I studied Artificial Intelligence & Cybernetics at university.

We had several requests through our dayjob at SmartBear & PactFlow to improve on the current state of the AI offerings, especially with regards to how they handle the generation of Pact tests which relate to your codebase, use recommended guidelines from the Pact team as to how best structure the tests, and ideally be scaffolded from the same templates in your codebase to ensure consistency.

For those of you reading, who happen to be PactFlow customers, you may have already seen or be using the AI Augmented contract testing feature, which is part of SmartBear's API Hub.

If you haven't be sure to checkout the website, or the docs.

In a nutshell

PactFlow AI includes a suite of features to improve the efficiency and quality of your contract tests:

  • Generating Pact tests using various combinations of OpenAPI descriptions, code, or request-response pairs
  • Customizable prompts and test templates to tailor output to your specific needs
  • Seamless integration with PactFlow's Role-based Access Controls feature, enabling you to enforce and manage organizational policies
  • Code review (upcoming), enabling you to evaluate the quality of existing Pact tests and suggest best-practice improvements

PactFlow AI is available as a CLI and supports the following programming languages:

  • Java and Kotlin
  • TypeScript / JavaScript
  • .NET
  • Golang
  • PHP
  • Swift
  • Python (coming soon)

This is all part of a larger offering from SmartBears HaloAI product which is permeating all aspects of the tooling we built, to support you throughout your SDLC, whether you are at the design stage, transferring human ideas, to OpenAPI descriptions, or enabling rapid API and UI testing tooling with minimal maintaining effort, affording you time to ensure you are building the right thing, right.

Pact OSS Updatesโ€‹

Pact RFCsโ€‹

XML Generators are here, as Tien Vo's RFC and associated changes were merged into their respective repos.

Keep an eye out for the examples in pact-php, coming soon. See below links to details, to follow along, or help provide a review.

If you have a change you want to see in the Pact Foundation, why not drop us a shout, or compile your first RFC.

Pact-JSโ€‹

Pulak Deyashi has been on a roll, dropping in some fixes around example values in V3 date/time matchers, in this PR, he followed it up with additional tests in the pact core, which is much appreciated.

He also dropped in a small typo change in our pact-js-cli repo.

All contributions are welcomed, small or big, like this one, from Val Kolovos introducing Async messages in the V4 Pact format to Pact-JS

Pact-JS - Slackโ€‹

Chat with us in: #pact-js

Pact-JVMโ€‹

Ruud Welling dropped a fix in to ensure provider state is injected when verifying sync message pacts.

Pact-JVM - Slackโ€‹

Chat with us in: #pact-jvm

Pact-Pythonโ€‹

Josh Ellis introduced changes to the handling of functional arguments to be much more flexible, allowing for default arguments. You can see the PR for more information here

Pact-Python - Slackโ€‹

Chat to us in: #pact-python.

Pact-PHPโ€‹

Tien has been working on some QoL improvements which have now been merged.

Pact-PHP - Slackโ€‹

Chat to us in: #pact-php.

Pact-Goโ€‹

Pact-Go v2.4.1 has been released, which includes the latest pact ffi core library, and also mandates the minimum go version to be 1.23, as we are following Go's eol schedule

Pact-Go - Slackโ€‹

Chat with us in: #pact-go.

Pact-Referenceโ€‹

Tien delivered the following changes to bring XML generators to Pact.

Pact-Reference - Slackโ€‹

Chat with us in: #pact-rust.

Pact-Stub-Serverโ€‹

  • Stefan Ansing improved the performance of the pact-stub-server by optimising the memory allocations in this PR
  • Ron also ensured the insecure_tls flag works correctly when fetching pacts from a Pact Broker which addresses this issue, however it is worth noting that the recommended method is you make your certificates available to your Pact Broker and client libraries/tooling.

Pact Brokerโ€‹

The Broker saw a fair few features delivered over the last few months

We also had one just land today, to allow for the schema configuration to be changed from its current public schema, which according to release notes, is not recommend in postgres 15+

Pact-Broker - Slackโ€‹

Chat to us in: #pact-broker.

Pact-Netโ€‹

Adam Rodgers has two draft PR's in play, why not help him out by dropping in for a review.

Levan Nozadze has also dropped in a pull request, to close down a highly requested feature

Pact-Net - Slackโ€‹

Chat with us in: #pact-net.

Pact-Rubyโ€‹

Renaud Martinet was having some issues with cross-compat testing with Pact-JVM with release v1.66.0 of pact-ruby.

Check out his expert troubleshooting and reproduction, and if you want to add a review, it would be most welcome.

Community Eventsโ€‹

Are you talking about Pact or contract-testing this year at an event? Why not let us know and get yourself featured!

APIDays New York - 2025โ€‹

I delivered a talk at APIDays New York titled Graceful service evolution, driven by open standards, guided by contracts. I'll add a video link when it gets published :)

A look at contract testing over the ages, as a means for graceful service evolution, and how it neatly intersects with the exponential explosion of use of APIโ€™s and uptake of OpenAPI as a defining standard. We will explore what a single source of truth looks like, and how perspectives change depending on your viewpoint. Weโ€™ll learning how to tackle challenges, such as versioning, managing breaking changes, provider drift (spec out of sync with implementation), consumer drift ( a view of the used surface area of your API ), helping you combat Hyrumโ€™s law and provide you real world ways to build APIโ€™s now with leading open source tools such as Spectral, Pact & Swagger that will last well into the future.

Community Projectsโ€‹

We saw Fernando Teixeira bring two things to our attention. I'll let him explain why, and then provide you links to the goodness.

I have been working with Pact for some years, and I noticed that many people still don't understand why they need it. That's why I wanted to have a presentation that focused more on the 'Why' and discuss in more details some of the challenges that it helps to solve.

Thats a wrapโ€‹

Want to carry on the conversation? Sign up here to join our Slack community, where you will be amongst over 6k other users. It's a safe place to ask questions, and a great place to share the awesome work you are doing in the Pact ecosystem.

Whatever you are up to, let us know, and we can look to get you featured in the Pact post.

See you next month folks!

Cheers, Saf