Skip to main content

Pact Open Source Update β€” October 2024

Β· 6 min read

πŸ•ΈοΈ Welcome to the October Pact Blog - hope you've got your πŸŽƒ ready for carving, but for now, sit back and relax as we take you through all the updates in the Pact ecosystem along with events & material you've been sharing across the web this month.

Pact OSS Updates​

Pact Slack now has over 6 thousand members​

We are really proud to say we have just crossed the 6k mark, with 6005 members in our general channel in Pact Slack.

We appreciate many users journeys through Slack are transient, either whilst they are getting started with the Pact ecosystem, or after some help, and encounters may be all but fleeting. It is worth noting that not an insignificant amount of us have had the good fortune of meeting new friends, both in person, and virtually, making professional relationships and providing springboards to new opportunities. Some of the interactions have had positive life-changing impacts, your authors journey included.

We are proud to be able to foster a safe environment, where people are welcome to discuss contract testing with a captive audience, and for every engineer who finds that eureka moment where contract testing, just clicks, we know it is improving the API delivery landscape massively and has a net benefit to many interactions we have in our day-to-day life with systems.

If you are proud about the positive impacts Pact has had in your place of work, why not share it with the world? We can provide you a platform, and sharing your engineering mistakes and successes, is a great way to build transparency and trust with your customers, and promote a healthy learning based culture in your organisation.

Pact Message Workshops​

We've recently been working on a suite of Pact Message based examples, to show you how to test asynchronous systems with Pact, by concentrating on the messages sent between systems, rather than the underlying queuing system that transmits them.

We've taken PactFlow's kafka e2e example (consumer/provider), based on our common Product domain example and built out a suite of examples, in various Pact client DSL's.

You can find the new workshop over on GitHub pact-foundation/pact-workshop-message where you can see the Pact message concepts demonstrated in the following flavours.

  • Pact-JS
  • Pact-JVM
  • Pact-Net
  • Pact-Go
  • Pact-Python
  • Pact-Rust

We hope to build out a tutorial on the website, and further enhance it by adding synchronous message examples as well in the near future.

Pact RFCs​

We still have two RFC's currently awaiting review, why not take a look and add your review in the spirit of collaboration and open-source. The proposers would really appreciate and value your input.

  1. rfc: configuration and shared files proposed by @JP-Ellis
  2. rfc: Define matching rules for form-urlencoded body by @tienvx

Pact-Plugins​

Have you written a Pact plugin, or used one yet? We've seen a few community members create some, here are some that I've found.

If you haven't and want to try it out, why not follow our Pact Plugin course, where you will learn the basics and get to build you own Plugin with templates we've provided to help you out.

If you fancy building one in a different language, I've created a suite of examples which you could use as a basis for your own project. Check them out here in my Pluginopedia.

Pact-Plugins - Slack​

Chat with us in: #pact-plugins.

Pact-JS​

James Gauld has been working on a couple of fixes in the Pact-JS lifecycle hooks.

Pact-JS - Slack​

Chat with us in: #pact-js

Pact-Python​

Pact-Python 2.2.2 was released, which included initial support for matchers in the Pact V3 interface.

Check out the example test, for sample usage.

Pact-Python - Slack​

Chat to us in: #pact-python.

Pact-PHP​

Tien has been reworking some of the examples in the Pact-PHP repo, and adding more features, with more Pact generators, as defined in the V3/V4 Spec, including supporting the fromProviderState generator for advanced use-cases.

Why not try them out?

Pact-PHP - Slack​

Chat to us in: #pact-php.

Pact Broker​

  • Stanislav provided another PR to the Pact Broker ecosystem, this time adding the --ignore <PACTICIPANT> flag to the pact-broker cli's can-i-merge command in this PR

  • Want to run a Pact Broker in Azure? Ian Crowl provided this addition to the docs, which still requires a bit of work,but might be enough to get you started!

Pact-Broker - Slack​

Chat to us in: #pact-broker.

Pact Net​

Pact-Net V5 has now been released. It contains several fixes and features, including leveraging the latest pact ffi 0.4.23

If you want to leverage the Pact V4 Specification, which will allow you to have multiple interaction types in a single Pact file, you should upgrade now, and a great place to start is the upgrade guide.

If you prefer learning by example, the workshops have been updated to use the latest Pact V5 release.

As well as the E2E examples

You can check out the PR history, to see the delta for the migration from Pact-Net V4->V5.

Pact-Net - Slack​

Chat to us in: #pact-net.

Community Events​

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

Lewis Prescott - Reliable End to End Testing with API Contracts using Cypress & PactFlow​

Lewis recently took to the stage at CypressConf to teach users about the fundamentals of contract testing as well as how to implement consumer-driven contract testing with Cypress + Pactflow.

Lewis Prescott - E2E Testing with Cypress/PactFlow

Murat K Ozcan - A triple whammy of contract testing posts​

Murat penned another post, this time looking at Pact Message. It's backed by examples in GitHub and well worth a read/look.

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