Javascript Har to Postman converter
Javascript Har to Postman converter. Try it out
The main goal of the project is the creation of a JS library to convert .har
files to Postman requests/collection in .JSON
format.
HTTP Archive format
or HAR
files are a JSON-formatted archive file format for logging of a web browser’s interaction with a site (HTTP transactions).
On the other hand Postman
is a testing API client tool, allowing us to test a request against a specific environment.
The intended audience is, therefore, anybody who finds a use case where this library is useful in any way.
npm install har2postman
var Har2Postman = require('har2postman');
var includeTests = true;
harToPostman.createPostmanCollection(stringifiedHarFile, includeTests);
includeTests
: default false
, set to true
for including test assertions in requestsPlease note every version should include a suite of test cases ensuring new requirements are working. The last test case of the suite should check the library produces a JSON
output matching the content of the file /test/x.x.x/output.json
given a JSON
input matching the content of the file /test/x.x.x/input.json
.
createPostmanCollection
function able to produce a valid postman collection including the expected file
(postman metadata) and item
(request itself) objects out of a har
file.Har2Postman
in npm if new tag is released.har
file (response code, maybe id if path param?).createPostmanCollection
function should include a second optional boolean
argument to decide whether the output should include the test section or not. By default, the behaviour of the boolean flag should be false
.query params
; those should also be mapped from the har file to the postman collection. Evaluate whether some of them (FK?) should be included as part of the test assertions.har
file can contain multiple requests, and all them should be contained within the swagger collection.Content-Type
should be included in the request.xml
formatid
if contained in response as env variable for future requests over same entity (GET, PUT or DELETE)
var generateItem = function(){
var item = [{
name: generateItemName(harRequest.method, harRequestUrl.pathname, harResponse.status, generateTest),
event: generateItemEvent(harResponse, harRequestUrl),
request: {
method: harRequest.method,
url: {
raw: harRequestUrl.toString(),
protocol: harRequestUrl.protocol.slice(0, -1),
host: harRequestUrl.hostname.split('.'),
path: harPathnameArray.slice(1)
}
}
}];
}
The right way for this function would be:
var generateItem = function(){
return [{
name: generateItemName(harRequest.method, harRequestUrl.pathname, harResponse.status, generateTest),
event: generateItemEvent(harResponse, harRequestUrl),
request: generateRequest(harRequest, harRequestUrl);
}];
}
var generateRequest = function(){
return {
method: harRequest.method,
url: generateUrl(harRequestUrl);
}
}
//var generateUrl = function() ...
Also important have a look at the functions returning arrays instead of objects, this will have to change in the future if those arrays need more than one element.
This project is licensed under the MIT License - see the LICENSE file for details