karma.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { createRequire } from 'module'
  2. import karma from 'karma'
  3. const require = createRequire(import.meta.url)
  4. export default function(filePaths, isDev, cliArgs) {
  5. const filePathsWithSrcMaps = filePaths
  6. .filter((filePath) => (
  7. // TODO: must proper built dist files (HACK)
  8. filePath.match(/[\\/]dist[\\/]/)
  9. ))
  10. const files = [
  11. require.resolve('jquery'),
  12. require.resolve('jasmine-jquery'),
  13. require.resolve('jquery-simulate'),
  14. require.resolve('components-jqueryui'),
  15. ...filePaths,
  16. ...filePathsWithSrcMaps
  17. .map((path) => ({
  18. pattern: path.replace(/\.js$/, '.js.map'),
  19. included: false,
  20. })),
  21. ]
  22. const preprocessors = filePathsWithSrcMaps.reduce((props, distFile) => (
  23. Object.assign(props, { [distFile]: ['sourcemap'] })
  24. ), {})
  25. return {
  26. singleRun: !isDev,
  27. autoWatch: isDev,
  28. browsers: !isDev ? ['ChromeHeadless_custom'] : [],
  29. client: { cliArgs }, // access via `window.__karma__.config.cliArgs`
  30. files,
  31. preprocessors,
  32. plugins: [
  33. require('karma-chrome-launcher'),
  34. require('karma-jasmine'),
  35. require('karma-sourcemap-loader'),
  36. require('karma-verbose-reporter'),
  37. ],
  38. // frameworks to use
  39. frameworks: ['jasmine'],
  40. // test results reporter to use
  41. // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage', 'verbose'
  42. reporters: ['dots'],
  43. // web server port
  44. port: 9876,
  45. // enable / disable colors in the output (reporters and logs)
  46. colors: true,
  47. // level of logging
  48. // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
  49. logLevel: karma.constants.LOG_INFO,
  50. // If browser does not capture in given timeout [ms], kill it
  51. captureTimeout: 60000,
  52. customLaunchers: {
  53. ChromeHeadless_custom: {
  54. base: 'ChromeHeadless',
  55. flags: [
  56. '--no-sandbox', // needed for TravisCI: https://docs.travis-ci.com/user/chrome#Sandboxing
  57. '--window-size=1280,1696', // some tests only work with larger window (w?, h?)
  58. ],
  59. },
  60. },
  61. }
  62. }