electron/spec/api-crash-reporter-spec.coffee

61 lines
2 KiB
CoffeeScript
Raw Normal View History

assert = require 'assert'
path = require 'path'
http = require 'http'
url = require 'url'
remote = require 'remote'
multiparty = require 'multiparty'
2013-11-14 16:10:43 +00:00
2015-05-29 23:34:56 +00:00
crashReporter = remote.require 'crash-reporter'
BrowserWindow = remote.require 'browser-window'
2013-11-14 16:10:43 +00:00
describe 'crash-reporter module', ->
fixtures = path.resolve __dirname, 'fixtures'
w = null
beforeEach -> w = new BrowserWindow(show: false)
afterEach -> w.destroy()
# It is not working for mas build.
return if process.mas
# The crash-reporter test is not reliable on CI machine.
isCI = remote.process.argv[2] == '--ci'
return if isCI
2013-11-14 16:10:43 +00:00
it 'should send minidump when renderer crashes', (done) ->
2015-09-15 05:18:01 +00:00
@timeout 120000
called = false
2013-11-14 16:10:43 +00:00
server = http.createServer (req, res) ->
2015-09-15 05:18:01 +00:00
server.close()
form = new multiparty.Form()
form.parse req, (error, fields, files) ->
# This callback can be called for twice sometimes.
return if called
called = true
2015-04-14 07:59:45 +00:00
assert.equal fields['prod'], 'Electron'
assert.equal fields['ver'], process.versions['electron']
assert.equal fields['process_type'], 'renderer'
assert.equal fields['platform'], process.platform
assert.equal fields['extra1'], 'extra1'
assert.equal fields['extra2'], 'extra2'
assert.equal fields['_productName'], 'Zombies'
assert.equal fields['_companyName'], 'Umbrella Corporation'
assert.equal fields['_version'], require('remote').require('app').getVersion()
2014-11-11 08:38:16 +00:00
res.end('abc-123-def')
done()
2015-06-05 11:48:58 +00:00
# Server port is generated randomly for the first run, it will be reused
# when page is refreshed.
port = remote.process.port
server.listen port, '127.0.0.1', ->
2014-05-05 21:06:47 +00:00
{port} = server.address()
2015-06-05 11:48:58 +00:00
remote.process.port = port
url = url.format
protocol: 'file'
pathname: path.join fixtures, 'api', 'crash.html'
search: "?port=#{port}"
2015-11-06 13:00:38 +00:00
if process.platform is 'darwin'
crashReporter.start {'submitUrl': 'http://127.0.0.1:' + port}
w.loadUrl url