From 3531a47399ebcc8c6a3112fe6769620bd90418d5 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Tue, 11 Nov 2014 10:55:16 -0500 Subject: [PATCH 01/11] Update releasenotes.md adding mention of selenium upgrade --- releasenotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/releasenotes.md b/releasenotes.md index 9648aa5..22506d7 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -10,6 +10,7 @@ Version 0.9.0 - *Dacosta'd* - the presence of the browser argument in the fiveby callback will determine if a browser is spawn regardless of the disableBrowsers flag. This feature is for those that want to mix browser and non-browser testing in the same project - lots more unit tests and CI goodness - index split into index and lib/fiveby +- upgraded to selenium 2.44.0 - small bug fixes Version 0.8.0 - *Daypartying* From bee1c121e2d64ed2d2271124773ad698f95150e1 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Tue, 2 Dec 2014 16:27:58 -0500 Subject: [PATCH 02/11] removing tesla cache in favor of direct lru use, +1 open source --- lib/properties.js | 11 +++-------- package.json | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/properties.js b/lib/properties.js index a44c33c..fa86fe5 100644 --- a/lib/properties.js +++ b/lib/properties.js @@ -1,9 +1,5 @@ var MapUtil = require('./map'); -var Cache = require('./cache'); - -/** - * Expose service - */ +var Cache = require('lru-cache'); module.exports = PropertyService; @@ -43,8 +39,7 @@ module.exports = PropertyService; function PropertyService(environment) { this._env2rank = this._calculateRanks(environment); this._coreKey2rank = {}; - var cacheSvc = new Cache(); - this._cache = cacheSvc.getCache('core.PropertyService'); + this._cache = Cache({ max: 10000, maxAge: Infinity }); } PropertyService.prototype.getProperties = function (namespace) { @@ -81,7 +76,7 @@ Properties.prototype.set = function (env, key, value) { if (rank < highest) return; this._key2rank[propKey] = rank; - this._cache.put(propKey, value); + this._cache.set(propKey, value); }; /** diff --git a/package.json b/package.json index 1a3b5c9..6903795 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ }, "dependencies": { "lodash": "^2.4.1", + "lru-cache": "^2.5.0", "mocha": "^1.21.4", "selenium-webdriver": "2.44.0", - "tesla.lib.cache": "^0.1.1", "traceback": "^0.3.1" }, "devDependencies": { From c322a110e2f1127e452303a11ca681c0ecd8eb27 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Tue, 2 Dec 2014 16:48:14 -0500 Subject: [PATCH 03/11] cleanup and metadata for tesla cache removal --- lib/cache.js | 18 ---- lib/map.js | 262 ------------------------------------------------ package.json | 2 +- releasenotes.md | 5 + 4 files changed, 6 insertions(+), 281 deletions(-) delete mode 100644 lib/cache.js delete mode 100644 lib/map.js diff --git a/lib/cache.js b/lib/cache.js deleted file mode 100644 index b93c8cc..0000000 --- a/lib/cache.js +++ /dev/null @@ -1,18 +0,0 @@ -var Cache = require('tesla.lib.cache').RamLru; - -/** - * Expose service. - */ - -module.exports = CacheService; - -function CacheService() { - this._caches = new Cache(); -} - -CacheService.prototype.getCache = function (name, options) { - function store() { - return new Cache(options); - } - return this._caches.readThrough(name, store); -}; diff --git a/lib/map.js b/lib/map.js deleted file mode 100644 index 9ecee2b..0000000 --- a/lib/map.js +++ /dev/null @@ -1,262 +0,0 @@ -var util = require('util'), - EventEmitter = require('events').EventEmitter; - -/** - * Expose `Map`. - */ - -exports = module.exports = Map; - -/** - * Map - * - * An an object that maps keys to values. - * A map cannot contain duplicate keys; each key can map to at most one value. - * - * Look at [java.util.Map](http://docs.oracle.com/javase/6/docs/api/java/util/Map.html) - * - * @param {Object} object the keys & values of which will be the keys/values of this map - * - */ - -function Map(object) { - this._map = {}; - this._mapSize = 0; - if (object) { - this._putObject(object); - } -} -util.inherits(Map, EventEmitter); - -/** - * Removes all entries from the map. - * emits the 'clear' event - */ - -Map.prototype.clear = function () { - this._map = {}; - this._mapSize = 0; - this.emit('clear'); -}; - -/** - * Returns true if this map contains a - * mapping for the specified key. - * - * @param {String} key - * @return {Boolean} - */ - -Map.prototype.containsKey = function (key) { - if (!this._isValid(key)) return false; - return !!(this._map[key]); -}; - -/** - * Returns true if this map contains one or more - * keys for the specified value - * - * @param {Object} value - * @return {Boolean} - */ - -Map.prototype.containsValue = function (value) { - if (!this._isValid(value)) return false; - var map = this._map, - hasEquals = ('function' === typeof value.equals); - for (var key in map) { - if (hasOwnProperty.call(map, key)) { - if (hasEquals ? - value.equals(map[key]) : - value === map[key]) { - return true; - } - } - } - return false; -}; - -/** - * Returns an array of the key/value pairs contained in this map. - * - * @return {Array} [{key: String, value: Object}] - */ - -Map.prototype.entrySet = function () { - var map = this._map, - set = []; - for (var key in map) { - if (hasOwnProperty.call(map, key)) { - set.push({ - key: key, - value: map[key] - }); - } - } - return set; -}; - -/** - * Determines whether the keys and values - * of the current map are equal to the one provided. - * - * @param {Map} otherMap to compare - * @return {Boolean} - */ - -Map.prototype.equals = function (otherMap) { - if (!this._isValid(otherMap) || (!(otherMap instanceof Map)) || (otherMap.size() !== this.size())) { - return false; - } - var map = this._map; - for (var key in map) { - if (hasOwnProperty.call(map, key)) { - if (!otherMap.containsKey(key) || !otherMap.containsValue(map[key])) { - return false; - } - } - } - return true; -}; - -/** - * Get the value from the map with the provided key. - * - * @param {String} key - * @return {Object} value or null if one isn't found - */ - -Map.prototype.get = function (key) { - if (!this._isValid(key)) throw new Error('invalid key'); - var value = this._map[key]; - return ('undefined' !== typeof value ? value : null); -}; - -/** - * Put the value from the map with the provided key. - * - * Emits the 'put' event with the key, value as params. - * - * @param {String} key - * @param {Object} value - */ - -Map.prototype.put = function (key, value) { - if (!this._isValid(key)) throw new Error('invalid key'); - this._map[key] = value; - this._mapSize++; - this.emit('put', key, value); -}; - -/** - * Put each key/value of the provided map into the current one. - * - * Emits the 'put' event on every inserted key. - * - * @param {Map} map - */ - -Map.prototype.putAll = function (map) { - if (!this._isValid(map) || !(map instanceof Map)) { - throw new Error('invalid map'); - } - var self = this; - map.keySet().forEach(function (key) { - self.put(key, map.get(key)); - }); -}; - -/** - * Remove a mapping with the provided key. - * - * Emits the 'remove' event with the key, oldValue as params. - * - * @param {String} key - * @return {Object} old value - */ - -Map.prototype.remove = function (key) { - if (!this._isValid(key)) throw new Error('invalid key'); - var oldValue = this._map[key]; - delete this._map[key]; - this._mapSize--; - this.emit('remove', key, oldValue); - return oldValue; -}; - -/** - * Determines whether the map has any mappings. - * - * @return {Boolean} - */ - -Map.prototype.isEmpty = function () { - return (this._mapSize === 0); -}; - -/** - * Get a set of all keys of this map - * - * @return {Array} - */ - -Map.prototype.keySet = function () { - return Object.keys(this._map); -}; - -/** - * @return {Number} size - */ - -Map.prototype.size = function () { - return this._mapSize; -}; - -/** - * Get a set of all values of this map - * - * @return {Array} - */ - -Map.prototype.values = function () { - var map = this._map - , values = []; - for (var key in map) { - if (hasOwnProperty.call(map, key)) { - values.push(map[key]); - } - } - return values; -}; - -/** - * Object is considered valid if - * it is defined and not null - * - * @param {Object} obj - * @return {Boolean} - * @api private - */ - -Map.prototype._isValid = function (obj) { - return (('undefined' !== typeof obj) && (null !== obj)); -}; - -/** - * Add all keys / values of the provided object - * into the current map. - * - * @param {Object} obj the keys & values of \ - * which will be the keys/values of this map - * @api private - */ - -Map.prototype._putObject = function (obj) { - if ('object' !== typeof obj) throw new Error('invalid object'); - for (var key in obj) { - if (hasOwnProperty.call(obj, key)) { - this._map[key] = obj[key]; - this._mapSize++; - } - } -}; diff --git a/package.json b/package.json index 6903795..3a475b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fiveby", - "version": "0.9.1", + "version": "0.9.2", "description": "Package up testing options, levels, apis, and dependencies into one simple lib", "scripts": { "test": "gulp test" diff --git a/releasenotes.md b/releasenotes.md index 22506d7..8507277 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -1,3 +1,8 @@ +Version 0.9.2 - *Pending* +----------------- + +- removed dependency on tesla.lib.cache + Version 0.9.1 - *Staedt'd* ----------------- From b736c930f94a7c48ce1c551093fd71ff3ea9b772 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Fri, 5 Dec 2014 13:27:36 -0500 Subject: [PATCH 04/11] thought I already removed map --- lib/properties.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/properties.js b/lib/properties.js index fa86fe5..1f1eeda 100644 --- a/lib/properties.js +++ b/lib/properties.js @@ -1,4 +1,3 @@ -var MapUtil = require('./map'); var Cache = require('lru-cache'); module.exports = PropertyService; From 98f55127d828292b5069f34a6b34d40d31bda2ba Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Fri, 5 Dec 2014 13:35:16 -0500 Subject: [PATCH 05/11] adding cobertura coverage report for broader consumption of results --- gulpfile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index dd2f0a6..f696f3f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -8,7 +8,9 @@ gulp.task('test', function (cb) { .on('finish', function () { gulp.src(['test/*.js']) .pipe(mocha()) - .pipe(istanbul.writeReports()) + .pipe(istanbul.writeReports({ + reporters: [ 'text', 'lcov', 'cobertura' ] + })) .on('end', cb); }); }); From a9186a89f5f1042e11195cc103e63e0607cc331e Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Fri, 5 Dec 2014 16:13:43 -0500 Subject: [PATCH 06/11] adding the ability to configure each browser dynamically instead of the previously hardcoded config --- README.md | 16 ++++++++++++++-- lib/fiveby.js | 16 +++++++++------- test/fiveby.js | 2 +- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fed5ce5..a65f76e 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,23 @@ See [docs](https://github.dowjones.net/institutional/fiveby/docs) for more detai "implicitWait": 5000, "hubUrl": null, "browsers": { - "chrome": 1 + "chrome": { + "chromeOptions": { + "args": ["--disable-extensions"] + } + } }, "disableBrowsers": false } ``` +individual browsers can be set to any truthy value if testing is needed but no configuration is required: + +```json + "browsers": { + "chrome": true + } +``` + disableBrowsers is optional, defaults to false -hubUrl is optional, if not provided (and disableBrowsers = false) it will spin up a selenium server *requires java* +hubUrl is optional, if not provided (and disableBrowsers = false) it will spin up the packaged selenium server *requires java* diff --git a/lib/fiveby.js b/lib/fiveby.js index c75a020..4b13193 100644 --- a/lib/fiveby.js +++ b/lib/fiveby.js @@ -52,15 +52,17 @@ fiveby.prototype.runSuiteInBrowsers = function (test) { var testComplete = webdriver.promise.defer(); global.testPromise = testComplete.promise; - //create a control flow and driver per test file + //create a driver per test file lastPromise.then(function() { // set options for current browser var capabilities = webdriver.Capabilities[elem](); - if (elem === 'chrome') { - capabilities.set('chromeOptions', { - args: ['--disable-extensions'] + var cap = self.config.browsers[elem]; + + if (typeof cap === 'object' && cap !== null) { + Object.keys(cap).forEach(function (n) { + capabilities.set(n, cap[n]); }); } @@ -77,12 +79,12 @@ fiveby.prototype.runSuiteInBrowsers = function (test) { //register hooks with mocha self.registerHook('fiveby error handling', describe, "beforeEach", function () { - this.currentTest.parent.file = this.currentTest.file = file; - webdriver.promise.controlFlow().on('uncaughtException', function (e) { + this.currentTest.parent.file = this.currentTest.file = file; //correct file name bug with async execution and mocha + webdriver.promise.controlFlow().on('uncaughtException', function (e) { //map errors to test when appropriate if(this.currentTest) { this.currentTest.callback(e); } else { - console.error("Failed in setup or teardown, test result may not be valid for this file"); + console.error("Failed in setup or teardown, test result may not be valid for this file"); //failed in non-test throw(e); } }); diff --git a/test/fiveby.js b/test/fiveby.js index 5b27e26..8e26fc1 100644 --- a/test/fiveby.js +++ b/test/fiveby.js @@ -188,7 +188,7 @@ describe('runSuiteInBrowsers', function(){ }; } }}); - var fb = new fiveby({browsers:{chrome:1, ie: 1}}); + var fb = new fiveby({browsers:{chrome:{"chromeOptions": {"args": ["--disable-extensions"]}}, ie: 1}}); fb.registerHook = function(name, suite, hookarr, func){ func.apply({currentTest:{parent:{}}}); }; From 9427b2371187c9afa3d89f461dc383eba798fcbc Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Fri, 5 Dec 2014 16:39:24 -0500 Subject: [PATCH 07/11] tested version support in grid and it works fine, updating documentation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a65f76e..1020f70 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ See [docs](https://github.dowjones.net/institutional/fiveby/docs) for more detai "hubUrl": null, "browsers": { "chrome": { + "version": "37.0.2062.103", "chromeOptions": { "args": ["--disable-extensions"] } From 60645a5fa9cc191eb4d077d54a87cf16a497bbb8 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Thu, 11 Dec 2014 10:43:00 -0500 Subject: [PATCH 08/11] README cleanup --- README.md | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 1020f70..11472d4 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ [Fiveby](http://en.wikipedia.org/wiki/Five_by_five) [![Build Status](http://djin-jenkins01.dowjones.net/job/fiveby/badge/icon)](http://djin-jenkins01.dowjones.net/job/fiveby/) ======== -makes it easier to write automated tests/suites. Here's the idea: don't worry about selenium (or it's config), don't worry about selenium JS api oddities, don't worry about mocha, just use fiveby: +All the things you expect from a robust testing framework by neatly packaging: [WebDriverJS](https://code.google.com/p/selenium/wiki/WebDriverJs), [mocha](http://mochajs.org/), and [should](https://github.com/shouldjs/should.js) with a little glue and zero magic: + ```javascript var fiveby = require('fiveby'); -new fiveby(function (browser) { //browser is driver if you are looking at selenium docs +fiveby(function (browser) { return describe('Google Search in ' + browser.name, function () { it('should work', function () { browser.get('http://www.google.com'); - var searchBox = browser.findElement(by.name('q')); //notice webdriver.By convenience method + var searchBox = browser.findElement(by.name('q')); searchBox.sendKeys('awesome'); return searchBox.getAttribute('value').then(function (value) { 'awesome'.should.equal(value); @@ -18,7 +19,14 @@ new fiveby(function (browser) { //browser is driver if you are looking at seleni }); }); ``` -See [docs](https://github.dowjones.net/institutional/fiveby/docs) for more details and use [gulp-fiveby](https://github.dowjones.net/institutional/gulp-fiveby) as a scaffold project. [Live Help](https://dowjones.slack.com/messages/fiveby/) +Add [gulp](http://gulpjs.com/) and some convention to make it even more powerful: [slush-fiveby](https://github.com/dowjones/slush-fiveby) + +###What's unique about fiveby? + +- Cleanly allows mocha and webdriverjs coexist +- MUCH simpler configuration and less boilerplate code +- [environment properties](docs/properties.md) +- conveniences: api cleanup, spins up a selenium server if not provided, closes the browser for you, etc ... ###Configuration - fiveby-config.json @@ -27,6 +35,7 @@ See [docs](https://github.dowjones.net/institutional/fiveby/docs) for more detai "implicitWait": 5000, "hubUrl": null, "browsers": { + "firefox": true, "chrome": { "version": "37.0.2062.103", "chromeOptions": { @@ -37,14 +46,19 @@ See [docs](https://github.dowjones.net/institutional/fiveby/docs) for more detai "disableBrowsers": false } ``` -individual browsers can be set to any truthy value if testing is needed but no configuration is required: -```json - "browsers": { - "chrome": true - } -``` +disableBrowsers and hubUrl are optional, disableBrowsers defaults to false + +###English? + +#####Have little to no experience with end to end testing? + +Ok, this tool will allow you to write a bit of javascript that will open any browser (even mobile), emulate user behavior via a few simple commands, and then verify what's displayed onscreen is correct. You can compile large suites of these tests and easily run them against many different browsers at once and get nice reports. It can be run with something like [jenkins](http://jenkins-ci.org/) to automate further. + +###Pre-reqs -disableBrowsers is optional, defaults to false +- [node.js](http://nodejs.org/) +- [mocha cli](http://mochajs.org/) +- [java](https://www.java.com/en/download/help/download_options.xml) -hubUrl is optional, if not provided (and disableBrowsers = false) it will spin up the packaged selenium server *requires java* +See [docs folder](docs) for even more details! From 9cc8e522d452d59d87eefdc0b90cf620c01a52db Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Thu, 11 Dec 2014 11:49:28 -0500 Subject: [PATCH 09/11] More documentation polish --- README.md | 6 +++--- docs/README.md | 18 ++++++++---------- docs/api.md | 2 +- docs/clean-promises.md | 2 +- docs/ecosystem.png | Bin 63222 -> 0 bytes docs/external-dependencies.md | 4 ++-- docs/faq.md | 22 +++++++++++----------- 7 files changed, 26 insertions(+), 28 deletions(-) delete mode 100644 docs/ecosystem.png diff --git a/README.md b/README.md index 11472d4..6994c44 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,9 @@ Add [gulp](http://gulpjs.com/) and some convention to make it even more powerful ###What's unique about fiveby? -- Cleanly allows mocha and webdriverjs coexist +- Cleanly allows mocha and webdriverjs to coexist - MUCH simpler configuration and less boilerplate code -- [environment properties](docs/properties.md) +- [environment properties](/docs/properties.md) - conveniences: api cleanup, spins up a selenium server if not provided, closes the browser for you, etc ... ###Configuration - fiveby-config.json @@ -61,4 +61,4 @@ Ok, this tool will allow you to write a bit of javascript that will open any bro - [mocha cli](http://mochajs.org/) - [java](https://www.java.com/en/download/help/download_options.xml) -See [docs folder](docs) for even more details! +See [docs folder](/docs) for even more details! diff --git a/docs/README.md b/docs/README.md index b816414..7140f93 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,8 @@ ####1. Introduction - Automated browser testing is writing code to simulation a user: click element x, wait for event y, click again, assert results, repeat. + Automated browser testing is writing code to simulate a user: click element x, wait for event y, click again, assert results, repeat. -####2. Project Structure - the important part to note here is the distinction between tests and components. Components abstract the dom details from the tests using the [page objects pattern](pop.md). You can see some real projects [here](https://github.dowjones.net/factivaautomation). Keep in mind other projects are immature as well and probably DO NOT follow many of the best practices discussed here... and suffered for it! +####2. Project Structure - the important part to note here is the distinction between tests and components. Components abstract the dom details from the tests using the [page objects pattern](pop.md). Services are where you perform actions that have nothing to do with the browser, like rest calls used by setup/teardown. ``` └── tests @@ -21,6 +21,9 @@ │    └── smoke │     └── ... │ + └── services + │ └── LoginService.js + │ └── components    ├── BaseComponent.js    ├── CommonConfig.js @@ -45,13 +48,13 @@ ####5. [Code Style & API](api.md) -####6.[External Dependencies](/docs/external-dependencies.md) +####6.[External Dependencies](external-dependencies.md) ####7. Based on: *Selenium Javascript* api: -> http://selenium.googlecode.com/git/docs/api/javascript/index.html +> http://selenium.googlecode.com/git/docs/api/javascript/module_selenium-webdriver.html > (webdriver.By and webdriver.promise surfaced as globals for convience) *Mocha BDD* api: @@ -63,9 +66,4 @@ > https://github.com/shouldjs/should.js - -####8. Ecosystem - -![Ecosystem](ecosystem.png) - -####9. [FAQ](/docs/faq.md) +####8. [FAQ](/docs/faq.md) diff --git a/docs/api.md b/docs/api.md index ebc6168..0ad8cb3 100644 --- a/docs/api.md +++ b/docs/api.md @@ -13,7 +13,7 @@ something.sendKeys('else'); **Find multiple elements** -[Working example leveraging the page objects pattern](https://github.dowjones.net/institutional/gulp-fiveby/blob/master/tests/smoke/bootstrap.js) +[Working example leveraging the page objects pattern](https://github.com/dowjones/slush-fiveby/blob/master/tests/smoke/bootstrap.js) **Complex mouses operations** using action chains: diff --git a/docs/clean-promises.md b/docs/clean-promises.md index 115cf30..05f9c0a 100644 --- a/docs/clean-promises.md +++ b/docs/clean-promises.md @@ -3,7 +3,7 @@ There are many cases where you need to wait for multiple promises before doing something. Sometimes you need to run them in series, sometimes in parallel, sometimes you need all the results at the end, and sometimes you need each function to know about the results of the previous function. -Following are all the examples we could think of =D +Following are some of the examples we could think of =D *** ####Sequence (Waterfall) output: diff --git a/docs/ecosystem.png b/docs/ecosystem.png deleted file mode 100644 index be8b62a997a8bf3a1cd4bd8d09d686c673aa20c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63222 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%0D0#LP$73Bz0sX1ME^z6w#BBw`?PhUizuG@Q)(b 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%0A>B0dJ9tLQ7}pEK=@!~ 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 Date: Tue, 16 Dec 2014 16:17:41 -0500 Subject: [PATCH 10/11] Update package.json moving should --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3a475b3..086b2f6 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,13 @@ "lru-cache": "^2.5.0", "mocha": "^1.21.4", "selenium-webdriver": "2.44.0", - "traceback": "^0.3.1" + "traceback": "^0.3.1", + "should": "^4.0.4" }, "devDependencies": { "gulp": "^3.8.9", "gulp-istanbul": "^0.3.1", "gulp-mocha": "^1.1.1", - "should": "^4.0.4", "proxyquire": "^1.0.1" } } From 54e0ba19e89ca4090112cf3201e6bef8cbc92224 Mon Sep 17 00:00:00 2001 From: Scott Rahner Date: Tue, 16 Dec 2014 16:54:12 -0500 Subject: [PATCH 11/11] release prep --- releasenotes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/releasenotes.md b/releasenotes.md index 8507277..191922f 100644 --- a/releasenotes.md +++ b/releasenotes.md @@ -2,6 +2,8 @@ Version 0.9.2 - *Pending* ----------------- - removed dependency on tesla.lib.cache +- major doc overhaul +- updated versions Version 0.9.1 - *Staedt'd* -----------------