From 59c6af5815310972ed17791d918a0a6206f90f23 Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Sat, 28 Feb 2015 11:46:43 -0800 Subject: [PATCH] Refactor tests Avoid too many repeatations --- package.json | 14 +++++++------- test/e2e/driver.js | 9 +++++++++ test/e2e/servers.js | 41 +++++++++++++++++++++++++++++++++++++++++ test/e2e/v1.js | 36 +++++++----------------------------- test/e2e/v2.js | 33 ++++++--------------------------- test/mocha.opts | 2 +- 6 files changed, 71 insertions(+), 64 deletions(-) create mode 100644 test/e2e/driver.js create mode 100644 test/e2e/servers.js diff --git a/package.json b/package.json index da3660b3..9b485b36 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,11 @@ "swagger-client": "2.1.9-M1" }, "devDependencies": { - "chai": "^1.10.0", - "cors": "^2.1.1", - "docco": "^0.4.0", + "chai": "^2.1.0", + "cors": "^2.5.3", + "docco": "^0.7.0", "event-stream": "^3.2.2", - "express": "^3.20.0", + "express": "^4.12.0", "gulp": "^3.8.11", "gulp-clean": "^0.3.1", "gulp-coffee": "^2.3.1", @@ -33,16 +33,16 @@ "gulp-connect": "^2.2.0", "gulp-declare": "^0.3.0", "gulp-handlebars": "^3.0.1", - "gulp-header": "1.2.2", + "gulp-header": "^1.2.2", "gulp-less": "^3.0.1", "gulp-order": "^1.1.1", "gulp-rename": "^1.2.0", "gulp-uglify": "^1.1.0", "gulp-util": "^3.0.4", "gulp-watch": "^4.1.1", - "gulp-wrap": "^0.10.1", + "gulp-wrap": "^0.11.0", "http-server": "^0.7.5", - "less": "^1.4.2", + "less": "^2.4.0", "mocha": "^2.1.0", "selenium-webdriver": "^2.45.0" } diff --git a/test/e2e/driver.js b/test/e2e/driver.js new file mode 100644 index 00000000..8a49ba89 --- /dev/null +++ b/test/e2e/driver.js @@ -0,0 +1,9 @@ +/* + * Web driver manager +*/ + +var webdriver = require('selenium-webdriver'); + +var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.firefox()).build(); + +module.exports = driver; \ No newline at end of file diff --git a/test/e2e/servers.js b/test/e2e/servers.js new file mode 100644 index 00000000..45463f7b --- /dev/null +++ b/test/e2e/servers.js @@ -0,0 +1,41 @@ +/* + * Swagger UI and Specs Servers +*/ +var path = require('path') +var createServer = require('http-server').createServer; + +var dist = path.join(__dirname, '..', '..', 'dist'); +var specs = path.join(__dirname, '..', '..', 'test', 'specs'); +var DOCS_PORT = 8080; +var SPEC_SERVER_PORT = 8081; + +var driver = require('./driver'); + +var headers = { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' +}; + +var swaggerUI; +var specServer; + +module.exports.start = function (specsLocation, done) { + swaggerUI = createServer({ root: dist, headers: headers }); + specServer = createServer({ root: specs, headers: headers }); + + swaggerUI.listen(DOCS_PORT); + specServer.listen(SPEC_SERVER_PORT); + + var swaggerSpecLocation = encodeURIComponent('http://localhost:' + SPEC_SERVER_PORT + specsLocation) + var url = 'http://localhost:' + DOCS_PORT + '/index.html?url=' + swaggerSpecLocation; + + setTimeout(function(){ + driver.get(url); + done(); + }, 3000); +}; + +module.exports.close = function(){ + swaggerUI.close(); + specServer.close(); +} \ No newline at end of file diff --git a/test/e2e/v1.js b/test/e2e/v1.js index 7576ff67..22d9e7e2 100644 --- a/test/e2e/v1.js +++ b/test/e2e/v1.js @@ -1,17 +1,7 @@ -var webdriver = require('selenium-webdriver'); -var createServer = require('http-server').createServer; var expect = require('chai').expect; -var path = require('path') - -var dist = path.join(__dirname, '..', '..', 'dist'); -var specs = path.join(__dirname, '..', '..', 'test', 'specs'); -var DOCS_PORT = 8080; -var SPEC_SERVER_PORT = 8081 - -var headers = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' -}; +var driver = require('./driver'); +var servers = require('./servers'); +var webdriver = require('selenium-webdriver'); var elements = [ 'swagger-ui-container', @@ -25,19 +15,9 @@ var elements = [ describe('swagger 1.x spec tests', function (done) { this.timeout(10 * 1000); - var swaggerUI, specServer, driver; - before(function () { - swaggerUI = createServer({ root: dist, headers: headers }); - specServer = createServer({ root: specs, headers: headers }); - driver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.firefox()).build(); - - swaggerUI.listen(DOCS_PORT); - specServer.listen(SPEC_SERVER_PORT); - - var swaggerSpecLocation = encodeURIComponent('http://localhost:' + SPEC_SERVER_PORT + '/v1.2/petstore/api-docs') - driver.get('http://localhost:' + DOCS_PORT + '/index.html?url=' + swaggerSpecLocation); + before(function (done) { + servers.start('/v1.2/petstore/api-docs', done); }); afterEach(function(){ @@ -113,9 +93,7 @@ describe('swagger 1.x spec tests', function (done) { }); }); - after(function() { - swaggerUI.close(); - specServer.close(); - driver.quit(); + after(function(){ + servers.close(); }); }); \ No newline at end of file diff --git a/test/e2e/v2.js b/test/e2e/v2.js index 863d35bb..86300b66 100644 --- a/test/e2e/v2.js +++ b/test/e2e/v2.js @@ -1,17 +1,8 @@ -var webdriver = require('selenium-webdriver'); -var createServer = require('http-server').createServer; var expect = require('chai').expect; -var path = require('path') +var webdriver = require('selenium-webdriver'); +var driver = require('./driver'); +var servers = require('./servers'); -var dist = path.join(__dirname, '..', '..', 'dist'); -var specs = path.join(__dirname, '..', '..', 'test', 'specs'); -var DOCS_PORT = 8080; -var SPEC_SERVER_PORT = 8081 - -var headers = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' -}; var elements = [ 'swagger-ui-container', @@ -25,19 +16,9 @@ var elements = [ describe('swagger 2.0 spec tests', function (done) { this.timeout(10 * 1000); - var swaggerUI, specServer, driver; - before(function () { - swaggerUI = createServer({ root: dist, headers: headers }); - specServer = createServer({ root: specs, headers: headers }); - driver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.firefox()).build(); - - swaggerUI.listen(DOCS_PORT); - specServer.listen(SPEC_SERVER_PORT); - - var swaggerSpecLocation = encodeURIComponent('http://localhost:' + SPEC_SERVER_PORT + '/v2/petstore.json') - driver.get('http://localhost:' + DOCS_PORT + '/index.html?url=' + swaggerSpecLocation); + before(function (done) { + servers.start('/v2/petstore.json', done); }); afterEach(function(){ @@ -130,8 +111,6 @@ describe('swagger 2.0 spec tests', function (done) { }); after(function() { - swaggerUI.close(); - specServer.close(); - driver.quit(); + servers.close(); }); }); \ No newline at end of file diff --git a/test/mocha.opts b/test/mocha.opts index 63b406d2..8ccdb197 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -1 +1 @@ ---recursive \ No newline at end of file +--recursive --timeout 5000 \ No newline at end of file