Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
sudo: false

language: node_js
node_js:
- "4"
sudo: false
- stable

cache:
directories:
- node_modules

before_script:
- wget http://www.browserstack.com/browserstack-local/BrowserStackLocal-linux-x64.zip
- unzip BrowserStackLocal-linux-x64.zip
- "./BrowserStackLocal $BROWSER_STACK_ACCESS_KEY localhost,8001,0 > /dev/null &"
- sleep 10

after_success:
- cat ./coverage/lcov.info | ./node_modules/codecov.io/bin/codecov.io.js
- cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js

branches:
except:
- latest
- "/^v\\d/"
only:
- master
151 changes: 151 additions & 0 deletions karma.conf.babel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
import path from 'path'
import webpack from 'webpack'

// Browsers to run on BrowserStack
const CUSTOM_LAUNCHERS = {
BS_Chrome: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'chrome',
browser_version: '39.0'
},
BS_Firefox: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'firefox',
browser_version: '32.0'
},
BS_Safari: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Yosemite',
browser: 'safari',
browser_version: '8.0'
},
BS_MobileSafari: {
base: 'BrowserStack',
os: 'ios',
os_version: '7.0',
browser: 'iphone',
real_mobile: false
},
// BS_InternetExplorer9: {
// base: 'BrowserStack',
// os: 'Windows',
// os_version: '7',
// browser: 'ie',
// browser_version: '9.0'
// },
BS_InternetExplorer10: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8',
browser: 'ie',
browser_version: '10.0'
},
BS_InternetExplorer11: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'ie',
browser_version: '11.0'
}
}

function setBrowserStack(config, project) {
const { env } = process

if (env.USE_CLOUD) {
config.set({
customLaunchers: CUSTOM_LAUNCHERS,
browsers: Object.keys(CUSTOM_LAUNCHERS),
reporters: [ 'dots', 'coverage' ],
browserDisconnectTimeout: 10000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 30000,
captureTimeout: 120000,
browserStack: {
username: env.BROWSER_STACK_USERNAME,
accessKey: env.BROWSER_STACK_ACCESS_KEY,
pollingTimeout: 10000,
startTunnel: true
}
})

if (env.TRAVIS) {
Object.assign(config.browserStack, {
startTunnel: false,
project,
build: `TRAVIS #${env.TRAVIS_BUILD_NUMBER} (${env.TRAVIS_BUILD_ID})`,
name: env.TRAVIS_JOB_NUMBER
})
}
}
}

export default config => {
const { env } = process

const isCi = env.CONTINUOUS_INTEGRATION === 'true'
const runCoverage = env.COVERAGE === 'true' || isCi

const coverageLoaders = []
const coverageReporters = []

if (runCoverage) {
coverageLoaders.push({
test: /\.js$/,
include: path.resolve('modules/'),
exclude: /__tests__/,
loader: 'isparta'
})

coverageReporters.push('coverage')
}

config.set({
frameworks: [ 'mocha' ],

files: [ 'tests.webpack.js' ],

preprocessors: {
'tests.webpack.js': [ 'webpack', 'sourcemap' ]
},

webpack: {
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
...coverageLoaders
]
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('test')
})
],
devtool: 'inline-source-map'
},

webpackMiddleware: {
noInfo: true
},

reporters: [ 'mocha', ...coverageReporters ],

coverageReporter: {
reporters: [
{ type: 'html', subdir: 'html' },
{ type: 'lcovonly', subdir: '.' }
]
},

browsers: [ 'Chrome' ],

singleRun: isCi
})

setBrowserStack(config, 'react-router')
}
133 changes: 2 additions & 131 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -1,131 +1,2 @@
var webpack = require('webpack')
var path = require('path')

module.exports = function (config) {
// Browsers to run on BrowserStack
var customLaunchers = {
BS_Chrome: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'chrome',
browser_version: '39.0'
},
BS_Firefox: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'firefox',
browser_version: '32.0'
},
BS_Safari: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Yosemite',
browser: 'safari',
browser_version: '8.0'
},
BS_MobileSafari: {
base: 'BrowserStack',
os: 'ios',
os_version: '7.0',
browser: 'iphone',
real_mobile: false
},
// BS_InternetExplorer9: {
// base: 'BrowserStack',
// os: 'Windows',
// os_version: '7',
// browser: 'ie',
// browser_version: '9.0'
// },
BS_InternetExplorer10: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8',
browser: 'ie',
browser_version: '10.0'
},
BS_InternetExplorer11: {
base: 'BrowserStack',
os: 'Windows',
os_version: '8.1',
browser: 'ie',
browser_version: '11.0'
}
}

config.set({
customLaunchers: customLaunchers,

browsers: [ 'Chrome' ],
frameworks: [ 'mocha' ],
reporters: [ 'mocha', 'coverage' ],

files: [
'tests.webpack.js'
],

preprocessors: {
'tests.webpack.js': [ 'webpack', 'sourcemap' ]
},

webpack: {
devtool: 'inline-source-map',
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
{ test: /\.js$/, exclude: /__tests__/, include: path.resolve('modules/'), loader: 'isparta' }
]
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('test')
})
]
},

webpackServer: {
noInfo: true
},

coverageReporter: {
reporters: [
{ type: 'html', subdir: 'html' },
{ type: 'lcovonly', subdir: '.' }
]
}
})

if (process.env.USE_CLOUD) {
config.browsers = Object.keys(customLaunchers)
config.reporters = [ 'dots', 'coverage' ]
config.browserDisconnectTimeout = 10000
config.browserDisconnectTolerance = 3
config.browserNoActivityTimeout = 30000
config.captureTimeout = 120000

if (process.env.TRAVIS) {
var buildLabel = 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER + ' (' + process.env.TRAVIS_BUILD_ID + ')'

config.browserStack = {
username: process.env.BROWSER_STACK_USERNAME,
accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
pollingTimeout: 10000,
startTunnel: false,
project: 'react-router',
build: buildLabel,
name: process.env.TRAVIS_JOB_NUMBER
}

config.singleRun = true
} else {
config.browserStack = {
username: process.env.BROWSER_STACK_USERNAME,
accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
pollingTimeout: 10000,
startTunnel: true
}
}
}
}
require('babel-core/register')
module.exports = require('./karma.conf.babel.js')
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"build": "babel ./modules -d lib --ignore '__tests__'",
"build-umd": "NODE_ENV=production webpack modules/index.js umd/ReactRouter.js",
"build-min": "NODE_ENV=production webpack -p modules/index.js umd/ReactRouter.min.js",
"lint": "eslint modules examples",
"lint": "eslint modules examples *.js",
"start": "node examples/server.js",
"test": "npm run lint && karma start",
"postinstall": "node ./npm-scripts/postinstall.js"
Expand Down Expand Up @@ -60,7 +60,6 @@
"karma-browserstack-launcher": "^0.1.4",
"karma-chrome-launcher": "^0.2.0",
"karma-coverage": "^0.5.3",
"karma-firefox-launcher": "^0.1.6",
"karma-mocha": "^0.2.0",
"karma-mocha-reporter": "^1.1.1",
"karma-sourcemap-loader": "^0.3.5",
Expand Down
4 changes: 2 additions & 2 deletions tests.webpack.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
var context = require.context('./modules', true, /-test\.js$/);
context.keys().forEach(context);
const context = require.context('./modules', true, /-test\.js$/)
context.keys().forEach(context)
4 changes: 2 additions & 2 deletions webpack.config.js → webpack.config.babel.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var webpack = require('webpack')
import webpack from 'webpack'

module.exports = {
export default {

output: {
library: 'ReactRouter',
Expand Down