Skip to content

Commit

Permalink
Merge pull request #88 from bugsnag/enable-client-state-persistence-p…
Browse files Browse the repository at this point in the history
…lugin-in-tests

Enable client state persistence plugin in tests
  • Loading branch information
imjoehaines authored Apr 22, 2021
2 parents 2bace5b + f907e10 commit bf3390e
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 55 deletions.
Original file line number Diff line number Diff line change
@@ -1,45 +1,48 @@
module.exports = (NativeClient) => ({
load: (client) => {
client.addOnBreadcrumb(breadcrumb => {
try {
NativeClient.leaveBreadcrumb(breadcrumb)
} catch (e) {
client._logger.error(e)
}
}, true)
module.exports = {
NativeClient: require('bindings')('bugsnag_plugin_electron_client_state_persistence_bindings'),
plugin: (NativeClient) => ({
load: (client) => {
client.addOnBreadcrumb(breadcrumb => {
try {
NativeClient.leaveBreadcrumb(breadcrumb)
} catch (e) {
client._logger.error(e)
}
}, true)

const clientStateManager = client.getPlugin('clientStateManager')
const clientStateManager = client.getPlugin('clientStateManager')

clientStateManager.emitter.on('UserUpdate', user => {
try {
NativeClient.updateUser(user.id, user.email, user.name)
} catch (e) {
client._logger.error(e)
}
})
clientStateManager.emitter.on('UserUpdate', user => {
try {
NativeClient.updateUser(user.id, user.email, user.name)
} catch (e) {
client._logger.error(e)
}
})

clientStateManager.emitter.on('ContextUpdate', context => {
try {
NativeClient.updateContext(context)
} catch (e) {
client._logger.error(e)
}
})
clientStateManager.emitter.on('ContextUpdate', context => {
try {
NativeClient.updateContext(context)
} catch (e) {
client._logger.error(e)
}
})

clientStateManager.emitter.on('MetadataUpdate', ({ section, values }) => {
try {
NativeClient.updateMetadata(section, values)
} catch (e) {
client._logger.error(e)
}
})
clientStateManager.emitter.on('MetadataUpdate', ({ section, values }) => {
try {
NativeClient.updateMetadata(section, values)
} catch (e) {
client._logger.error(e)
}
})

clientStateManager.emitter.on('MetadataReplace', (metadata) => {
try {
NativeClient.updateMetadata(metadata)
} catch (e) {
client._logger.error(e)
}
})
}
})
clientStateManager.emitter.on('MetadataReplace', (metadata) => {
try {
NativeClient.updateMetadata(metadata)
} catch (e) {
client._logger.error(e)
}
})
}
})
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Client from '@bugsnag/core/client'
import plugin from '../'
import { plugin } from '../'
import { Breadcrumb, Logger } from '@bugsnag/core'
import stateManager from '@bugsnag/plugin-electron-client-state-manager'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import * as bindings from 'bindings'
import { NativeClient } from '..'

describe('handling poor inputs', () => {
const NativeClient = bindings.default('bugsnag_plugin_electron_client_state_persistence_bindings')

beforeAll(() => NativeClient.install('/tmp/file.json', 10))

afterAll(() => NativeClient.uninstall())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { promises } from 'fs'
import { join } from 'path'
import * as bindings from 'bindings'
import { NativeClient } from '..'

const { mkdtemp, readFile, rmdir } = promises

describe('persisting changes to disk', () => {
const NativeClient = bindings.default('bugsnag_plugin_electron_client_state_persistence_bindings')

let tempdir: string = ''
let filepath: string = ''

Expand Down
8 changes: 7 additions & 1 deletion test/features/support/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ class TestApp {
// installed, doubling the install time
await this._exec(npmRunner, [...installArgs, `electron@${electronVersion}`])
await this._exec(npmRunner, [...installArgs], {}, 500)
await this._exec(npmRunner, [...installArgs, '--registry', 'http://0.0.0.0:5539', `@bugsnag/electron@${bugsnagVersion}`])
await this._exec(npmRunner, [
...installArgs,
'--registry',
'http://0.0.0.0:5539',
`@bugsnag/electron@${bugsnagVersion}`,
`@bugsnag/plugin-electron-client-state-persistence@${bugsnagVersion}`
])
}

buildPath () {
Expand Down
20 changes: 13 additions & 7 deletions test/fixtures/app/main.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
const { join } = require('path')
const Bugsnag = require('@bugsnag/electron')
const { plugin: PluginClientStatePersistence, NativeClient } = require('@bugsnag/plugin-electron-client-state-persistence')
const configFile = process.env.BUGSNAG_CONFIG || 'default'
// eslint-disable-next-line no-undef
const bugsnagConfig = __non_webpack_require__(`./${configFile}`)
const preloadFile = process.env.BUGSNAG_PRELOAD || 'default.js'

Bugsnag.start({
// Base test server / automation config
// eslint-disable-next-line no-undef
...baseBugsnagConfig,
// Bugsnag config loaded from ./configs/<selection>
...bugsnagConfig()
})
// eslint-disable-next-line no-undef
const config = { ...baseBugsnagConfig, ...bugsnagConfig() }

// enable the client state persistence plugin to ensure it doesn't crash
config.plugins = (config.plugins || []).concat(PluginClientStatePersistence(NativeClient))

Bugsnag.start(config)

const { app, BrowserWindow, ipcMain } = require('electron')

NativeClient.install(
join(app.getPath('userCache'), 'bugsnag', Bugsnag._client._config.apiKey, 'native'),
Bugsnag._client._config.maxBreadcrumbs
)

function createWindow () {
const win = new BrowserWindow({
width: 800,
Expand Down

0 comments on commit bf3390e

Please sign in to comment.