Skip to content

Postman

This plugin provides functions that handle Postman tests. It has been validated with Postman 8.12.1 and should work with any recent version of Postman.

It can be used directly in a workflow, or indirectly via generators (such as those providing access to test case managers).

A working newman installation with its HTML reporter (newman-reporter-html) must be available in the targeted execution environments.

The functions have a postman category prefix.

Functions

postman/postman@v1

Run a Postman collection.

Warning

If the function is used more than once in a job, it is up to the caller to ensure no previous test execution results remain before executing a new collection.

Inputs

The function has the following inputs:

  • collection (required)

    The Postman collection to run.

  • folder (optional)

    Specify a single folder to run from a collection. (--folder option)

  • environment (optional)

    Specify a Postman environment as a JSON [file]. (-e, --environment option)

  • iteration-data (optional)

    Specify a data file to use either JSON or CSV. (-d, --iteration-data option)

  • globals (optional)

    Specify a Postman globals file as JSON [file]. (-g, --globals option)

  • iteration-count (optional)

    Define the number of iterations to run. (-n, --iteration-count option)

  • delay-request (optional)

    Specify a delay (in ms) between requests [number]. (--delay-request option)

  • timeout-request (optional)

    Specify a request timeout (in ms) for a request. (--timeout-request option)

  • bail (optional)

    Stop the runner when an invalid folder was specified using the --folder option or an error was encountered in general. (--bail option)

  • extra-options (optional)

    Any other option.

Reports

The function generates the following reports:

  • newman-run-report.xml

    Surefire report (XML).

    It has the application/vnd.opentestfactory.postman-surefire+xml content type.

  • newman-run-report.html

    Report formatted in HTML.

Example

- uses: postman/postman@v1
  with:
    collection: path/to/collection (JSON_file|URL)
- uses: postman/postman@v1
  with:
    collection: path/to/collection (JSON_file|URL)
    folder: folderName
    environment: path/to/Postman_environment (JSON_file|URL)
    iteration-data: path/to/Data_file (JSON|CSV)
    globals: path/to/Postman_globals_file (JSON)
    iteration-count: value1 (number)
    delay-request: value2 (number in ms)
    timeout-request: value3 (number in ms)
    bail: ('folder'|'failure'|true)

    extra-options: any other option

postman/execute@v1

An execute function for use by generators.

Test Reference format

