var chalk = require('chalk')

// http://stackoverflow.com/questions/7157999/output-jasmine-test-results-to-the-console
// https://github.com/pivotal/jasmine/blob/master/src/console/ConsoleReporter.js

module.exports = function BrowserLogs(options) {
  options = options || {}

  if (typeof options.expectNoLogs === 'undefined') {
    options.expectNoLogs = false
  }
  if (typeof options.outputLogs === 'undefined') {
    options.outputLogs = true
  }

  browser.getCapabilities().then(function (cap) {
    var browserName = ' ' + cap.caps_.browserName + ' log '
    var browserStyled = chalk.bgBlue.white.bold(browserName) + ' '

    browser.manage().logs().get('browser').then(function (browserLogs) {
      if (options.expectNoLogs) {
        expect(browserLogs.length).toEqual(0)
      }

      if (options.outputLogs && browserLogs.length) {
        browserLogs.forEach(function (log) {
          if (log.level.value > 900) {
            console.error(browserStyled + chalk.white.bold(log.message))
          } else {
            console.log(browserStyled + chalk.white.bold(log.message))
          }
        })
      }
    })
  })
}
