Socket
Socket
Sign inDemoInstall

@pactflow/pact-cypress-adaptor

Package Overview
Dependencies
3
Maintainers
5
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @pactflow/pact-cypress-adaptor

A cypress adaptor for pact


Version published
Maintainers
5
Created

Readme

Source

Pact Cypress Adaptor

Generate pact contracts from cypress test.

Installation

  • NPM:
npm i -D @pactflow/pact-cypress-adaptor
  • yarn:
yarn add -D @pactflow/pact-cypress-adaptor

Then, setup your cypress plugin at cypress/plugins/index.js

const pactCypressPlugin = require('@pactflow/pact-cypress-adaptor/dist/plugin')
const fs = require('fs')

module.exports = (on, config) => {
  pactCypressPlugin(on, config, fs)
}

Finally, update cypress/support/index.js file to include cypress-pact commands via adding:

import '@pactflow/pact-cypress-adaptor'

Configuration

By default, this plugin omits most cypress auto-generated HTTP headers.

Add more headers to blocklist

To exclude other headers in your pact, add them as a list of strings in cypress.json under key env.headersBlocklist. Eg. in your cypress.json

{
    ...otherCypressConfig,
    "env": {
        "headersBlocklist": ["ignore-me-globally"]
    }
}

Note: Header blocklist can be set up at test level. Check command cy.setupPactHeaderBlocklist

Ignore cypress auto-generated header blocklist

To stop cypress auto-generated HTTP headers being omitted by the plugin, set env.ignoreDefaultBlocklist in your cypress.json. Eg. in your cypress.json

{
    ...otherCypressConfig,
    "env": {
        "headersBlocklist": ["ignore-me-globally"],
        "ignoreDefaultBlocklist": true

    }
}

Commands

cy.setupPact(consumerName:string, providerName: string)

Configure your consumer and provider name

Example

before(() => {
    cy.setupPact('ui-consumer', 'api-provider')
})

cy.usePactWait([alias] | alias)

Listen to aliased cy.intercept network call(s), record network request and response to a pact file. Usage and example about cy.intercept

Example

before(() => {
    cy.setupPact('ui-consumer', 'api-provider')
    cy.intercept('GET', '/users').as('getAllUsers')
})

//... cypress test

after(() => {
    cy.usePactWait(['getAllUsers'])
})

cy.setupPactHeaderBlocklist([headers])

Add a list of headers that will be excluded in a pact at test case level

before(() => {
    cy.setupPact('ui-consumer', 'api-provider')
    cy.intercept('GET', '/users', headers: {'ignore-me': 'ignore me please'}).as('getAllUsers')
    cy.setupPactHeaderBlocklist(['ignore-me'])
})

//... cypress test

after(() => {
    cy.usePactWait(['getAllUsers'])
})

cy.usePactRequest(option, alias) and cy.usePactGet([alias] | alias)

Use cy.usePactRequest to initiate network calls and use cy.usePactGet to record network request and response to a pact file.

Example


before(() => {
    cy.setupPact('ui-consumer', 'api-provider')
    cy.usePactRequest('GET', '/users').as('getAllUsers')
})

//... cypress test

after(() => {
    cy.usePactGet(['getAllUsers'])
})

Example Project

Check out a simple react app example project at /example/todo-example

Keywords

FAQs

Last updated on 09 Mar 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc