newmanのすべてのリクエストにヘッダを加える


Postmanのコマンドラインツールである『Newman
サービス監視のシナリオの実行にこのNewmanを用いているのですが、ログを追うためにすべてのリクエストのヘッダにX-Request-Idをつけたくなりました。
単純にすべてのコレクション内のすべてのリクエストにヘッダをつければいいのですが、実行時に毎回違う値を送信したかったり、そもそもつけるのが面倒だったりするのでJavaScriptでヘッダを付与する方法について調べました。

Newmanの導入

  • インストール
$ npm install newman --global;
  • 実行
$ newman run {collection}.json;

NewmanをJavaScriptで実行

var newman = require('newman');

newman.run({
  collection: require('./{collection}.json'),
  reporters: 'cli'
}, function (err) {
  if (err) { throw err; }
  console.log('collection run complete!');
});

Newmanのすべてのリクエストにヘッダを加える

Newmanでは実行中の各イベントによって処理を実行することができます。(イベント一覧)
今回はすべてのアイテムが実行される前のイベントであるbeforeItemでヘッダを追加する処理を実行するようにしました。

var newman = require('newman'),
    PostmanHeader = require('postman-collection').Header;

newman.run({
  collection: require('./{collection}.json'),
  reporters: 'cli'
}, function (err) {
  if (err) { throw err; }
  console.log('collection run complete!');
})
on('beforeItem', function (err, args) { // イベント登録
  var xRequestId, additionalHeader;

  xRequestId = createId(20);
  additionalHeader = new PostmanHeader({ // Postmanのヘッダ情報を作成
    key: 'X-Request-Id',
    value: xRequestId
  });
  args.item.request.headers.members.push( additionalHeader ); // ヘッダを付与
});

function createId() {
  // IDを作って返す
}