Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import Bugsnag from '@bugsnag/react-native'
import * as React from 'react'
import { Text, View } from 'react-native'
import Scenario from './Scenario'

export class ReactNativeErrorBoundaryScenario extends Scenario {
view () {
const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)

return (
<ErrorBoundary FallbackComponent={ErrorView}>
<MainView />
</ErrorBoundary>
)
}

run () {
// Error is thrown during render
}
}

function ErrorView () {
return (
<View>
<Text>There was an error</Text>
</View>
)
}

function MainView () {
return (
<View>
<Text>Hello world {text()}</Text>
</View>
)
}

const text = function () {
throw new Error('borked')
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ export { NativeFeatureFlagsScenario } from './NativeFeatureFlagsScenario'
export { ReactNavigationBreadcrumbsEnabledScenario } from './ReactNavigationBreadcrumbsEnabledScenario'
export { ReactNavigationBreadcrumbsDisabledScenario } from './ReactNavigationBreadcrumbsDisabledScenario'

// react-native-error-boundary.feature
export { ReactNativeErrorBoundaryScenario } from './ReactNativeErrorBoundaryScenario'

// react-native-navigation.feature
export { ReactNativeNavigationBreadcrumbsEnabledScenario } from './ReactNativeNavigationBreadcrumbsEnabledScenario'
export { ReactNativeNavigationBreadcrumbsDisabledScenario } from './ReactNativeNavigationBreadcrumbsDisabledScenario'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@react_error_boundary
Feature: React Error Boundary support

Scenario: basic error boundary usage
When I run "ReactNativeErrorBoundaryScenario"
Then I wait to receive an error
And the exception "errorClass" equals "Error"
And the exception "message" equals "borked"
And the event "metaData.react.componentStack" is not null