Nebulous Plasma Muffin

    @apideck/postman-to-k6

    1.8.3 • Public • Published

    postman-to-k6-cover

    Postman-to-k6

    Converts a Postman collection to a k6 script.

    The postman-to-k6 converter utilizes your Postman collection and converts all the Postman requests, including tests, variables, ... to K6 scripts that can be executed by K6 to run performance tests.

    Github badge npm npm

    This project is a friendly fork of the original grafana/postman-to-k6 converter, actively maintained and open for new contributions.

    Content

    Features

    • [x] Pre-request scripts.
    • [x] Test scripts.
    • [x] Variables (at all scopes + dynamic).
    • [x] Data files.
    • [x] Authentication methods (except Hawk).
    • [x] File uploads.
    • [x] postman.* interface (exceptions below).
    • [x] pm.* interface (exceptions below).
    • [x] Support for Postman Dynamic Variables & ReplaceIn function.
    • [x] Global variables exposed by Postman: globals environment data iteration.
    • [x] xml2Json conversion.
    • [x] All Postman Schema versions.

    Installation

    Local Installation (recommended)

    While possible to install globally, we recommend that you, if possible, add the converter to the node_modules of your test project using:

    $ npm install -D @apideck/postman-to-k6

    or using yarn...

    $ yarn add @apideck/postman-to-k6

    Note that this will require you to run the converter with npx @apideck/postman-to-k6 your-postman-file or, if you are using an older versions of npm, ./node_modules/.bin/postman-to-k6 your-postman-file.

    Global Installation

    $ npm install -g @apideck/postman-to-k6

    Usage

    To convert an exported collection to a k6 script:

    $ postman-to-k6 collection.json -o k6-script.js

    Then run the script in k6, as usual, using:

    $ k6 run k6-script.js

    Options

    Iterations

    Configures how many times the script will be executed before completion.

    Flag Verbose Default
    -i --iterations 1

    Example:

    $ postman-to-k6 collection.json --iterations 25 -o k6-script.js

    Environment Variables

    Provide environment variables from a JSON file.

    Flag Verbose Default
    -e --environment N/A

    Example:

    $ postman-to-k6 collection.json --environment environment.json -o k6-script.js

    Global Variables

    Provide global variables from a JSON file.

    Flag Verbose Default
    -g --global N/A
    $ postman-to-k6 collection.json --global globals.json -o k6-script.js

    CSV Data File

    Provide a data file in the CSV format.

    Flag Verbose Default
    -c --csv N/A
    $ postman-to-k6 collection.json --csv data.csv -o k6-script.js

    JSON Data File

    Pass in a data file in the JSON format.

    Flag Verbose Default
    -j --json N/A
    $ postman-to-k6 collection.json --json data.json -o k6-script.js

    K6 Param Options File

    Pass K6 parameter options as a file in JSON format.

    Flag Verbose Default
    --k6-params N/A
    $ postman-to-k6 collection.json --k6-params k6-params.json -o k6-script.js

    K6 Handle Summary as JSON

    Output the K6 summary as a file in JSON format. This will add the K6 handleSummary(data) to the generated script, providing the functionality that K6 will store the summary output as JSON file locally.

    Flag Verbose Default
    --k6-handle-summary-json N/A
    $ postman-to-k6 collection.json --k6-handle-summary-json summary-report.json -o k6-script.js

    K6 Request tag

    Generate K6 request name tags based on available naming strategies:

    • none: no automatic generated tags | default
    • request: uses the request name as tag (example "Show all accounts")
    • folder-request: uses Postman folder name and the request name (example: "Accounts - Show all accounts")
    Flag Verbose Default
    --k6-request-tagging N/A

    Example for request strategy

    $ postman-to-k6 collection.json --k6-request-tagging=request -o k6-script.js

    Example for folder-request strategy

    $ postman-to-k6 collection.json --k6-request-tagging=folder-request -o k6-script.js

    Separate

    Split requests into separate files, for easier rearrangement of the logic.

    Flag Verbose Default
    -s --separate false
    $ postman-to-k6 collection.json --separate -o k6-script.js
    $ postman-to-k6 collection.json -s -o k6-script.js

    Skip Pre

    Skips any pre-request scripts during conversion

    Flag Verbose Default
    --skip-pre false
    $ postman-to-k6 collection.json --skip-pre -o k6-script.js

    Skip Post

    Skips any post-request scripts during conversion

    Flag Verbose Default
    --skip-post false
    $ postman-to-k6 collection.json --skip-pre -o k6-script.js

    CLI options file

    Manage all the CLI options in a separate configuration file and pass them along to the postman-to-k6 command. To make the CLI usage easier, especially in CI/CD implementations.

    All the available CLI options can be used in the config file. By passing the CLI options as parameters, you can overwrite the defined CLI options defined in the file.

    Flag Verbose Default
    --cli-options-file false
    $ postman-to-k6 collection.json --cli-options-file cli-config.json

    Example of JSON CLI config file

    {
        "output": "k6-script.js",
        "k6-params": "config/k6-params.json",
        "environment": "config/envs/team.env.json",
        "separate": true
    }

    Examples

    A collection of Postman examples are located under example. To run one of the examples, just run it as you would any other command:

    $ postman-to-k6 example/v2/echo.json -o k6-script.js

    Unsupported Features

    • Sending requests from scripts using pm.sendRequest.
    • Controlling request execution order using postman.setNextRequest.
    • Cookie properties, like hostOnly, session, and storeId.
    • Textual response messages:
      • responseCode.name
      • responseCode.detail
      • pm.response.reason
      • pm.response.to.have.status(reason)
      • pm.response.to.not.have.status(reason)
    • Properties returning Postman classes:
      • pm.request.url pm.request.headers
      • pm.response.headers
    • The Hawk authentication method.
    • Deprecated xmlToJson method.
    • Request IDs are changed. Postman doesn't provide them in the export, so we have to generate new ones.

    Other similar tools

    Credits

    Special credits to the team from Grafana/LoadImpact for open-sourcing & growing the converter and contributing it to the community. Thanks to bookmoons for creating this tool. Also, thanks to borjacampina for creating the original incarnation of the tool.

    Install

    npm i @apideck/postman-to-k6

    DownloadsWeekly Downloads

    674

    Version

    1.8.3

    License

    Apache-2.0

    Unpacked Size

    1.56 MB

    Total Files

    97

    Last publish

    Collaborators

    • brahimmouhamou
    • gdewilde
    • geertwille
    • jakeprins
    • nicklloyd
    • eliasmeire
    • trinix