You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.5 KiB

  1. var istanbul = require('browserify-istanbul');
  2. var isparta = require('isparta');
  3. module.exports = function(config) {
  4. // build out a name for browserstack
  5. // {TRAVIS_BUILD_NUMBER} [{TRAVIS_PULL_REQUEST} {PR_BRANCH}] {TRAVIS_BRANCH}
  6. var browserstackName = process.env.TRAVIS_BUILD_NUMBER;
  7. if (process.env.TRAVIS_PULL_REQUEST !== 'false') {
  8. browserstackName += ' ' + process.env.TRAVIS_PULL_REQUEST + ' ' + process.env.TRAVIS_PULL_REQUEST_BRANCH;
  9. }
  10. browserstackName += ' ' + process.env.TRAVIS_BRANCH;
  11. config.set({
  12. basePath: '..',
  13. frameworks: ['qunit', 'browserify', 'detectBrowsers'],
  14. files: [
  15. 'node_modules/sinon/pkg/sinon.js',
  16. 'node_modules/sinon/pkg/sinon-ie.js',
  17. 'node_modules/video.js/dist/video.js',
  18. 'node_modules/video.js/dist/video-js.css',
  19. 'dist-test/browserify-test.js',
  20. 'dist-test/webpack-test.js',
  21. 'test/**/*.test.js'
  22. ],
  23. browserConsoleLogOptions: {
  24. level: 'error',
  25. terminal: false
  26. },
  27. browserStack: {
  28. project: 'videojs-http-streaming',
  29. name: browserstackName,
  30. build: browserstackName,
  31. pollingTimeout: 30000,
  32. captureTimeout: 600,
  33. timeout: 600
  34. },
  35. coverageReporter: {
  36. reporters: [{
  37. type: 'text-summary'
  38. }]
  39. },
  40. customLaunchers: {
  41. ChromeHeadlessWithFlags: {
  42. base: 'ChromeHeadless',
  43. flags: [
  44. '--mute-audio',
  45. '--no-sandbox',
  46. '--no-user-gesture-required'
  47. ]
  48. },
  49. ChromeBrowserStack: {
  50. base: 'BrowserStack',
  51. flags: [
  52. '--mute-audio',
  53. '--no-sandbox',
  54. '--no-user-gesture-required'
  55. ],
  56. browser: 'chrome',
  57. os: 'Windows',
  58. os_version: '10'
  59. },
  60. FirefoxBrowserStack: {
  61. base: 'BrowserStack',
  62. browser: 'firefox',
  63. os: 'Windows',
  64. os_version: '10'
  65. },
  66. EdgeBrowserStack: {
  67. base: 'BrowserStack',
  68. browser: 'edge',
  69. os: 'Windows',
  70. os_version: '10'
  71. },
  72. IE11BrowserStack: {
  73. base: 'BrowserStack',
  74. browser: 'ie',
  75. browser_version: '11',
  76. os: 'Windows',
  77. os_version: '10'
  78. }
  79. },
  80. detectBrowsers: {
  81. usePhantomJS: false,
  82. // detect what browsers are installed on the system and
  83. // use headless mode and flags to allow for playback
  84. postDetection: function(browsers) {
  85. if (process.env.BROWSER_STACK_ACCESS_KEY) {
  86. return [ 'ChromeBrowserStack', 'FirefoxBrowserStack' ];
  87. }
  88. var newBrowsers = [];
  89. if (browsers.indexOf('Chrome') !== -1) {
  90. newBrowsers.push('ChromeHeadlessWithFlags');
  91. }
  92. if (browsers.indexOf('Firefox') !== -1) {
  93. newBrowsers.push('FirefoxHeadless');
  94. }
  95. return newBrowsers;
  96. }
  97. },
  98. preprocessors: {
  99. 'src/**/*.js': ['browserify', 'coverage'],
  100. 'test/**/*.test.js': ['browserify']
  101. },
  102. browserify: {
  103. debug: true,
  104. transform: [
  105. 'babelify',
  106. ['browserify-shim', { global: true }],
  107. istanbul({
  108. instrumenter: isparta,
  109. ignore: ['**/node_modules/**', '**/test/**']
  110. })
  111. ],
  112. noParse: [
  113. 'test/data/**',
  114. ]
  115. },
  116. reporters: ['dots', 'coverage'],
  117. port: 9876,
  118. colors: true,
  119. autoWatch: false,
  120. singleRun: true,
  121. concurrency: 1,
  122. captureTimeout: 300000,
  123. browserNoActivityTimeout: 300000,
  124. browserDisconnectTimeout: 300000,
  125. browserDisconnectTolerance: 3
  126. });
  127. };