Dmitry Munda
07/01/2025, 11:49 AMinteractionId in HAL browser, not user-friendly names. is it something new-ish ?
"testResults": [{
"interactionId": "0eac6b0ba31719c60b6d5d0c1a5a1ceab75943c2",
"mismatches": [{
"attribute": "body",
"description": "Actual map is missing the following keys: reason",
"identifier": "$"
}],
"success": false
},... {
"interactionId": "30ac1652bdc5ce4d8109d0ccabb4b99f6adc0013",
"success": true
}]Jun Yi
07/02/2025, 8:17 AMcan-i-deploy fails?
I'm exploring the following workaround — is this a valid approach?
1. create-version
2. publish-pact / verify-pact
3. can-i-deploy (fails)
4. force deploy anyway (with override flag or manual trigger)
5. record-deployment
Are there any risks or better alternatives to this flow?Kevin
07/02/2025, 3:31 PMKinkini Gamage
07/03/2025, 2:24 AMBas Dijkstra
07/07/2025, 12:01 PMLachlan Newman
07/08/2025, 5:35 AMAndrew Marshall
07/08/2025, 8:39 AMlet result = RUNTIME.block_on(async {
let result = load_plugin(&dependency).await;
// Add a small delay to let asynchronous tasks to complete
sleep(Duration::from_millis(500)).await;
result
});
I've tried using a fixture to make the plugin and provider instance persistent across multiple tests, but haven't had much luck (it looks like there's some state not being cleaned up between unit test runs - or maybe ths issue is with our plugin?) - the first test passes but subsequent ones fail due to contract verification failures.
I can probably provide a minimal example but I thought I'd ask first in case you had any ideas.
Many thanks!Priyaranjan Mudliar
07/08/2025, 9:54 PMLachlan Newman
07/09/2025, 4:14 AMFreddie Jiang
07/22/2025, 7:26 AMFreddie Jiang
07/24/2025, 2:07 AMFreddie Jiang
07/24/2025, 5:42 AMFreddie Jiang
07/28/2025, 2:34 AMDave Clissold
07/28/2025, 12:58 PMit(`consumes a valid ${type} message`, async () => messagePact
.expectsToReceive(`a valid ${provider} ${type} message`)
.withContent({ Body: regex('tenantId', 'tenantId') })
.withContent({ Body: regex('userId', 'userId') })
.withContent({ Body: regex('verb', 'verb') })
.withContent({ Body: regex('actor', 'actor') })
But the contract will expect the Body to be Body: 'actor'
{
"contents": {
"Body": "actor"
},
"description": "a valid assessment-artefact-service xapi message",
"matchingRules": {
"body": {
"$.Body": {
"combine": "AND",
"matchers": [
{
"match": "regex",
"regex": "tenantId"
},
{
"match": "regex",
"regex": "userId"
}
...
If I manually delete the contents from the contracts, then the pact is valid and passes. I've got about 300 queues running like this and refactoring an entire architecture isn't feasible.Slackbot
07/28/2025, 12:58 PMLachlan Newman
08/06/2025, 3:53 AMcan-i-deploy; however, this approach only works when the contract_requiring_verification_published event is triggered. it there a way to call a webhook that lets CI call can-i-deploy when there is no change to a contract?Yousaf Nabi (pactflow.io)
Matt (pactflow.io / pact-js / pact-go)
Yousaf Nabi (pactflow.io)
Freddie Jiang
08/30/2025, 8:30 AMJun Yi
09/01/2025, 1:54 AMErich Zimmerman
09/15/2025, 11:40 PM{
"destinations": [],
"cities": [],
"airports": [
{
"code": "MSY",
"name": "Louis Armstrong New Orleans International Airport"
}
]
}
I want to match that "destinations" and "cities" are indeed empty lists.
I am trying to use maxArrayLike("destinations", 0, example) but I get an error on the Consumer test complaining that I either cannot leave that field empty, or that the example of 1 doesn't match the expected size of 0.Murat Gun
09/16/2025, 4:37 PMFreddie Jiang
09/16/2025, 5:29 PMYousaf Nabi (pactflow.io)
Cameron Pleissnitzer
10/02/2025, 12:30 AMOleksandr.Boiko
10/10/2025, 8:11 AMTim Vahlbrock
11/11/2025, 1:13 PMRuud Welling
11/12/2025, 8:20 AMJaruyot Trithipakij
11/24/2025, 6:36 AMroom(id: "123")), and these IDs are recorded in the pact.
• When we run provider verification, those IDs usually don’t exist in the provider’s real database.
• We have a provider state setup tool that runs mutations to create test data, but the provider uses identity/auto-generated IDs, so the IDs returned from setup don’t match the hardcoded IDs in the contract.
Conceptually, we’d like to:
1. In provider state: run a mutation to create test data and let the provider assign an ID.
2. In verification: use the ID returned from setup in the GraphQL request for that interaction.
Questions:
1. Is there any supported way in Pact for provider state output (e.g. a newly created ID) to influence or substitute into the request during provider verification?
2. If not, what’s the recommended way to handle this pattern of:
◦ Consumer/UI tests that send static/example IDs
◦ Providers that rely on auto-generated identity columns?