javascript - Async function depends on a external module in Protractor test -


i want

  1. save image file in remote web server, ,
  2. upload it server

in protractor test.

// depend on external module var fs = require('fs');  // save remote file(url) local(dest) var download = function (url, dest) {      // let function async     browser.executeasyncscript(function (url, dest, done) {          var file = fs.createwritestream(dest);         var request = http.get(url, function (response) {             response.pipe(file);             file.on('finish', function () {                 file.close(done);             });         });     }, url, dest); };  describe('', function () {     it('', function () {         browser.get('http://...');          download('http://.../foo.jpg', 'foo.jpg'); /*** doesn't work! ***/          var absolutepath = path.resolve(__dirname, 'foo.jpg');         $('input[type=file]').sendkeys(absolutepath);         $('#uploadbutton').click();         ... 

but doesn't work:

   stacktrace:      unknownerror: javascript error: fs not defined 

when put var fs = require('fs'); in download function, error message below:

   stacktrace:      unknownerror: javascript error: require not defined 

when call executeasyncscript function pass serialized executed inside browser. function not run in context of protractor test, on browser.

you need create promise resolves when done downloading file.

// depend on external module var fs = require('fs');  describe('', function () {    // save remote file(url) local(dest)   var download = function (url, dest) {       // create promise resolved after download.       var d = protractor.promise.defer();        var file = fs.createwritestream(dest);       var request = http.get(url, function (response) {           response.pipe(file);           file.on('finish', function () {               file.close();               // file has been read, resolve promise               d. fulfill();           });       });        // return promise       d.promise;   };    it('', function () {       browser.get('http://...');        // file , wait promise resolve move on       download('http://.../foo.jpg', 'foo.jpg').then(function() {           // make sure specify path can write , read file.           var absolutepath = path.resolve(__dirname, 'foo.jpg');           $('input[type=file]').sendkeys(absolutepath);           $('#uploadbutton').click();           ...       }); 

let me know if works

here documentation: https://code.google.com/p/selenium/wiki/webdriverjs#deferred_objects


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -