Skip to content

Commit

Permalink
test(react-native): add rendering metrics e2e test
Browse files Browse the repository at this point in the history
  • Loading branch information
yousif-bugsnag committed Jan 2, 2025
1 parent 97aeffe commit 4c52934
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import React, { useEffect } from 'react'
import { SafeAreaView, View, Text, StyleSheet, FlatList } from 'react-native'
import { NativeScenarioLauncher } from '../lib/native'
import BugsnagPerformance from '@bugsnag/react-native-performance'

export const doNotStartBugsnagPerformance = true

const listData = Array.from({ length: 10000 }, (_, index) => { return { name: `Item ${index + 1}` } })

export const initialise = async (config) => {
const nativeConfig = {
apiKey: config.apiKey,
endpoint: config.endpoint
}

await NativeScenarioLauncher.startNativePerformance(nativeConfig)

BugsnagPerformance.attach({ maximumBatchSize: 1, autoInstrumentAppStarts: false, autoInstrumentNetworkRequests: false })
}

export const App = () => {
let nativeSpan = BugsnagPerformance.startSpan('RenderingMetricsScenario', { isFirstClass: true })

const renderItem = (item, index) => {
return (
<View>
<Text>{item.name}</Text>
</View>
)
}

useEffect(() => {
nativeSpan.end()
}, [])

return (
<SafeAreaView style={styles.container}>
<View style={styles.scenario}>
<Text>Rendering Metrics Scenario</Text>
<FlatList data={listData} renderItem={({ item, index }) => renderItem(item, index)} />
</View>
</SafeAreaView>
)
}

const styles = StyleSheet.create({
container: {
flex: 1
},
scenario: {
flex: 1
}
})
15 changes: 15 additions & 0 deletions test/react-native/features/rendering-metrics.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@native_integration
Feature: Rendering Metrics

Scenario: Rendering metrics are reported
When I run 'RenderingMetricsScenario'
And I wait to receive a sampling request
And I wait to receive 1 traces

# Native trace
Then the trace payload field "resourceSpans.0.resource" string attribute "service.name" equals "com.bugsnag.fixtures.reactnative.performance"
And the trace payload field "resourceSpans.0.resource" string attribute "telemetry.sdk.name" equals the platform-dependent string:
| ios | bugsnag.performance.cocoa |
| android | bugsnag.performance.android |

And a span name equals "RenderingMetricsScenario"

0 comments on commit 4c52934

Please sign in to comment.