Peter Borg
Peter Borg

Reputation: 11

How to organize your Postman collections and execute them with Newman with GitLab CI?

I am thinking of organizing my Postman API tests by creating a collection per feature. So for example we have 2 features the collections will be saved in /test/FEAT-01/FEAT-01-test.postman_collection.json and another in /test/FEAT-02/FEAT-02-test.postman_collection.json. In this way I am able to compare the collections separately in git and selectively execute tests as I want.

However I want my GitLab CI to execute all my tests under my root test folder using Newman. How can I achieve that?

Upvotes: 1

Views: 1296

Answers (1)

NayeWonka
NayeWonka

Reputation: 21

One thing that worked for me, was creating one job per collection in gitlab, it looks something like this:

variables:
POSTMAN_COLLECTION1: <Your collection here>.json
POSTMAN_COLLECTION2: <Your collection here>.json
POSTMAN_ENVIRONMENT: <Your environment here>.json
DATA: <Your iterator file>
stages:
    - test 
postman_tests:
    stage: test
    image: 
        name: postman/newman:alpine
        entrypoint: [""]
    script:
        - newman --version
        - npm install -g newman-reporter-html
        - newman run ${POSTMAN_COLLECTION1} -e ${POSTMAN_ENVIRONMENT} -d ${DATA} --reporters cli,html --reporter-html-export report.html
    artifacts:
        when: always
        paths:
            - report.html
postman_test2:
    stage: test
    image: 
        name: postman/newman:alpine
        entrypoint: [""]
    script:
        - newman --version
        - npm install -g newman-reporter-html
        - newman run ${POSTMAN_COLLECTION2} -e ${POSTMAN_ENVIRONMENT} --reporters cli,html --reporter-html-export report.html
    artifacts:
        when: always
        paths:
            - report.html

You can also create a script that reads from your root folder and executes X times per collection, something like this:

$ for collection in ./PostmanCollections/*; do newman run "$collection" --environment ./PostmanEnvironments/Test.postman_environment.json' -r cli; done

Upvotes: 2

Related Questions