Search code examples
google-chrome-extensiongoogle-chrome-apppostman

How to copy postman history from chrome app to native app?


Since Google is now ending the support for chrome apps. Recently Postman deprecated their chrome app and introduced a native app.

I am in the process of switching from postman chrome app to native app.

How do I copy the history from my chrome app to native app. Sync doesn't work. There is a option to export data but that doesn't export the history.

Any Ideas?


Solution

  • So while searching for this I came across this post which is very helpful. Thanks to stephan for sharing this code. Follow these steps to copy your history from chrome app to native app.

    //In Chrome DevTools on the background page of the Postman extension...
    
    //A handy helper method that lets you save data from the console to a file
    (function(console){
    
    console.save = function(data, filename){
    
        if(!data) {
            console.error('Console.save: No data')
            return;
        }
    
        if(!filename) filename = 'console.json'
    
        if(typeof data === "object"){
            data = JSON.stringify(data, undefined, 4)
        }
    
        var blob = new Blob([data], {type: 'text/json'}),
            e    = document.createEvent('MouseEvents'),
            a    = document.createElement('a')
    
        a.download = filename
        a.href = window.URL.createObjectURL(blob)
        a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
        e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
        a.dispatchEvent(e)
    }
    })(console)
    
    //Common error reporting function
    function reportError(){
    console.error('Oops, something went wrong :-(');
    }
    
    //Open the database
    var dbReq = indexedDB.open('postman')
    dbReq.onerror = reportError;
    dbReq.onsuccess = function(){
    var db = dbReq.result;
    
    //Query for all the saved requests
    var requestReq = db.transaction(["requests"],"readwrite").objectStore('requests').getAll();
    requestReq.onerror = reportError;
    requestReq.onsuccess = function(){
    	var requests = requestReq.result;
    	
    	//Dump them to a file
    	console.save(JSON.stringify(requests), 'postman-requests-export.json')
    	console.info('Your existing requests have been exported to a file and downloaded to your computer.  You will need to copy the contents of that file for the next part')
    };
    };
    
    
    //Switch to standalone app and open the dev console
    
    //Paste the text from the exported file here (overwriting the empty array)
    var data = [] 
    
    //Enter the guid/id of the workspace to import into.  Run the script with this value blank if you need some help
    //  finding this value.  Also, be sure you don't end up with extra quotes if you copy/paste the value
    var ws = ''; 
    
    //Common error reporting function
    function reportError(){
    console.error('Oops, something went wrong :-(');
    }
    
    //Open the database
    var dbReq = indexedDB.open('postman-app')
    dbReq.onerror = reportError;
    dbReq.onsuccess = function(){
    var db = dbReq.result;
    
    if(!data.length){
    	console.error('You did not pass in any exported requests so there is nothing for this script to do.  Perhaps you forgot to paste your request data?');
    	return;
    }
    
    if(!ws){
    	var wsReq = db.transaction(["workspace"],"readwrite").objectStore('workspace').getAll();
    	wsReq.onerror = reportError;
    	wsReq.onsuccess = function(){
    		console.error('You did not specify a workspace.  Below is a dump of all your workspaces.  Grab the guid (ID field) from the workspace you want these requests to show up under and include it at the top of this script');
    		console.log(wsReq.result);
    	}
    	return;
    }
    
    data.forEach(function(a){
    	a.workspace = ws;
    	db.transaction(["history"],"readwrite").objectStore('history').add(a);
    });
    
    console.log('Requests have been imported.  Give it a second to finish up and then restart Postman')
    }
    //Restart Postman

    Note :

    1.To Use DevTools on your chrome app you will need to enable following flag in
    chrome://flags flag

    2.Then just right click and inspect on your chrome postman app.

    3.To User DevTools on your native app ctrl+shift+I (view->showDevTools)