Needlessly Postulating Minds

    pactum
    TypeScript icon, indicating that this package has built-in type declarations

    3.1.8 • Public • Published

    logo

    PactumJS

    Build Coverage Downloads Size Platform

    Stars Twitter

    REST API Testing Tool for all levels in a Test Pyramid


    PactumJS Demo


    PactumJS is a REST API Testing Tool used to automate e2e, integration, contract & component (or service level) tests.

    • Swift
    • 🎈 Lightweight
    • 🚀 Simple & Powerful
    • 🛠️ Compelling Mock Server
    • 💎 Elegant Data Management
    • 🔧 Extendable & Customizable
    • 📚 Clear & Comprehensive Testing Style
    • 🔗 Component, Contract & E2E testing of APIs

    ----------

    Documentation

    This readme offers an basic introduction to the library. Head over to the full documentation at https://pactumjs.github.io

    Need Help

    We use Github Discussions to receive feedback, discuss ideas & answer questions.

    Installation

    # install pactum as a dev dependency
    npm install --save-dev pactum
    
    # install a test runner to run pactum tests
    # mocha / jest / cucumber
    npm install --save-dev mocha

    ----------

    Usage

    pactum can be used for all levels of testing in a test pyramid. It can also act as an standalone mock server to generate contracts for contract testing.

    API Testing

    Tests in pactum are clear and comprehensive. It uses numerous descriptive methods to build your requests and expectations.

    Simple Test Cases

    Using Mocha

    Running simple api test expectations.

    const pactum = require('pactum');
    
    it('should be a teapot', async () => {
      await pactum.spec()
        .get('http://httpbin.org/status/418')
        .expectStatus(418);
    });
    
    it('should save a new user', async () => {
      await pactum.spec()
        .post('https://jsonplaceholder.typicode.com/users')
        .withHeaders('Authorization', 'Basic xxxx')
        .withJson({
          name: 'bolt',
          email: 'bolt@swift.run'
        })
        .expectStatus(200);
    });
    # mocha is a test framework to execute test cases
    mocha /path/to/test

    Using Cucumber

    See pactum-cucumber-boilerplate for more details on pactum & cucumber integration.

    Scenario: Check Tea Pot
      Given I make a GET request to "http://httpbin.org/status/418"
      When I receive a response
      Then response should have a status 418
    // steps.js
    const pactum = require('pactum');
    const { Given, When, Then, Before } = require('@cucumber/cucumber');
    
    let spec = pactum.spec();
    
    Before(() => { spec = pactum.spec(); });
    
    Given('I make a GET request to {string}', function (url) {
      spec.get(url);
    });
    
    When('I receive a response', async function () {
      await spec.toss();
    });
    
    Then('response should have a status {int}', async function (code) {
      spec.response().should.have.status(code);
    });

    Mock Server

    pactum can act as a standalone mock server that allows us to mock any server via HTTP or HTTPS, such as a REST endpoint. Simply it is a simulator for HTTP-based APIs.

    Running pactum as a standalone mock server.

    const { mock } = require('pactum');
    
    mock.addInteraction({
      request: {
        method: 'GET',
        path: '/api/projects'
      },
      response: {
        status: 200,
        body: [
          {
            id: 'project-id',
            name: 'project-name'
          }
        ]
      }
    });
    
    mock.start(3000);

    ----------

    Notes

    Inspired from frisby and pact.

    Support

    Like this project! Star it on Github and follow on Twitter. Your support means a lot to us.

    Contributors

    If you've ever wanted to contribute to open source, and a great cause, now is your chance! See the contributing docs for more information.

    Thanks to all the people who contribute.


    Install

    npm i pactum

    DownloadsWeekly Downloads

    8,352

    Version

    3.1.8

    License

    MIT

    Unpacked Size

    159 kB

    Total Files

    61

    Last publish

    Collaborators

    • asaianudeep