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.
- chore(deps): Update stub server for better performance
- docs: Add common issues related to loadding ffi to troubleshooting document
- refactor: Replace roadrunner by php's gRPC server
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
- feat: add deployed-environments to pacticipant response and tag versions
- feat: show deployed-environments in branch versions response
- feat: add tag_versions endpoint
- feat: added deployed-environments to
/pacticipants/$name/versions and /pacticipants/$name
- feat: aggregate provider states by consumers
- chore(ci): test maintained version of postgres
- fix: refactored the query to filter out duplicate integration rows
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+
- chore: Allow schema configuration which addresses a request to Add Support for Specifying Database Schema via Environment Variable.
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.
- feat!: Make the messaging provider handle scenario requests async
- feat!: Invoke async message scenario factories on request
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.
- A talk presented at TestWarez last year, in which Fernando explains some of the challenges that Pact wants to solve in terms of microservices testing.
- An Ecommerce Microservices Testing Example designed to explore QA strategies for microservices with Synchronous and Asynchronous communication. Includes examples of message-based and HTTP contracts.
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