Otoniel Rodriguez Delgado
04/04/2025, 7:20 PMSimon Raess
04/17/2025, 9:07 AMRui
04/24/2025, 4:02 PMat au.com.dius.pact.core.pactbroker.HalClient.handleHalResponse(HalClient.kt:336)
at au.com.dius.pact.core.pactbroker.HalClient.access$handleHalResponse(HalClient.kt:158)
at au.com.dius.pact.core.pactbroker.HalClient$getJson$1.invoke$lambda$0(HalClient.kt:311)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:247)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
at au.com.dius.pact.core.pactbroker.HalClient$getJson$1.invoke(HalClient.kt:310)
at au.com.dius.pact.core.support.KotlinLanguageSupportKt.handleWith(KotlinLanguageSupport.kt:35)
at au.com.dius.pact.core.pactbroker.HalClient.getJson(HalClient.kt:305)
at au.com.dius.pact.core.pactbroker.HalClient.fetch(HalClient.kt:269)
at au.com.dius.pact.core.pactbroker.PactBrokerClient.fetchPact(PactBrokerClient.kt:782)
at au.com.dius.pact.core.model.PactReaderKt.loadPactFromUrl(PactReader.kt:60)
at au.com.dius.pact.core.model.DefaultPactReader.loadFile(PactReader.kt:413)
at au.com.dius.pact.core.model.DefaultPactReader.loadPact(PactReader.kt:210)
at au.com.dius.pact.provider.junitsupport.loader.PactBrokerLoader.loadPactsForProvider(PactBrokerLoader.kt:266)
at au.com.dius.pact.provider.junitsupport.loader.PactBrokerLoader.load(PactBrokerLoader.kt:128)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider$resolvePactSources$pactSources$1$pacts$1.invoke(PactJUnit5VerificationProvider.kt:78)
at au.com.dius.pact.core.support.KotlinLanguageSupportKt.handleWith(KotlinLanguageSupport.kt:35)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider.resolvePactSources(PactJUnit5VerificationProvider.kt:78)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider.provideTestTemplateInvocationContexts(PactJUnit5VerificationProvider.kt:45)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
James Fraser
04/29/2025, 9:00 AMJames Fraser
05/15/2025, 4:03 PMSimon Raess
05/16/2025, 12:20 PMismail
05/19/2025, 12:00 PMEddie Stanley
05/20/2025, 2:44 AMStephan Sommer
05/20/2025, 12:54 PMinteractions[]
array in the pact file, using a custom type
and domain-specific fields in place of `request`/`response`.
Our PoC showed promising results, and we'd now like to validate whether this is a supported and future-proof approach before rolling it out more broadly.
Our main concern is whether PactFlow will continue to support contracts that contain custom interaction types and properties — or if there's a risk that the broker might reject these files in future versions.
Does this sound like a safe path to go down?
Thanks!Rishav Singh
06/09/2025, 10:20 AMGabriel Vasconcelos
06/09/2025, 10:56 AMJames Fraser
06/17/2025, 8:41 AMCopy Sys. Account UUID
Where can I get it? 😅David McKinney
06/20/2025, 10:31 AM2025-06-20T09:55:08.050264Z INFO ThreadId(16) pact_verifier: Running setup provider state change handler with empty state for 'a setCurrentPage event with empty pageId'
2025-06-20T09:55:08.050280Z INFO ThreadId(16) pact_verifier: Running provider verification for 'a setCurrentPage event with empty pageId'
2025-06-20T09:55:08.050295Z INFO ThreadId(16) pact_verifier::provider_client: Sending request to provider at <http://localhost:56254/>
2025-06-20T09:55:08.050300Z INFO ThreadId(16) pact_verifier::provider_client: Sending request HTTP Request ( method: POST, path: /, query: None, headers: Some({"Content-Type": ["application/json"]}), body: Present(58 bytes, application/json) )
[10:55:08.052] ERROR (8141): pact@15.0.1: no handler found for message a setCurrentPage event with empty pageId
Pactfile - https://pastebin.com/zqtfunst
Consumer - https://pastebin.com/8MqM3Sre
Provider - https://pastebin.com/fNTH9cSc
My consumer tests will pass, generate the pactfile, it looks correct
But on running the provider tests using jest it seems to use default http verifierJocelyn Lecomte
06/21/2025, 10:14 AMMilda
06/24/2025, 9:23 AMstatus=400 {"title":"Validation errors","type":"<https://problems-registry.smartbear.com/validation-error>","status":400,"instance":"/","errors":[{"detail":"content could not be parsed as application/json","pointer":"#/contract/content"},{"detail":"content when Base64 decoded and parsed must be a hash","pointer":"#/contract/content"}]}
Zachary Lysobey
06/24/2025, 9:42 PMCody Jenkins
07/08/2025, 5:27 AMMatt Corby
07/09/2025, 9:06 AMDominic Gara
07/09/2025, 10:05 AMMatt Corby
07/09/2025, 2:22 PM/pacticipants/saq-summary-etl/versions/4b4c8962c8f7243a28cdeda7cbcbf7b7d90ae41a/deployed-versions/environment/6433116c-b3cd-48ce-bd0d-ed2a12b844ee
- any ideas? The response is:
404 . {"error":"The requested document was not found on this server."}
Kevin de Boer
07/10/2025, 8:05 AMDmytro Kryvenko
07/11/2025, 10:55 AMRishav Singh
07/23/2025, 11:07 AMERROR: Server error: 500 Internal Server Error
, maybe can you help ? it is generating for happy path but failing 400, 404 etcDavid Mason
07/28/2025, 8:05 AMFAILED integration_tests/pact/v3/test_can_i_merge.py::test_can_i_merge - RuntimeError: can-i-merge failed: Error retrieving matrix. PactBroker::Client::Hal::ErrorResponseReturned - Error making request to <https://xxx-xxx.pactflow.io/matrix> status=404 Not Found. The requested document was not found on this server.
Using pact-cli to run can-i-merge (unchanged):
docker run --rm pactfoundation/pact-cli:latest pact-broker can-i-merge --broker-base-url={pact_broker_base_url} --broker-token={pact_broker_token} --pacticipant a --pacticipant b
Oleksandr.Boiko
07/28/2025, 8:19 AMMarlin Dalpozzo
07/28/2025, 8:38 PMcan-i-deploy
in our CI/CD system to check the compatibility of our Provider with our Consumer contracts. We would like detailed information about the contract validation failure (i.e. what specific request properties don't match etc), but unfortunately it seems like the default response from can-i-deploy
lacks that information and links to the /contracts/bi-directional/provider/<provider>/version/<version>/consumer/<consumer>/version/<version>/cross-contract-verification-results
page in the pactflow ui. There is documentation that implies that this information can be retrieved programmatically via the pactflow API
https://docs.pactflow.io/docs/bi-directional-contract-testing/compatibility-checks/#api-resources
crossContractVerificationResults
contains the information we want
We have tried various ways to make requests to that url, but couldn't get it to work. We always receive {"title":"404 Not Found","type":"<https://problems-registry.smartbear.com/not-found>","detail":"The requested document was not found on this server.","status":404}
How can we retrieve the contract verification results programmatically?David Mason
07/29/2025, 2:32 PM{
"target": {
"ref_type": "branch",
"type": "pipeline_ref_target",
"ref_name": "${pactbroker.providerVersionBranch}",
"selector": {
"type": "custom",
"pattern": "pi-verify-pacts"
}
},
"variables": [
{
"key": "PACT_URL",
"value": "${pactbroker.pactUrl}"
},
{
"key": "PACT_PROVIDER_VERSION",
"value": "${pactbroker.providerVersionNumber}"
},
{
"key": "PACT_PROVIDER_BRANCH",
"value": "${pactbroker.providerVersionBranch}"
},
{
"key": "PACT_PROVIDER_NAME",
"value": "${pactbroker.providerName}"
},
{
"key": "PACT_CONSUMER_VERSION",
"value": "${pactbroker.consumerVersionNumber}"
},
{
"key": "PACT_CONSUMER_BRANCH",
"value": "${pactbroker.consumerVersionBranch}"
},
{
"key": "PACT_CONSUMER_NAME",
"value": "${pactbroker.consumerName}"
}
]
}
${pactbroker.providerVersionBranch}
and ${pactbroker.providerVersionNumber}
are resolving to an empty string, which causes the webhook to fail.
For now I'll hope that this is just the "test webhook" functionality that's broken at the moment. I'll let you know if the problem persists.Eddie Stanley
08/11/2025, 8:48 PMContract published that requires verification
webhook), what are the rules for determining the pactbroker.pactUrl
that we use in the payload?
If the webhook runs for two different provider versions (as shown in the screenshot), should that pactbroker.pactUrl
be the same or different for the two invocations?Kinkini Gamage
08/13/2025, 12:38 AMconst stateHandlers = {
"products exists": () => {
controller.repository.products = new Map([
["10", new Product("10", "CREDIT_CARD", "28 Degrees", "5678")],
]);
},
"products exist": () => {
controller.repository.products = new Map([
["10", new Product("10", "CREDIT_CARD", "28 Degrees", "5678")],
]);
},
"a product with ID 10 exists": () => {
controller.repository.products = new Map([
["10", new Product("10", "CREDIT_CARD", "28 Degrees", "5678")],
]);
},
"a product with ID 11 does not exist": () => {
controller.repository.products = new Map();
},
};
My Question:
1. Can I use a real database instead? Instead of manually setting up test data in stateHandlers, can I point my provider verification to use a real database environment (like staging/test DB) to fetch actual data?
2. Can I completely avoid stateHandlers? Is it possible to connect directly to my working environment (staging/test database) and eliminate the need for stateHandlers altogether?
Use Case:
• I want to avoid maintaining test data in code
• Prefer using real data from my test/staging environment
• This would be especially useful for webhook-triggered verifications when consumer contracts are updated
Is this possible/recommended? If so, how would I configure the provider verification to use an actual database connection instead of in-memory test data?
Any guidance or examples would be greatly appreciated! 🙏
Thanks!Daniel Phillips
08/14/2025, 10:27 AM"message": "discriminator: oneOf subschemas (or referenced schemas) must have \"properties/transactionType\""
What I cannot understand is why it's complaining about the transactionType not being declared within subschemas, when all of them explicityly define it alongside a fixed enum value.
Here is a sample of what my schema definitions look like:
Transaction:
required:
- transactionDetails
- transactionType
type: object
properties:
transactionType:
type: string
description: 'Type of transaction. Used as a discriminator for polymorphic deserialization.'
example: transaction_a
transactionDetails:
$ref: '#/components/schemas/TransactionDetails'
description: Transaction Details
discriminator:
propertyName: transactionType
oneOf:
- $ref: '#/components/schemas/TransactionA'
- $ref: '#/components/schemas/TransactionB'
TransactionA:
required:
- transactionDetails
- transactionType
type: object
description: Transaction A Details
allOf:
- $ref: '#/components/schemas/Transaction'
- type: object
properties:
transactionDetails:
$ref: '#/components/schemas/TransactionADetails'
transactionType:
type: string
description: Constant discriminator identifying this transaction subtype
readOnly: true
example: transaction_a
enum:
- transaction_a
TransactionB:
required:
- transactionDetails
- transactionType
type: object
description: Transaction B Details
allOf:
- $ref: '#/components/schemas/Transaction'
- type: object
properties:
transactionDetails:
$ref: '#/components/schemas/TransactionBDetails'
transactionType:
type: string
description: Constant discriminator identifying this transaction subtype
readOnly: true
example: transaction_b
enum:
- transaction_b