Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Pact Consumer Workflow Example in Typescript with Jest


Showcases the following

  • Written in Typescript
  • Utilises Pact in a Jest Wrapper jest-pact
  • Uses Swagger to define API
  • Uses Swagger-cli to validate Swagger specification
  • Uses to perform consumer driven contract tests
  • Uses Swagger-mock-validator to validate generated pact contracts
  • Publishes validated pact contracts to pact-broker (hosted on AWS EC2)
  • Tags validated contracts with branch name
  • Pact mock service docker base
  • Pact mock service docker base examples
  • circleci config
  • use pmpact to generate postman collections for pact contracts
  • Example pact tests
    • AWS v4 Signed API Gateway Provider
    • Soap API provider
    • File upload API provider
    • JSON API provider
  • Pact mock service docker base
  • Pact mock service docker base examples
  • Postman integration
    • Generate postman collections from pact contracts
    • Inject URL into postman collection from PACT_PROVIDER_URL
    • Run postman scripts with newman
    • Run postman scripts with jest
  • example can-i-deploy

Where can I see it


  • clone repository
  • Run yarn install

Run pact tests

  • Run yarn run pact-test

Validate Swagger spec

  • Run yarn run swagger-validate-spec

Validate Pact contract against Swagger spec

  • Run yarn run swagger-validate-pact

Publish pacts

  • Run pact-publish

Tag pacts

  • Run pact-tag

Start the mock server

  • Run docker-compose up

Set the following env vars for pact publishing


Create postman collections from pacts

  • run ./postman/ to generate postman collections in pact/postman/collections
  • run ./postman/ to generate env configs for postman in pact/postman/env where the urls are replaced with $PACT_PROVIDER_URL
  • run ./postman/ to run the postman collection against your $PACT_PROVIDER_URL
  • run newman tests with jest, via npx jest -c jest.newman.js

Note:- There are no tests in the saved postman collections, so it will run the requests, but will not validate the responses are as per the pacts.


  • Currently this will use $PACT_PROVIDER_URL for all generated postman collections, add the ability to specify a provider name, and update the url accordingly.

Build your own Pact Stub Service for your pacts in Docker

cd docker/pact-stub-service

Build the base pact image, change the name you54f to your own dockerhub username

The Base image resides at base.Dockerfile which will load the pact ruby standalone, plus a healthcheck endpoint /healthcheck on the containers for use in AWS and other Cloud providers.

make pact_build docker build -t pact-base -f base.Dockerfile . make pact_tag docker tag pact-base you54f/pact-base make pact_push docker push you54f/pact-base

You can then copy your pact files generated with yarn run test into the docker/pact-stub-service/pacts folder that the Dockerfile will use.

copy_pacts rm -rf pacts && cp -r ../../pact/pacts .

Look at the Dockerfile

FROM you54f/pact-base


COPY ${PACT_FILE} /pact.json

See the docker/docker-compose.yml file for how to load your pacts into the docker container.

version: "3.1"

      context: pact-stub-service
        PACT_FILE: pacts/test-consumer-json-provider.json
      - "8080:8080"

You can run it with cd docker && docker-compose up