karma.conf.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*eslint-env node*/
  2. /*eslint no-var:0*/
  3. // Karma configuration
  4. // Generated on Sat Jul 26 2014 13:49:45 GMT+0200 (CEST)
  5. var path = require('path');
  6. var webpack = require('webpack');
  7. var appPrefix = path.join(__dirname, '../src/sentry/static/sentry/app');
  8. module.exports = function(config) {
  9. config.set({
  10. // base path that will be used to resolve all patterns (eg. files, exclude)
  11. basePath: '../',
  12. // frameworks to use
  13. // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
  14. frameworks: ['mocha', 'chai', 'sinon'],
  15. // list of files / patterns to load in the browser
  16. files: [
  17. 'node_modules/babel-core/browser-polyfill.min.js',
  18. 'tests/tests.webpack.js'
  19. ],
  20. // [1]
  21. // Note there's a bunch of configurations in here that in order to work
  22. // around a airbnb/enzyme + webpack + sinon build bug:
  23. // https://github.com/airbnb/enzyme/issues/47#issuecomment-162529926
  24. webpack: {
  25. cache: true,
  26. resolve: {
  27. alias: {
  28. 'app': appPrefix,
  29. sinon: 'sinon/pkg/sinon', // see [1] above
  30. 'sentry-locale': path.join(__dirname, '..', 'src', 'sentry', 'locale')
  31. },
  32. modulesDirectories: ['node_modules'],
  33. extensions: ['', '.jsx', '.js', '.json']
  34. },
  35. module: {
  36. noParse: [
  37. /node_modules\/sinon\//, // see [1] above
  38. ],
  39. loaders: [
  40. {
  41. exclude: /(vendor|node_modules)/,
  42. test: /\.jsx?$/,
  43. loader: 'babel-loader'
  44. },
  45. {
  46. test: /\.po$/,
  47. loader: 'po-catalog-loader',
  48. query: {
  49. referenceExtensions: ['.js', '.jsx']
  50. }
  51. },
  52. {
  53. test: /\.json$/,
  54. loader: 'json-loader'
  55. }
  56. ]
  57. },
  58. devtool: 'inline-source-map',
  59. plugins: [
  60. new webpack.ProvidePlugin({
  61. $: 'jquery',
  62. jQuery: 'jquery',
  63. 'window.jQuery': 'jquery',
  64. 'root.jQuery': 'jquery'
  65. }),
  66. new webpack.IgnorePlugin(/react\/lib\/ReactContext/)
  67. ],
  68. externals: { // see [1] above
  69. 'jsdom': 'window', // can't simulate jsdom in browser
  70. 'cheerio': 'window',
  71. 'react/lib/ExecutionEnvironment': true
  72. }
  73. },
  74. webpackMiddleware: {
  75. noInfo: true
  76. },
  77. plugins: [
  78. 'karma-chai',
  79. 'karma-mocha',
  80. 'karma-phantomjs-launcher',
  81. 'karma-sinon',
  82. 'karma-sourcemap-loader',
  83. 'karma-webpack'
  84. ],
  85. // preprocess matching files before serving them to the browser
  86. // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
  87. preprocessors: {
  88. 'tests/tests.webpack.js': ['webpack', 'sourcemap']
  89. },
  90. // test results reporter to use
  91. // possible values: 'dots', 'progress'
  92. // available reporters: https://npmjs.org/browse/keyword/karma-reporter
  93. reporters: ['dots'],
  94. // web server port
  95. port: 9876,
  96. // enable / disable colors in the output (reporters and logs)
  97. colors: true,
  98. // level of logging
  99. // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
  100. logLevel: config.LOG_INFO,
  101. // enable / disable watching file and executing tests whenever any file changes
  102. autoWatch: true,
  103. // start these browsers
  104. // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
  105. // browsers: ['PhantomJS'],
  106. browsers: ['PhantomJS'],
  107. // Continuous Integration mode
  108. // if true, Karma captures browsers, runs the tests and exits
  109. singleRun: false
  110. });
  111. };