var createBrowserStackTunnel = function (logger, config, emitter) {
  const log = logger.create('launcher.browserstack')
  const bsConfig = config.browserStack || {}
  if (bsConfig.startTunnel === false) {
    return Q()
  }

  const bsAccesskey = process.env.BROWSERSTACK_ACCESS_KEY || process.env.BROWSER_STACK_ACCESS_KEY || bsConfig.accessKey
  const bsLocal = new browserstack.Local()
  const bsLocalArgs = { key: bsAccesskey }
  const deferred = Q.defer()

  log.debug('Starting BrowserStackLocal')
  bsLocal.start(bsLocalArgs, function () {
    log.debug('Started BrowserStackLocal')
    deferred.resolve()
  })

  emitter.on('exit', function (done) {
    log.debug('Shutting down BrowserStackLocal')
    bsLocal.stop(function () {
      log.debug('Stopped BrowserStackLocal')
      done()
    })
  })

  return deferred.promise
}
bs_local.start(bs_local_args, function(error) {
  if (error) {
    console.log(error);
  } else {
    console.log('browserstack-local connected.');

    child = childProcess.execSync('./node_modules/.bin/nightwatch -c browserstack-local.conf.js -e chrome', { stdio: [ 0, 0, 0 ] });

    if(child) {
      child.on('exit', function() {
        if(bs_local) {
          bs_local.stop(function() {});
        }

        exit(0);
      });
    }
  }
  if(bs_local) {
    bs_local.stop(function() {});
  }

  process.on('exit', function (code) {
    bs_local.stop(function() {
      console.log("closing browserstack-local.");
    });
  });
});
      child.on('exit', function() {
        if(bs_local) {
          bs_local.stop(function() {});
        }

        exit(0);
      });
 emitter.on('exit', function (done) {
   log.debug('Shutting down BrowserStackLocal')
   bsLocal.stop(function () {
     log.debug('Stopped BrowserStackLocal')
     done()
   })
 })
Esempio n. 5
0
    it('should reject if local.start throws an error', () => {
        const service = new BrowserstackLauncher()
        Browserstack.Local.mockImplementationOnce(function () {
            this.start = jest.fn().mockImplementationOnce((options, cb) => cb(error))
        })

        return expect(service.onPrepare(config, caps)).rejects.toThrow(error)
            .then(() => expect(service.browserstackLocal.start).toHaveBeenCalled())
    })
 child.on('exit', function() {
   if(bs_local) {
     bs_local.stop(function() {
       console.log('Stopped browserstack');
     });
     instance.close();
     process.exit(0);
   }
 });
			openTunnel: () => new Promise(resolve => {
				tunnel.start({}, error => {
					if (error) {
						console.error("Failed to open tunnel");
						console.error(error);
						throw error;
					}
					resolve();
				});
			}),
process.on('SIGINT', function() {
  if (bs_local !== null) {
    bs_local.stop(function(error) {
      if (error) {
        console.log(error);
      } else {
        console.log('BrowserStackLocal Disconnected');
        process.exit();
      }
    });
  }
});
	tunnel: function () {
		const Tunnel = require('browserstack-local').Local;
		const tunnel = new Tunnel();
		return {
			openTunnel: () => new Promise(resolve => {
				tunnel.start({}, error => {
					if (error) {
						console.error("Failed to open tunnel");
						console.error(error);
						throw error;
					}
					resolve();
				});
			}),
			closeTunnel: () => denodeify(tunnel.stop.bind(tunnel))()
		};
	},
Esempio n. 10
0
const instance = app.listen(PORT, function(err) {
  if (err) {
    console.error(err);
  }
  console.log(`Serving ${BUILD_PATH} at port ${PORT}`);

  bs_local.start(bs_local_args, function(error) {
    if (error) {
      console.log(error);
    } else {
      console.log('Connected to Browserstack. Now testing...');
      const child = childProcess.spawn(
        path.resolve(__dirname, '../node_modules/.bin/protractor'), ['./config/protractor.bs.conf.js']
      );

      if (child) {
        child.stdout.on('data', (data) => {
          if(`${data}`.trim()) {
            console.log(`${data}`);
          }
        });

        child.stderr.on('data', (data) => {
          if(`${data}`.trim()) {
            console.log(`${data}`);
          }
        });

        child.on('exit', function() {
          if(bs_local) {
            bs_local.stop(function() {
              console.log('Stopped browserstack');
            });
            instance.close();
            process.exit(0);
          }
        });
      }
    }
  });
});
Esempio n. 11
0
#!/usr/bin/env node

var Nightwatch = require('nightwatch');
var browserstack = require('browserstack-local');
var bs_local;

try {
  process.mainModule.filename = "./node_modules/.bin/nightwatch"

  // Code to start browserstack local before start of test
  console.log("Connecting local");
  Nightwatch.bs_local = bs_local = new browserstack.Local();
  bs_local.start({'key': process.env.BROWSERSTACK_ACCESS_KEY }, function(error) {
    if (error) throw error;

    console.log('Connected. Now testing...');
    Nightwatch.cli(function(argv) {
      Nightwatch.CliRunner(argv)
        .setup(null, function(){
          // Code to stop browserstack local after end of parallel test
          bs_local.stop(function(){});
        })
        .runTests(function(){
          // Code to stop browserstack local after end of single test
          bs_local.stop(function(){});
        });
    });
  });
} catch (ex) {
  console.log('There was an error while starting the test runner:\n\n');
  process.stderr.write(ex.stack + '\n');
Esempio n. 12
0
  e => {
    return [
      e.browser,
      e.browser_version,
      e.os,
      e.os_version
    ].join('_').replace(/\./g, '-').replace(/ /g, '_');
  }
);

try {
  process.mainModule.filename = './node_modules/.bin/nightwatch';

  // Code to start browserstack local before start of test
  console.log('Connecting localhost to Browserstack...');
  Nightwatch.bs_local = bs_local = new browserstack.Local();
  bs_local.start({ 'key': process.env.BROWSERSTACK_ACCESS_KEY }, function (error) {
    if (error) throw new Error(error);

    console.log('Connected. Running tests...');
    console.log('Go to https://www.browserstack.com/automate to view tests in progress.');
    Nightwatch.cli(function (argv) {
      var envString = environment_names.join(',');
      argv.e = envString;
      argv.env = envString;
      Nightwatch.CliRunner(argv)
        .setup(null, function () {
          // Code to stop browserstack local after end of parallel test
          bs_local.stop(function () {});
        })
        .runTests(function () {
 process.on('exit', function (code) {
   bs_local.stop(function() {
     console.log("closing browserstack-local.");
   });
 });
#!/usr/bin/env node

if(process.argv[2]){
  process.kill(process.argv[2], 'SIGINT');
  process.exit(0);
}

var browserstack = require('browserstack-local');
var fs = require('fs');

var pidFile = 'browserstack-local.pid';
var bs_local = new browserstack.Local();
var bs_local_args = {
  'key': process.env.BROWSERSTACK_ACCESS_KEY,
  'forcelocal': true,
  'v': true
};

process.on('SIGINT', function() {
  if (bs_local !== null) {
    bs_local.stop(function(error) {
      if (error) {
        console.log(error);
      } else {
        console.log('BrowserStackLocal Disconnected');
        process.exit();
      }
    });
  }
});