-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Initial prep for browser tests in CI - ⬆️ [email protected] Some fixes that we didn't have were required. - 🐛 Fix browser not being able to require describe/it `support/browser-entry.js` was removing the listener that is in charge of keeping `Mocha.describe/it/suite` etc up-to-date. That listener is now added everytime a `ui` is set up. - Correct isatty for browser * Travis + SauceLabs + Karma setup (first pass) - add sauce connect - prepare to use karma on saucelabs; fix potential windows problems - rewrite `scripts/ensure-compatible-npm.sh` in JS - detect travis node 0.8 env; just upgrade if found - symlink `mocha` to itself for `karma-mocha` - if explicit `--production` flag is present, skip this - don't know how to skip this part if `mocha` is a devDep of some other package - use [email protected]; don't try to install npm@3 - browser tests with karma & phantom - move `support/browser-entry.js` to `browser-entry.js` to keep paths sane - `karma.conf.js` loads data out of `.karma.conf.js` - we have a "main" browser suite - then we have suites for each interface - each suite is a single run of Karma - each suite is executed by the `Makefile` - build `./mocha.js` upon test execution for `karma-mocha` to use - bonus: 3rd-party browserification should theoretically now be possible as per the `./index.js` entry in `package.json`'s `browser` field - add dev deps for karma - test changes: - split `lookupFiles` test into its own file so we can ignore it in Karma - fix broken `test/acceptance/throw.js` for browser - fix `test/acceptance/utils.js`'s `type` tests for PhantomJS - try to reduce build matrix - fix missing targets - fix infinite loop in Makefile - downgrade phantomjs to 1.9.8 - remove some cruft from karma config; try to add sauce labs - try again w/ the saucelabs - typo - remove karma-source-map-support as it's a no-go on IE8 - Require up-to-date mocha.js for any browser tests - Make CI rebuild mocha.js. Make won't rebuild when just checked out by CI because timestamps on source and mocha.js are the same. We could use a script to set the timestamps to the commit time, but it still wouldn't work if mocha.js were committed along with other changes that hadn't been built into it. Which shouldn't happen anyway -- but then again, the point of CI is to see what commits change, it's usually going to need to rebuild mocha.js if it's working right, so it's not going to hurt much to rebuild it every time even on the few times it doesn't need to. * fix IE8 compatibility for browser tests - Avoid `Array.prototype.map` in test - Workaround for missing `Object.create` - Use a shim for `Date.prototype.toISOString` - Use simple number math instead of array indexing for interface tests - Use `expect` instead of `should` - Avoid builtin function in stringify test (A quick check revealed that stringify does not treat toString specially anyway, and IE8 ignores the toString assigned to the object, so use a different property name) - Use `karma-expect` for automatic browser tests - Remove `karma-should` * Travis + SauceLabs + Karma setup (second pass) - add note about exporting `global` in `browser-entry.js` - remove too-short timeout for "throw" unit tests (because SauceLabs) - revert modification to `isatty()` function of `lib/browser/tty.js` - switch reporter to `karma-spec-reporter` - use custom `karma-no-mocha` package - fixtures in `test/browser-fixtures/` - use single `karma.conf.js`
- Loading branch information
1 parent
b76989c
commit c04c1d7
Showing
31 changed files
with
5,143 additions
and
4,617 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
'use strict'; | ||
|
||
module.exports = function(config) { | ||
var cfg = { | ||
frameworks: [ | ||
'browserify', | ||
'expect', | ||
'mocha' | ||
], | ||
files: [ | ||
'test/browser-fixtures/bdd.js', | ||
'test/acceptance/*.js' | ||
], | ||
exclude: [ | ||
'test/acceptance/http.js', | ||
'test/acceptance/fs.js', | ||
'test/acceptance/lookup-files.js', | ||
'test/acceptance/require/**/*.js', | ||
'test/acceptance/misc/**/*.js' | ||
], | ||
preprocessors: { | ||
'test/**/*.js': ['browserify'] | ||
}, | ||
browserify: { | ||
debug: true, | ||
configure: function configure(b) { | ||
b.ignore('glob') | ||
.ignore('jade') | ||
.ignore('supports-color') | ||
.exclude('./lib-cov/mocha'); | ||
} | ||
}, | ||
reporters: ['spec'], | ||
colors: true, | ||
browsers: ['PhantomJS'], | ||
logLevel: config.LOG_INFO, | ||
singleRun: true | ||
}; | ||
|
||
// see https://github.com/saucelabs/karma-sauce-example | ||
// TO RUN LOCALLY: | ||
// Execute `CI=1 make test-browser`, once you've set the SAUCE_USERNAME and | ||
// SAUCE_ACCESS_KEY env vars. | ||
if (process.env.CI) { | ||
if (!(process.env.SAUCE_USERNAME || process.env.SAUCE_ACCESS_KEY)) { | ||
throw new Error('Must set SAUCE_USERNAME and SAUCE_ACCESS_KEY ' | ||
+ 'environment variables!'); | ||
} | ||
cfg.reporters.push('saucelabs'); | ||
cfg.browsers.push('ie8'); | ||
cfg.customLaunchers = { | ||
ie8: { | ||
base: 'SauceLabs', | ||
browserName: 'internet explorer', | ||
platform: 'Windows XP', | ||
version: '8.0' | ||
} | ||
}; | ||
|
||
cfg.sauceLabs = { | ||
public: 'public' | ||
}; | ||
|
||
if (process.env.TRAVIS) { | ||
// correlate build/tunnel with Travis | ||
cfg.sauceLabs.build = 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER | ||
+ ' (' + process.env.TRAVIS_BUILD_ID + ')'; | ||
cfg.sauceLabs.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER; | ||
cfg.sauceLabs.startConnect = false; | ||
} else { | ||
// otherwise just make something up | ||
cfg.sauceLabs.build = require('os').hostname() + ' (' + Date.now() + ')'; | ||
} | ||
|
||
// for slow browser booting, ostensibly | ||
cfg.captureTimeout = 120000; | ||
} | ||
|
||
// the MOCHA_UI env var will determine if we're running interface-specific | ||
// tets. since you can only load one at a time, each must be run separately. | ||
// each has its own set of acceptance tests and a fixture. | ||
// the "bdd" fixture is used by default. | ||
var ui = process.env.MOCHA_UI; | ||
if (ui) { | ||
if (cfg.sauceLabs) { | ||
cfg.sauceLabs.testName = 'Interface "' + ui + '" integration tests'; | ||
} | ||
cfg.files = [ | ||
'test/browser-fixtures/' + ui + '.js', | ||
'test/acceptance/interfaces/' + ui + '.js' | ||
]; | ||
} else if (cfg.sauceLabs) { | ||
cfg.sauceLabs.testName = 'Unit Tests'; | ||
} | ||
|
||
config.set(cfg); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.