This is an example of a Node consumer using Pact to create a consumer driven contract, and sharing it via Pactflow.
It is using a public tenant on Pactflow, which you can access here using the credentials dXfltyFMgNOFZAxr8io9wJ37iUpY42M
/O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1
. The latest version of the Example Consumer/Example Provider pact is published here.
The project uses a Makefile to simulate a very simple build pipeline with two stages - test and deploy.
- Test
- Run tests (including the pact tests that generate the contract)
- Publish pacts, associating the consumer version with the name of the current branch
- Check if we are safe to deploy to prod (ie. has the pact content been successfully verified)
- Deploy (only from master)
- Deploy app (just pretend for the purposes of this example!)
- Record the deployment in the Pact Broker
See the Pactflow CI/CD Workshop.
Start up the provider (or another compatible provider) API by running npm run start
.
Open a separate terminal for the consumer.
Before starting the consumer, create a .env
file in the root of the project and set the URL to point to your running provider:
REACT_APP_API_BASE_URL=http://localhost:8080
Then run:
npm run start
Software:
- Tools listed at: https://docs.pactflow.io/docs/workshops/ci-cd/set-up-ci/prerequisites/
- A pactflow.io account with an valid API token
To be able to run some of the commands locally, you will need to export the following environment variables into your shell:
PACT_BROKER_TOKEN
: a valid API token for PactflowPACT_BROKER_BASE_URL
: a fully qualified domain name with protocol to your pact broker e.g. https://testdemo.pactflow.io
make test
- run the pact test locallymake fake_ci
- run the CI process locally