The test reference format used by postman/execute@v1 is as follows:

  • {project}/{path_to_collection}[#{folder}[#{request}]]

With:

  • {project} (required): name of the project on the source code repository.
  • {path_to_collection} (required): path and name of the Postman collection file, from the root of the project (with the .postman_collection.json extension).

    No support of renamed collection files

    The name of the file defines the name of the collection, i.e. if the file is called <name>.postman_collection.json, then the collection name is considered to be <name>. This name <name> is the one used to analyze the execution report and determine the test result. If the collection file has been renamed, this mechanism will no longer work.

  • {folder} (optional): name of a specific folder containing requests in the Postman collection file (Newman’s --folder option).

  • {request} (optional): name of a specific request to parse for which you want to obtain a particular result.

Note

The {request} precision in the test reference has no impact on the execution, but only on test result determination.

So, even when defining the specific level of the request, all requests defined in the folder will be executed (this means, for example, that if several test references point toward the same folder but toward different requests, then all the requests of the folder will be executed several times).

The test reports include the traces of all executed requests. But, only the Error / Failed / Success status corresponding to the specific request is used to determine the test case result.

Warning

Unicity of the specified folder

If the root directory of the project contains several folders with the name {folder}, Newman will only execute the first found one. So, it is strongly advised to use unique names for the deepest directories.

Inputs

The function has the following inputs:

  • test (required)

    The test reference.

Reports

The function generates the following reports:

  • newman-run-report.xml

    Surefire report (XML).

    It has the application/vnd.opentestfactory.postman-surefire+xml content type.

  • newman-run-report.html

    Report formatted in HTML.

Customization

The POSTMAN_EXTRA_OPTIONS environment variable can be used to pass additional parameters to the newman run command.

If defined it will be appended to the end of the command line.

The following parameters are used in the provider-generated newman run command:

newman run "{collection_path}" \
  -g _opentf_global_params.json -e _opentf_environment_params.json \
  --reporters junit,html \
  --reporter-junit-export newman-run-report.xml \
  --reporter-html-export newman-run-report.html $POSTMAN_EXTRA_OPTIONS

You must avoid passing, via the POSTMAN_EXTRA_OPTIONS variable, the command line parameters that conflict with the parameters already used, or the parameters that impact the generation or alter the path of the reports expected by the orchestrator (view “Reports” section).

Extended HTML reports

Postman HTML reports can be extended using newman-reporter-htmlextra package. It should be installed globally on the execution environment:

npm install -g newman-reporter-htmlextra

newman-reporter-htmlextra package provides HTML reports containing execution summary, requests details, and detailed information on failed and skipped test cases.

To obtain extended HTML reports, pass the following values to the POSTMAN_EXTRA_OPTIONS environment variable:

--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html

It will override the provider-generated newman run command reporters parameters. Two reports will be generated at the end of the run: Surefire XML report and extended HTML report.

For example, it is possible to set the POSTMAN_EXTRA_OPTIONS variable value using a provider hook that will run before each execute command:

hooks:
- name: newman-reporter-htmlextra (windows)
  events:
  - categoryPrefix: postman
    category: execute
  if: runner.os == 'windows'
  before:
  - run: echo set POSTMAN_EXTRA_OPTIONS=--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html >>%OPENTF_VARIABLES%
- name: newman-reporter-htmlextra (linux)
  events:
  - categoryPrefix: postman
    category: execute
  if: runner.os == 'linux'
  before:
  - run: echo 'POSTMAN_EXTRA_OPTIONS="--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html"' >>$OPENTF_VARIABLES

Example

- uses: postman/execute@v1
  with:
    test: path/to/collection#folderName#requestName

postman/params@v1

A params function for use by generators.

params function has mandatory data and format inputs.

Inputs

The function has the following inputs:

  • data (required)

    The data to use for the automated test.

  • format (required)

    The format to use for the automated test data.

Example

- uses: postman/params@v1
  with:
    data:
      global:
        key1: value1
        key2: value2
      test:
        key1: value3
        key3: value4
    format: format
format must so far be SQUASHTM_FORMAT (tm.squashtest.org/params@v1).

data can have two keys:

  • global for defining global parameters.
  • test for defining test parameters.

Using with inception

Please refer to “Inception” for more information on what inception is.

Preload the inception environment with at least the test execution report data.

Example

my_workflow.yaml
metadata:
  name: Postman Inception
resources:
  files:
  - xml_report
  - html_report
jobs:
  my_job:
    runs-on: inception
    steps:
    - uses: actions/prepare-inception@v1
      with:
        newman-run-report.xml: ${{ resources.files.xml_report }}
        newman-run-report.html: ${{ resources.files.html_report }}
    - uses: postman/execute@v1
      with:
        test: OpenWeather/postman_collection.json

You can use the following command to run it:

opentf-ctl \
    run workflow my_workflow.yaml \
    -f xml_report=report.xml \
    -f html_report=report.html
opentf-ctl ^
    run workflow my_workflow.yaml ^
    -f xml_report=report.xml ^
    -f html_report=report.html
opentf-ctl `
    run workflow my_workflow.yaml `
    -f xml_report=report.xml `
    -f html_report=report.html

Configuration

Hooks can be defined for the provided functions. This can be done in workflow definitions or at the orchestrator level so that they apply to all your workflows.

Configuration at the orchestrator level is done by setting the POSTMAN_PROVIDER_HOOKS environment variable.

Please refer to “Common Provider Settings” for more information.