test.describe('minimum e2e', function() { test.before(function() { var self = this; var capabilities = { 'browserName' : 'firefox', 'browserstack.user' : browserstackConf['browserstack.user'], 'browserstack.key' : browserstackConf['browserstack.key'], 'browserstack.debug' : 'true', 'browserstack.local' : 'true' }; this.driver = new webdriver.Builder() .usingServer('http://hub.browserstack.com/wd/hub') .withCapabilities(capabilities) .build(); var d = webdriver.promise.defer(); app.set('port', 3001); this.server = app.listen(app.get('port'), function(err) { if (err) { return d.reject(err); } console.log('Express server listening on port ' + self.server.address().port); self.driver.get('http://localhost:3001/'); d.fulfill(); }); return d.promise; }); test.it('should title be "Express"', function() { this.driver.getTitle().then(function(title) { assert.strictEqual(title, "Express"); }); }); test.after(function() { var d = webdriver.promise.defer(); this.server.close(function(err) { if (err) { return d.reject(err); } console.log('Close express server listening'); d.fulfill(); }); return d.promise; }); test.after(function() { this.driver.quit(); }); });
test.describe(_.compact([setup.device, setup.os_version, setup.browserName, setup.browser_version]).join(', '), function() { var driver; test.before(function() { driver = new webdriver.Builder() .usingServer('http://hub.browserstack.com/wd/hub') .withCapabilities(_.extend({}, browserStackConfig, setup)) .build(); }); test.after(function() { driver.quit(); }); test.it('runs the mocha tests', function() { driver.get(config.host + '/test/browser/test.html'); driver.wait(function() { return driver.executeScript('return mocha_finished;').then(function(finished) { if (!finished) return false; return driver.executeScript('return mocha_stats;').then(function(stats) { console.log(' Passes: ' + stats.passes + ', Failures: ' + stats.failures + ', Duration: ' + (stats.duration / 1000).toFixed(2) + 's'); assert(stats.tests > 0, 'No mocha tests were run'); if (!stats.failures) return true; return driver.executeScript('return mocha_failures;').then(function(failures) { for (var i = 0; i < failures.length; ++i) { var prefix = ' ' + (i + 1) + '. '; console.log(prefix + failures[i][0]); console.log(Array(prefix.length + 1).join(' ') + failures[i][1]); } return true; }); }); }); }); }); });