From f729b18958202f31a5d539e2ce1c731fa9e1d597 Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Wed, 1 Apr 2026 19:36:28 +0530 Subject: [PATCH 1/7] reinstate test cases for android --- .buildkite/basic/react-native-android-full-pipeline.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.buildkite/basic/react-native-android-full-pipeline.yml b/.buildkite/basic/react-native-android-full-pipeline.yml index 465391d534..6a16c97621 100644 --- a/.buildkite/basic/react-native-android-full-pipeline.yml +++ b/.buildkite/basic/react-native-android-full-pipeline.yml @@ -90,7 +90,7 @@ steps: reactnavigation: "false" - label: ':android: Build react-native-navigation {{matrix}} test fixture APK (Old Arch)' - skip: true # Skipped pending PLAT-15027 + # skip: true # Skipped pending PLAT-15027 key: "build-react-native-navigation-android-fixture-old-arch" timeout_in_minutes: 30 agents: @@ -115,7 +115,7 @@ steps: limit: 1 - label: ':android: Build react-native-navigation {{matrix}} test fixture APK (New Arch)' - skip: true # Skipped pending PLAT-15027 + #skip: true # Skipped pending PLAT-15027 key: "build-react-native-navigation-android-fixture-new-arch" timeout_in_minutes: 30 agents: @@ -245,7 +245,7 @@ steps: reactnavigation: "false" - label: ":bitbar: :android: react-native-navigation {{matrix}} Android 12 (Old Arch) end-to-end tests" - skip: true # Skipped pending PLAT-15027 + #skip: true # Skipped pending PLAT-15027 depends_on: "build-react-native-navigation-android-fixture-old-arch" timeout_in_minutes: 10 plugins: @@ -287,7 +287,7 @@ steps: - "0.72" - label: ":bitbar: :android: react-native-navigation {{matrix}} Android 12 (New Arch) end-to-end tests" - skip: true # Skipped pending PLAT-15027 + # skip: true # Skipped pending PLAT-15027 depends_on: "build-react-native-navigation-android-fixture-new-arch" timeout_in_minutes: 10 plugins: From bd34601da7e639c535b1655314de7c52f8bb1181 Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Wed, 1 Apr 2026 20:47:46 +0530 Subject: [PATCH 2/7] reinstate test cases for android --- .../fixtures/scenario-launcher/android/build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle index 801debbf0f..f8c822b128 100644 --- a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle +++ b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle @@ -12,7 +12,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22") } } @@ -45,6 +45,10 @@ android { } } } + + kotlinOptions { + jvmTarget = '1.8' + } } dependencies { From 098cbb7fbad818d2f2eb7ab0878ec1f1dc1ed828 Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Thu, 2 Apr 2026 13:11:48 +0530 Subject: [PATCH 3/7] reinstate test cases for android --- .../fixtures/scenario-launcher/android/build.gradle | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle index f8c822b128..0bcf2583bd 100644 --- a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle +++ b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle @@ -36,6 +36,11 @@ android { targetSdkVersion safeExtGet('targetSdkVersion', 28) } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + sourceSets { main { if (isNewArchitectureEnabled()) { @@ -47,7 +52,7 @@ android { } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '11' } } From 2ab6e0f6225677ce69373113b77ed4165ffa38db Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Tue, 7 Apr 2026 18:37:38 +0530 Subject: [PATCH 4/7] Update react-native-navigation version and added test cases --- .../scenario-launcher/android/build.gradle | 25 +- ...eactNativeNavigationPersistenceScenario.js | 70 +++ ...NativeNavigationRapidNavigationScenario.js | 108 ++++ .../react-native-navigation/index.js | 2 + .../features/react-native-navigation.feature | 22 + test/react-native/maze-runner.log | 468 ++++++++++++++++++ 6 files changed, 676 insertions(+), 19 deletions(-) create mode 100644 test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationPersistenceScenario.js create mode 100644 test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationRapidNavigationScenario.js create mode 100644 test/react-native/maze-runner.log diff --git a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle index 0bcf2583bd..591285470e 100644 --- a/test/react-native/features/fixtures/scenario-launcher/android/build.gradle +++ b/test/react-native/features/fixtures/scenario-launcher/android/build.gradle @@ -6,18 +6,12 @@ def safeExtGet(prop, fallback) { rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback } -buildscript { - repositories { - google() - mavenCentral() - } - dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22") - } -} - apply plugin: 'com.android.library' -apply plugin: 'org.jetbrains.kotlin.android' +try { + apply plugin: 'org.jetbrains.kotlin.android' +} catch (e) { + // Kotlin 2.x + AGP 9 may fail here; the root project handles Kotlin config +} if (isNewArchitectureEnabled()) { apply plugin: 'com.facebook.react' } @@ -26,10 +20,7 @@ if (isNewArchitectureEnabled()) { android { buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3') compileSdkVersion safeExtGet('compileSdkVersion', 28) - - if (android.hasProperty('namespace')) { - namespace 'com.reactnative.scenarios' - } + namespace 'com.reactnative.scenarios' defaultConfig { minSdkVersion safeExtGet('minSdkVersion', 16) @@ -50,10 +41,6 @@ android { } } } - - kotlinOptions { - jvmTarget = '11' - } } dependencies { diff --git a/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationPersistenceScenario.js b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationPersistenceScenario.js new file mode 100644 index 0000000000..665ad59730 --- /dev/null +++ b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationPersistenceScenario.js @@ -0,0 +1,70 @@ +import Scenario from '../core/Scenario' +import Bugsnag from '@bugsnag/react-native' +import BugsnagReactNativeNavigation from '@bugsnag/plugin-react-native-navigation' +import React, { useEffect } from 'react' +import { Text, View } from 'react-native' +import { Navigation } from 'react-native-navigation' + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) + +const HomeScreen = (props) => { + useEffect(() => { + (async () => { + await delay(1000) + Bugsnag.notify(new Error('FirstNavigationError')) + await delay(250) + Navigation.push(props.componentId, { + component: { + name: 'Settings' + } + }) + })() + }, []) + + return ( + + Home Screen + + ) +} + +const SettingsScreen = () => { + useEffect(() => { + (async () => { + await delay(1000) + throw new Error('SecondNavigationError') + })() + }, []) + + return ( + + Settings Screen + + ) +} + +export class ReactNativeNavigationPersistenceScenario extends Scenario { + constructor (configuration, jsConfig) { + super() + jsConfig.plugins = [new BugsnagReactNativeNavigation(Navigation)] + } + + run () { + Navigation.registerComponent('Home', () => HomeScreen) + Navigation.registerComponent('Settings', () => SettingsScreen) + + Navigation.setRoot({ + root: { + stack: { + children: [ + { + component: { + name: 'Home' + } + } + ] + } + } + }) + } +} diff --git a/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationRapidNavigationScenario.js b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationRapidNavigationScenario.js new file mode 100644 index 0000000000..d417de0cff --- /dev/null +++ b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/ReactNativeNavigationRapidNavigationScenario.js @@ -0,0 +1,108 @@ +import Scenario from '../core/Scenario' +import Bugsnag from '@bugsnag/react-native' +import BugsnagReactNativeNavigation from '@bugsnag/plugin-react-native-navigation' +import React, { useEffect } from 'react' +import { Text, View } from 'react-native' +import { Navigation } from 'react-native-navigation' + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)) + +const ScreenA = (props) => { + useEffect(() => { + (async () => { + await delay(200) + Navigation.push(props.componentId, { + component: { + name: 'ScreenB' + } + }) + })() + }, []) + + return ( + + Screen A + + ) +} + +const ScreenB = (props) => { + useEffect(() => { + (async () => { + await delay(200) + Navigation.push(props.componentId, { + component: { + name: 'ScreenC' + } + }) + })() + }, []) + + return ( + + Screen B + + ) +} + +const ScreenC = (props) => { + useEffect(() => { + (async () => { + await delay(200) + Navigation.push(props.componentId, { + component: { + name: 'FinalScreen' + } + }) + })() + }, []) + + return ( + + Screen C + + ) +} + +const FinalScreen = () => { + useEffect(() => { + (async () => { + await delay(500) + Bugsnag.notify(new Error('RapidNavigationError')) + })() + }, []) + + return ( + + Final Screen + + ) +} + +export class ReactNativeNavigationRapidNavigationScenario extends Scenario { + constructor (configuration, jsConfig) { + super() + jsConfig.plugins = [new BugsnagReactNativeNavigation(Navigation)] + } + + run () { + Navigation.registerComponent('ScreenA', () => ScreenA) + Navigation.registerComponent('ScreenB', () => ScreenB) + Navigation.registerComponent('ScreenC', () => ScreenC) + Navigation.registerComponent('FinalScreen', () => FinalScreen) + + Navigation.setRoot({ + root: { + stack: { + children: [ + { + component: { + name: 'ScreenA' + } + } + ] + } + } + }) + } +} diff --git a/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/index.js b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/index.js index 81df59406f..1486c19f8c 100644 --- a/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/index.js +++ b/test/react-native/features/fixtures/scenario-launcher/scenarios/react-native-navigation/index.js @@ -1,3 +1,5 @@ // react-native-navigation.feature export { ReactNativeNavigationBreadcrumbsEnabledScenario } from './ReactNativeNavigationBreadcrumbsEnabledScenario' export { ReactNativeNavigationBreadcrumbsDisabledScenario } from './ReactNativeNavigationBreadcrumbsDisabledScenario' +export { ReactNativeNavigationRapidNavigationScenario } from './ReactNativeNavigationRapidNavigationScenario' +export { ReactNativeNavigationPersistenceScenario } from './ReactNativeNavigationPersistenceScenario' diff --git a/test/react-native/features/react-native-navigation.feature b/test/react-native/features/react-native-navigation.feature index de1c3bc994..396c19c82d 100644 --- a/test/react-native/features/react-native-navigation.feature +++ b/test/react-native/features/react-native-navigation.feature @@ -50,3 +50,25 @@ Scenario: Navigating when navigation breadcrumbs are disabled only updates conte And the event "unhandled" is true And the event "context" equals "Details" And the event does not have a "navigation" breadcrumb + +Scenario: Multiple rapid navigation events are tracked correctly + When I run "ReactNativeNavigationRapidNavigationScenario" + And I wait to receive 1 error + Then the exception "message" equals "RapidNavigationError" + And the event "context" equals "FinalScreen" + And the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" + +Scenario: Navigation context persists across error handling + When I run "ReactNativeNavigationPersistenceScenario" + And I relaunch the app after a crash + And I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" + And I wait to receive 2 errors + + # First error should have Home context + Then the exception "message" equals "FirstNavigationError" + And the event "context" equals "Home" + And I discard the oldest error + + # Second error should have updated context + Then the exception "message" equals "SecondNavigationError" + And the event "context" equals "Settings" diff --git a/test/react-native/maze-runner.log b/test/react-native/maze-runner.log new file mode 100644 index 0000000000..cc49842f73 --- /dev/null +++ b/test/react-native/maze-runner.log @@ -0,0 +1,468 @@ +# Logfile created on 2026-04-07 18:25:38 +0530 by logger.rb/v1.7.0 +[18:25:38] INFO: Maze Runner v11.0.0 +[18:25:38] INFO: Reading command line options from features/support/maze.all.cfg +[18:25:39] INFO: Running in appium mode +[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/device_info.json +[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/maze_output.zip +[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/passed +[18:25:39] INFO: UUID for this run: fb4684dd-550f-4292-ae67-5b6df8f31412 +[18:25:39] INFO: WEBrick 1.9.2 +[18:25:39] INFO: ruby 3.4.8 (2025-12-17) [arm64-darwin25] +[18:25:39] DEBUG: #> is mounted on /. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /notify. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /sessions. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /builds. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /uploads. +[18:25:39] DEBUG: Maze::Servlets::TraceServlet is mounted on /traces. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /sourcemap. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /react-native-source-map. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /dart-symbol. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /ndk-symbol. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /proguard. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /dsym. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /breakpad-symbol. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /unity-line-mappings. +[18:25:39] DEBUG: Maze::Servlets::CommandServlet is mounted on /command. +[18:25:39] DEBUG: Maze::Servlets::IdempotentCommandServlet is mounted on /idem-command. +[18:25:39] DEBUG: Maze::Servlets::AllCommandsServlet is mounted on /commands. +[18:25:39] DEBUG: Maze::Servlets::ErrorConfigServlet is mounted on /error-config. +[18:25:39] DEBUG: Maze::Servlets::LogServlet is mounted on /logs. +[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /metrics. +[18:25:39] DEBUG: Maze::Servlets::ReflectiveServlet is mounted on /reflect. +[18:25:39] INFO: WEBrick::HTTPServer#start: pid=33274 port=9339 +[18:25:40] INFO: Uploading app: /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/features/fixtures/generated/react-native-navigation/new-arch/0.72/android/app/build/outputs/apk/release/app-release.apk +[18:25:48] INFO: App uploaded to: bs://83f0e87b129e810c637ad2ff86e9be1c6836d072 +[18:25:48] INFO: You can use this url to avoid uploading the same app more than once. +[18:25:48] INFO: Starting BrowserStack local tunnel +[18:25:48] DEBUG: Executing: /Users/priyanka_potdar/BrowserStackLocal -d start --key hHDo5besaVcNDLyjGzyP --local-identifier fb4684dd-550f-4292-ae67-5b6df8f31412 --force-local --only-automate --force +[18:25:53] DEBUG: {"state":"connected","pid":33305,"message":{"message":"Connected"}} +[18:25:53] DEBUG: Exit status: 0 +[18:25:53] INFO: BrowserStackLocal daemon running under pid 33305 +[18:25:53] INFO: Creating Appium session with http://hub-cloud.browserstack.com/wd/hub... +[18:26:29] INFO: Appium driver started in 36s +[18:26:29] INFO: Created Appium session: d21cdf88d7c3c9e5f206e42533e148981b42151e +[18:26:30] INFO: BrowserStack session(s): https://app-automate.browserstack.com/dashboard/v2/search?query=fb4684dd-550f-4292-ae67-5b6df8f31412&type=builds +[18:26:30] TRACE: Step started: Before hook +[18:26:30] TRACE: Step started: Before hook +[18:26:30] TRACE: Step started: Before hook +[18:26:30] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] TRACE: Step started: Before hook +[18:26:31] DEBUG: Before hook - scenario.status: passed +[18:26:31] DEBUG: Before hook - Maze.driver&.failed?: false +[18:26:31] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} +[18:26:32] TRACE: +[18:26:32] TRACE: +--- Begin Scenario: Navigating screens causes breadcrumbs and context to be updated "# features/react-native-navigation.feature:4" +[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:26:32] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationBreadcrumbsEnabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:27:30] DEBUG: accept: 127.0.0.1:59783 +[18:27:30] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:27:30] TRACE: Step started: I relaunch the app after a crash +[18:27:30] TRACE: Step started: I relaunch the app after a crash +[18:27:30] TRACE: Step started: I relaunch the app after a crash +[18:27:30] TRACE: Step started: I relaunch the app after a crash +[18:27:31] DEBUG: accept: 127.0.0.1:59786 +[18:27:31] DEBUG: Maze::Servlets::Servlet is invoked. +[18:27:31] TRACE: DIGESTS computed: sha1=1f90f2fc600567988dad4cb30df195ad6741805a simple=30735 +[18:27:33] DEBUG: Maze::Servlets::Servlet is invoked. +[18:27:33] TRACE: DIGESTS computed: sha1=d903da432427a9a90c57ff38f4f32be40a567f6b simple=31953 +[18:27:35] DEBUG: Maze::Servlets::Servlet is invoked. +[18:27:35] TRACE: DIGESTS computed: sha1=2a7383df93802daba5bfad03a2f791af1bd18ff5 simple=32315 +[18:27:48] WARN: App state running_in_foreground instead of not_running after 10s +[18:27:48] DEBUG: close: 127.0.0.1:59786 +[18:27:48] DEBUG: close: 127.0.0.1:59783 +[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" +[18:27:49] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationBreadcrumbsEnabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:28:50] DEBUG: accept: 127.0.0.1:59933 +[18:28:50] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:28:50] TRACE: Step started: I wait to receive 3 errors +[18:28:50] TRACE: Step started: I wait to receive 3 errors +[18:28:50] TRACE: Step started: I wait to receive 3 errors +[18:28:50] TRACE: Step started: I wait to receive 3 errors +[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:28:50] TRACE: Step started: the event "context" equals "Home" +[18:28:50] TRACE: Step started: the event "context" equals "Home" +[18:28:50] TRACE: Step started: the event "context" equals "Home" +[18:28:50] TRACE: Step started: the event "context" equals "Home" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: I discard the oldest error +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:28:50] TRACE: Step started: the event "unhandled" is true +[18:28:50] TRACE: Step started: the event "unhandled" is true +[18:28:50] TRACE: Step started: the event "unhandled" is true +[18:28:50] TRACE: Step started: the event "unhandled" is true +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event "context" equals "Details" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] DEBUG: After hook 3 - scenario.status: passed +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] DEBUG: After hook 2 - scenario.status: passed +[18:28:50] DEBUG: After hook 2 - Maze.driver&.failed?: false +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] TRACE: Step started: After hook +[18:28:50] DEBUG: After hook 1 - scenario.status: passed +[18:28:50] TRACE: --- End Scenario: Navigating screens causes breadcrumbs and context to be updated "# features/react-native-navigation.feature:4" +[18:28:50] TRACE: +[18:28:50] DEBUG: Appium after hook +[18:28:50] DEBUG: close: 127.0.0.1:59933 +[18:28:52] TRACE: Step started: Before hook +[18:28:52] TRACE: Step started: Before hook +[18:28:52] TRACE: Step started: Before hook +[18:28:52] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] TRACE: Step started: Before hook +[18:28:53] DEBUG: Before hook - scenario.status: passed +[18:28:53] DEBUG: Before hook - Maze.driver&.failed?: false +[18:28:53] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} +[18:28:54] TRACE: +[18:28:54] TRACE: +--- Begin Scenario: Navigating when navigation breadcrumbs are disabled only updates context "# features/react-native-navigation.feature:30" +[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:28:54] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationBreadcrumbsDisabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:29:52] DEBUG: accept: 127.0.0.1:60025 +[18:29:52] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:29:52] TRACE: Step started: I relaunch the app after a crash +[18:29:52] TRACE: Step started: I relaunch the app after a crash +[18:29:52] TRACE: Step started: I relaunch the app after a crash +[18:29:52] TRACE: Step started: I relaunch the app after a crash +[18:29:53] DEBUG: accept: 127.0.0.1:60028 +[18:29:54] DEBUG: Maze::Servlets::Servlet is invoked. +[18:29:54] TRACE: DIGESTS computed: sha1=47a0643ec0f0f767e58197f77d844ab561321186 simple=29179 +[18:29:55] DEBUG: Maze::Servlets::Servlet is invoked. +[18:29:55] TRACE: DIGESTS computed: sha1=a42f4b57d562e9ec3ef5f11894c5605ade27fc5d simple=30033 +[18:29:57] DEBUG: Maze::Servlets::Servlet is invoked. +[18:29:57] TRACE: DIGESTS computed: sha1=2d0b20a0c63d6dd9fd2c7078cf368a295cd0b1f9 simple=31796 +[18:30:11] WARN: App state running_in_foreground instead of not_running after 10s +[18:30:11] DEBUG: close: 127.0.0.1:60025 +[18:30:11] DEBUG: close: 127.0.0.1:60028 +[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" +[18:30:12] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationBreadcrumbsDisabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:31:13] DEBUG: accept: 127.0.0.1:60111 +[18:31:13] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:31:13] TRACE: Step started: I wait to receive 3 errors +[18:31:13] TRACE: Step started: I wait to receive 3 errors +[18:31:13] TRACE: Step started: I wait to receive 3 errors +[18:31:13] TRACE: Step started: I wait to receive 3 errors +[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" +[18:31:13] TRACE: Step started: the event "context" equals "Home" +[18:31:13] TRACE: Step started: the event "context" equals "Home" +[18:31:13] TRACE: Step started: the event "context" equals "Home" +[18:31:13] TRACE: Step started: the event "context" equals "Home" +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: I discard the oldest error +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" +[18:31:13] TRACE: Step started: the event "unhandled" is true +[18:31:13] TRACE: Step started: the event "unhandled" is true +[18:31:13] TRACE: Step started: the event "unhandled" is true +[18:31:13] TRACE: Step started: the event "unhandled" is true +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event "context" equals "Details" +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] DEBUG: After hook 3 - scenario.status: passed +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] DEBUG: After hook 2 - scenario.status: passed +[18:31:13] DEBUG: After hook 2 - Maze.driver&.failed?: false +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] TRACE: Step started: After hook +[18:31:13] DEBUG: After hook 1 - scenario.status: passed +[18:31:13] TRACE: --- End Scenario: Navigating when navigation breadcrumbs are disabled only updates context "# features/react-native-navigation.feature:30" +[18:31:13] TRACE: +[18:31:13] DEBUG: Appium after hook +[18:31:35] DEBUG: close: 127.0.0.1:60111 +[18:31:36] TRACE: Step started: Before hook +[18:31:36] TRACE: Step started: Before hook +[18:31:36] TRACE: Step started: Before hook +[18:31:36] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] TRACE: Step started: Before hook +[18:31:45] DEBUG: Before hook - scenario.status: passed +[18:31:45] DEBUG: Before hook - Maze.driver&.failed?: false +[18:31:45] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} +[18:32:03] TRACE: +[18:32:03] TRACE: +--- Begin Scenario: Multiple rapid navigation events are tracked correctly "# features/react-native-navigation.feature:54" +[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" +[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" +[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" +[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" +[18:32:03] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationRapidNavigationScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:32:37] DEBUG: accept: 127.0.0.1:60257 +[18:32:37] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:32:37] TRACE: Step started: I wait to receive 1 error +[18:32:37] TRACE: Step started: I wait to receive 1 error +[18:32:37] TRACE: Step started: I wait to receive 1 error +[18:32:37] TRACE: Step started: I wait to receive 1 error +[18:32:38] DEBUG: accept: 127.0.0.1:60260 +[18:32:38] DEBUG: Maze::Servlets::Servlet is invoked. +[18:32:38] TRACE: DIGESTS computed: sha1=b23f5fafcf646c42718d849141cd1ebab42b5038 simple=30576 +[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" +[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" +[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" +[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" +[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" +[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" +[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" +[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" +[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" +[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" +[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" +[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] DEBUG: After hook 3 - scenario.status: passed +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] DEBUG: After hook 2 - scenario.status: passed +[18:32:38] DEBUG: After hook 2 - Maze.driver&.failed?: false +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] TRACE: Step started: After hook +[18:32:38] DEBUG: After hook 1 - scenario.status: passed +[18:32:38] TRACE: --- End Scenario: Multiple rapid navigation events are tracked correctly "# features/react-native-navigation.feature:54" +[18:32:38] TRACE: +[18:32:38] DEBUG: Appium after hook +[18:32:53] DEBUG: close: 127.0.0.1:60257 +[18:32:53] DEBUG: close: 127.0.0.1:60260 +[18:33:02] TRACE: Step started: Before hook +[18:33:02] TRACE: Step started: Before hook +[18:33:02] TRACE: Step started: Before hook +[18:33:02] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] TRACE: Step started: Before hook +[18:33:03] DEBUG: Before hook - scenario.status: passed +[18:33:03] DEBUG: Before hook - Maze.driver&.failed?: false +[18:33:03] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} +[18:33:16] TRACE: +[18:33:16] TRACE: +--- Begin Scenario: Navigation context persists across error handling "# features/react-native-navigation.feature:61" +[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" +[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" +[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" +[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" +[18:33:16] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationPersistenceScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:34:02] DEBUG: accept: 127.0.0.1:60446 +[18:34:02] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:34:02] TRACE: Step started: I relaunch the app after a crash +[18:34:02] TRACE: Step started: I relaunch the app after a crash +[18:34:02] TRACE: Step started: I relaunch the app after a crash +[18:34:02] TRACE: Step started: I relaunch the app after a crash +[18:34:03] DEBUG: accept: 127.0.0.1:60448 +[18:34:03] DEBUG: Maze::Servlets::Servlet is invoked. +[18:34:03] TRACE: DIGESTS computed: sha1=27a6433078cc328f52f8d84acf23d6ebe96741bf simple=29974 +[18:34:07] DEBUG: Maze::Servlets::Servlet is invoked. +[18:34:07] TRACE: DIGESTS computed: sha1=dae8be69269221bde83fab8d08c481bba90a6769 simple=31201 +[18:34:20] WARN: App state running_in_foreground instead of not_running after 10s +[18:34:21] DEBUG: close: 127.0.0.1:60446 +[18:34:21] DEBUG: close: 127.0.0.1:60448 +[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" +[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" +[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" +[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" +[18:34:21] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationPersistenceScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} +[18:35:22] DEBUG: accept: 127.0.0.1:60564 +[18:35:22] DEBUG: Maze::Servlets::CommandServlet is invoked. +[18:35:22] TRACE: Step started: I wait to receive 2 errors +[18:35:22] TRACE: Step started: I wait to receive 2 errors +[18:35:22] TRACE: Step started: I wait to receive 2 errors +[18:35:22] TRACE: Step started: I wait to receive 2 errors +[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" +[18:35:22] TRACE: Step started: the event "context" equals "Home" +[18:35:22] TRACE: Step started: the event "context" equals "Home" +[18:35:22] TRACE: Step started: the event "context" equals "Home" +[18:35:22] TRACE: Step started: the event "context" equals "Home" +[18:35:22] TRACE: Step started: I discard the oldest error +[18:35:22] TRACE: Step started: I discard the oldest error +[18:35:22] TRACE: Step started: I discard the oldest error +[18:35:22] TRACE: Step started: I discard the oldest error +[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" +[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" +[18:35:22] TRACE: Step started: the event "context" equals "Settings" +[18:35:22] TRACE: Step started: the event "context" equals "Settings" +[18:35:22] TRACE: Step started: the event "context" equals "Settings" +[18:35:22] TRACE: Step started: the event "context" equals "Settings" +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] DEBUG: After hook 3 - scenario.status: passed +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] DEBUG: After hook 2 - scenario.status: passed +[18:35:22] DEBUG: After hook 2 - Maze.driver&.failed?: false +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] TRACE: Step started: After hook +[18:35:22] DEBUG: After hook 1 - scenario.status: passed +[18:35:22] TRACE: --- End Scenario: Navigation context persists across error handling "# features/react-native-navigation.feature:61" +[18:35:22] TRACE: +[18:35:22] DEBUG: Appium after hook +[18:35:23] DEBUG: close: 127.0.0.1:60564 +[18:35:24] INFO: Timer totals: +[18:35:24] INFO: Appium - click element: 0 +[18:35:24] INFO: Appium - find element: 0 +[18:35:24] INFO: Appium session created: d21cdf88d7c3c9e5f206e42533e148981b42151e +[18:35:24] DEBUG: close TCPSocket(::, 9339) +[18:35:24] INFO: BrowserStack session(s): https://app-automate.browserstack.com/dashboard/v2/search?query=fb4684dd-550f-4292-ae67-5b6df8f31412&type=builds +[18:35:24] INFO: Stopping the Appium session +[18:35:24] DEBUG: close TCPSocket(0.0.0.0, 9339) +[18:35:24] INFO: going to shutdown ... +[18:35:24] INFO: WEBrick::HTTPServer#start done. +[18:35:25] INFO: Stopping BrowserStack local tunnel From 4c4d102ead30ea351e068726a06409b0d3e7db60 Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Tue, 14 Apr 2026 18:59:16 +0530 Subject: [PATCH 5/7] Update react native navigation and alos made required changes --- package-lock.json | 2 +- .../package.json | 2 +- .../test/react-native-navigation.test.ts | 171 ++++++++++++++++++ scripts/react-native/android-utils.js | 96 ++++++++++ 4 files changed, 269 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8cd64b51b3..01bfe59875 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53627,7 +53627,7 @@ }, "peerDependencies": { "@bugsnag/core": "^8.0.0", - "react-native-navigation": "2 - 7" + "react-native-navigation": "2 - 8" }, "peerDependenciesMeta": { "@bugsnag/core": { diff --git a/packages/plugin-react-native-navigation/package.json b/packages/plugin-react-native-navigation/package.json index 3b61f78a43..8e29a25057 100644 --- a/packages/plugin-react-native-navigation/package.json +++ b/packages/plugin-react-native-navigation/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "@bugsnag/core": "^8.0.0", - "react-native-navigation": "2 - 7" + "react-native-navigation": "2 - 8" }, "peerDependenciesMeta": { "@bugsnag/core": { diff --git a/packages/plugin-react-native-navigation/test/react-native-navigation.test.ts b/packages/plugin-react-native-navigation/test/react-native-navigation.test.ts index eb40da2a97..4204f51d7c 100644 --- a/packages/plugin-react-native-navigation/test/react-native-navigation.test.ts +++ b/packages/plugin-react-native-navigation/test/react-native-navigation.test.ts @@ -189,4 +189,175 @@ describe('plugin-react-native-navigation', () => { expect(breadcrumbs.length).toBe(0) }) + + describe('navigation context tracking', () => { + it('tracks navigation between multiple screens', () => { + let listener = (event: Event) => { + throw new Error(`This function was not supposed to be called! ${event.componentName}`) + } + + const Navigation = { + events () { + return { + registerComponentDidAppearListener (callback: (event: Event) => never) { + listener = callback + } + } + } + } + + const plugin = new Plugin(Navigation) + const client = new Client({ apiKey: 'API_KEY_YEAH', plugins: [plugin] }) + + expect(client.getContext()).toBe(undefined) + + // Navigate to Home + listener({ componentId: 1, componentName: 'Home', passProps: {} }) + expect(client.getContext()).toBe('Home') + + // Navigate to Profile + listener({ componentId: 2, componentName: 'Profile', passProps: {} }) + expect(client.getContext()).toBe('Profile') + + // Navigate to Settings + listener({ componentId: 3, componentName: 'Settings', passProps: {} }) + expect(client.getContext()).toBe('Settings') + + // Back to Home + listener({ componentId: 1, componentName: 'Home', passProps: {} }) + expect(client.getContext()).toBe('Home') + }) + + it('handles navigation with complex component names', () => { + let listener = (event: Event) => { + throw new Error(`This function was not supposed to be called! ${event.componentName}`) + } + + const Navigation = { + events () { + return { + registerComponentDidAppearListener (callback: (event: Event) => never) { + listener = callback + } + } + } + } + + const plugin = new Plugin(Navigation) + const client = new Client({ apiKey: 'API_KEY_YEAH', plugins: [plugin] }) + + // Test with namespaced component names + listener({ componentId: 1, componentName: 'com.example.screens.HomeScreen', passProps: {} }) + expect(client.getContext()).toBe('com.example.screens.HomeScreen') + + // Test with screen names containing special characters + listener({ componentId: 2, componentName: 'User-Details-Screen', passProps: {} }) + expect(client.getContext()).toBe('User-Details-Screen') + }) + }) + + describe('breadcrumb metadata', () => { + it('includes previous screen context in breadcrumb', () => { + let listener = (event: Event) => { + throw new Error(`This function was not supposed to be called! ${event.componentName}`) + } + + const Navigation = { + events () { + return { + registerComponentDidAppearListener (callback: (event: Event) => never) { + listener = callback + } + } + } + } + + const breadcrumbs: Breadcrumb[] = [] + + const plugin = new Plugin(Navigation) + const client = new Client({ apiKey: 'API_KEY_YEAH', plugins: [plugin] }) + client.addOnBreadcrumb(breadcrumb => { breadcrumbs.push(breadcrumb) }) + + listener({ componentId: 1, componentName: 'Home', passProps: {} }) + listener({ componentId: 2, componentName: 'Details', passProps: {} }) + + expect(breadcrumbs.length).toBe(2) + expect(breadcrumbs[1].metadata).toStrictEqual({ to: 'Details', from: 'Home' }) + }) + + it('sets from as undefined for initial navigation', () => { + let listener = (event: Event) => { + throw new Error(`This function was not supposed to be called! ${event.componentName}`) + } + + const Navigation = { + events () { + return { + registerComponentDidAppearListener (callback: (event: Event) => never) { + listener = callback + } + } + } + } + + const breadcrumbs: Breadcrumb[] = [] + + const plugin = new Plugin(Navigation) + const client = new Client({ apiKey: 'API_KEY_YEAH', plugins: [plugin] }) + client.addOnBreadcrumb(breadcrumb => { breadcrumbs.push(breadcrumb) }) + + listener({ componentId: 1, componentName: 'Splash', passProps: {} }) + + expect(breadcrumbs.length).toBe(1) + expect(breadcrumbs[0].metadata).toStrictEqual({ to: 'Splash', from: undefined }) + }) + }) + + describe('plugin error handling', () => { + it('handles events without Navigation API gracefully', () => { + const message = '@bugsnag/plugin-react-native-navigation reference to `Navigation` was undefined' + + expect(() => { + // eslint-disable-next-line no-new + new Plugin(undefined) + }).toThrow(new Error(message)) + }) + + it('does not crash when Navigation.events is not available', () => { + // Create a Navigation object without the events method + const Navigation = { + events: () => ({ + registerComponentDidAppearListener: jest.fn() + }) + } + + const plugin = new Plugin(Navigation) + const client = new Client({ apiKey: 'API_KEY_YEAH', plugins: [plugin] }) + + // Should not throw and client should be properly initialized + expect(client).toBeDefined() + }) + + it('handles missing Navigation object in plugin constructor', () => { + const message = '@bugsnag/plugin-react-native-navigation reference to `Navigation` was undefined' + + expect(() => { + // eslint-disable-next-line no-new + new Plugin(null) + }).toThrow(new Error(message)) + }) + + it('initializes plugin with valid Navigation API', () => { + const Navigation = { + events: () => ({ + registerComponentDidAppearListener: jest.fn() + }) + } + + const plugin = new Plugin(Navigation) + + // Plugin should be created successfully + expect(plugin).toBeDefined() + }) + }) }) diff --git a/scripts/react-native/android-utils.js b/scripts/react-native/android-utils.js index 3b8ebe857e..c3c833d93a 100644 --- a/scripts/react-native/android-utils.js +++ b/scripts/react-native/android-utils.js @@ -66,6 +66,102 @@ module.exports = { fs.writeFileSync(mainActivityPath, mainActivityContents) }, buildAPK: function buildAPK (fixtureDir, newArchEnabled) { + // Update Kotlin version to 1.9.22 to be compatible with bugsnag-android-core 6.25.0 + // (compiled with Kotlin metadata version 1.9.0) and align JVM targets to 11 across + // all subprojects to prevent compilation mismatches (PLAT-15027) + const rootBuildGradlePath = `${fixtureDir}/android/build.gradle` + let rootBuildGradle = fs.readFileSync(rootBuildGradlePath, 'utf8') + + // Determine if this is a newer RN version (0.84+) that uses Kotlin 2.x + AGP 9 + // which handles JVM target alignment automatically + const rnVersion = parseFloat(process.env.RN_VERSION || '0') + const isKotlin2 = rnVersion >= 0.84 + + // Remove any existing subprojects block with afterEvaluate or pluginManager + rootBuildGradle = rootBuildGradle.replace( + /\nsubprojects\s*\{[\s\S]*?(afterEvaluate|pluginManager)[\s\S]*?\n\}\s*$/, + '' + ) + + if (!isKotlin2) { + // For RN <=0.83 (Kotlin 1.x): Update Kotlin version to 1.9.22 and add JVM target alignment + + // Update RNNKotlinVersion if present (react-native-navigation fixtures) + rootBuildGradle = rootBuildGradle.replace( + /RNNKotlinVersion\s*=\s*"[^"]+"/, + 'RNNKotlinVersion = "1.9.22"' + ) + + // Update any direct kotlin-gradle-plugin version references in buildscript + rootBuildGradle = rootBuildGradle.replace( + /classpath\s*\(?["']org\.jetbrains\.kotlin:kotlin-gradle-plugin:[^"']+["']\)?/, + 'classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22")' + ) + + // Add subprojects block for JVM target alignment (Gradle <9 compatible) + // Use afterEvaluate to ensure sourceCompatibility is set before reading it, + // since pluginManager.withPlugin fires at plugin-apply time (before the android block) + rootBuildGradle += ` +subprojects { + pluginManager.withPlugin('org.jetbrains.kotlin.android') { + afterEvaluate { + def javaVersion = android.compileOptions.sourceCompatibility.toString() + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { + kotlinOptions { + jvmTarget = javaVersion + } + } + } + } +} +` + } + // For RN 0.84+ (Kotlin 2.x + AGP 9): No subprojects block needed. + // Kotlin 2.x automatically aligns JVM targets with the Android plugin. + // However, third-party libraries that apply kotlin-android plugin directly + // will fail with "sourceCompatibility is not yet finalized". Patch them + // to wrap the kotlin plugin in a try/catch and use compileSdkVersion method. + if (isKotlin2) { + const nodeModulesDir = `${fixtureDir}/node_modules` + if (fs.existsSync(nodeModulesDir)) { + const patchLibraryBuildGradle = (buildGradlePath) => { + if (!fs.existsSync(buildGradlePath)) return + let content = fs.readFileSync(buildGradlePath, 'utf8') + + // Remove buildscript block — AGP 9 uses plugins from the root project + // and library buildscript blocks with old AGP versions cause conflicts + content = content.replace( + /buildscript\s*\{[\s\S]*?\n\}\s*\n/, + '' + ) + + // Wrap kotlin-android plugin application in try/catch (handles both + // single and double quotes, and both 'kotlin-android' and full plugin id) + content = content.replace( + /apply plugin:\s*["'](?:org\.jetbrains\.kotlin\.android|kotlin-android)["']/g, + "try { apply plugin: 'org.jetbrains.kotlin.android' } catch (e) { /* Kotlin 2.x + AGP 9 compatibility */ }" + ) + + // Update Java compatibility to VERSION_17 for Kotlin 2.x + content = content.replace( + /JavaVersion\.VERSION_1_8/g, + 'JavaVersion.VERSION_17' + ) + + fs.writeFileSync(buildGradlePath, content) + console.log(`Patched library build.gradle: ${buildGradlePath}`) + } + + // Patch known third-party libraries that apply kotlin-android plugin directly + const libsToPatch = ['react-native-file-access', 'react-native-safe-area-context'] + libsToPatch.forEach(lib => { + patchLibraryBuildGradle(`${nodeModulesDir}/${lib}/android/build.gradle`) + }) + } + } + + fs.writeFileSync(rootBuildGradlePath, rootBuildGradle) + if (newArchEnabled) { execFileSync('./gradlew', ['generateCodegenArtifactsFromSchema'], { cwd: `${fixtureDir}/android`, stdio: 'inherit' }) } From fd5f935004c4bdd454c150b529ae0d35285d9db2 Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Thu, 16 Apr 2026 16:45:12 +0530 Subject: [PATCH 6/7] add entry into changlog file --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a2405a89..0b0a7a6c0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] + +### Changed + +- (plugin-react-native-navigation) Update react-native-navigation peer dependency to support v8 [#2727](https://github.com/bugsnag/bugsnag-js/pull/2727) + ## [8.9.0] - 2026-04-08 ### Fixed From f0bc248698c7ce2fd5afcfaa73a26b94606b2d3d Mon Sep 17 00:00:00 2001 From: SB-priyankap Date: Fri, 17 Apr 2026 15:23:25 +0530 Subject: [PATCH 7/7] Delete test/react-native/maze-runner.log --- test/react-native/maze-runner.log | 468 ------------------------------ 1 file changed, 468 deletions(-) delete mode 100644 test/react-native/maze-runner.log diff --git a/test/react-native/maze-runner.log b/test/react-native/maze-runner.log deleted file mode 100644 index cc49842f73..0000000000 --- a/test/react-native/maze-runner.log +++ /dev/null @@ -1,468 +0,0 @@ -# Logfile created on 2026-04-07 18:25:38 +0530 by logger.rb/v1.7.0 -[18:25:38] INFO: Maze Runner v11.0.0 -[18:25:38] INFO: Reading command line options from features/support/maze.all.cfg -[18:25:39] INFO: Running in appium mode -[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/device_info.json -[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/maze_output.zip -[18:25:39] INFO: Clearing contents of /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/maze_output/passed -[18:25:39] INFO: UUID for this run: fb4684dd-550f-4292-ae67-5b6df8f31412 -[18:25:39] INFO: WEBrick 1.9.2 -[18:25:39] INFO: ruby 3.4.8 (2025-12-17) [arm64-darwin25] -[18:25:39] DEBUG: #> is mounted on /. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /notify. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /sessions. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /builds. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /uploads. -[18:25:39] DEBUG: Maze::Servlets::TraceServlet is mounted on /traces. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /sourcemap. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /react-native-source-map. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /dart-symbol. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /ndk-symbol. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /proguard. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /dsym. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /breakpad-symbol. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /unity-line-mappings. -[18:25:39] DEBUG: Maze::Servlets::CommandServlet is mounted on /command. -[18:25:39] DEBUG: Maze::Servlets::IdempotentCommandServlet is mounted on /idem-command. -[18:25:39] DEBUG: Maze::Servlets::AllCommandsServlet is mounted on /commands. -[18:25:39] DEBUG: Maze::Servlets::ErrorConfigServlet is mounted on /error-config. -[18:25:39] DEBUG: Maze::Servlets::LogServlet is mounted on /logs. -[18:25:39] DEBUG: Maze::Servlets::Servlet is mounted on /metrics. -[18:25:39] DEBUG: Maze::Servlets::ReflectiveServlet is mounted on /reflect. -[18:25:39] INFO: WEBrick::HTTPServer#start: pid=33274 port=9339 -[18:25:40] INFO: Uploading app: /Users/priyanka_potdar/Documents/bugsnag-js-2/bugsnag-js/test/react-native/features/fixtures/generated/react-native-navigation/new-arch/0.72/android/app/build/outputs/apk/release/app-release.apk -[18:25:48] INFO: App uploaded to: bs://83f0e87b129e810c637ad2ff86e9be1c6836d072 -[18:25:48] INFO: You can use this url to avoid uploading the same app more than once. -[18:25:48] INFO: Starting BrowserStack local tunnel -[18:25:48] DEBUG: Executing: /Users/priyanka_potdar/BrowserStackLocal -d start --key hHDo5besaVcNDLyjGzyP --local-identifier fb4684dd-550f-4292-ae67-5b6df8f31412 --force-local --only-automate --force -[18:25:53] DEBUG: {"state":"connected","pid":33305,"message":{"message":"Connected"}} -[18:25:53] DEBUG: Exit status: 0 -[18:25:53] INFO: BrowserStackLocal daemon running under pid 33305 -[18:25:53] INFO: Creating Appium session with http://hub-cloud.browserstack.com/wd/hub... -[18:26:29] INFO: Appium driver started in 36s -[18:26:29] INFO: Created Appium session: d21cdf88d7c3c9e5f206e42533e148981b42151e -[18:26:30] INFO: BrowserStack session(s): https://app-automate.browserstack.com/dashboard/v2/search?query=fb4684dd-550f-4292-ae67-5b6df8f31412&type=builds -[18:26:30] TRACE: Step started: Before hook -[18:26:30] TRACE: Step started: Before hook -[18:26:30] TRACE: Step started: Before hook -[18:26:30] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] TRACE: Step started: Before hook -[18:26:31] DEBUG: Before hook - scenario.status: passed -[18:26:31] DEBUG: Before hook - Maze.driver&.failed?: false -[18:26:31] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} -[18:26:32] TRACE: -[18:26:32] TRACE: ---- Begin Scenario: Navigating screens causes breadcrumbs and context to be updated "# features/react-native-navigation.feature:4" -[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:26:32] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:26:32] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationBreadcrumbsEnabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:27:30] DEBUG: accept: 127.0.0.1:59783 -[18:27:30] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:27:30] TRACE: Step started: I relaunch the app after a crash -[18:27:30] TRACE: Step started: I relaunch the app after a crash -[18:27:30] TRACE: Step started: I relaunch the app after a crash -[18:27:30] TRACE: Step started: I relaunch the app after a crash -[18:27:31] DEBUG: accept: 127.0.0.1:59786 -[18:27:31] DEBUG: Maze::Servlets::Servlet is invoked. -[18:27:31] TRACE: DIGESTS computed: sha1=1f90f2fc600567988dad4cb30df195ad6741805a simple=30735 -[18:27:33] DEBUG: Maze::Servlets::Servlet is invoked. -[18:27:33] TRACE: DIGESTS computed: sha1=d903da432427a9a90c57ff38f4f32be40a567f6b simple=31953 -[18:27:35] DEBUG: Maze::Servlets::Servlet is invoked. -[18:27:35] TRACE: DIGESTS computed: sha1=2a7383df93802daba5bfad03a2f791af1bd18ff5 simple=32315 -[18:27:48] WARN: App state running_in_foreground instead of not_running after 10s -[18:27:48] DEBUG: close: 127.0.0.1:59786 -[18:27:48] DEBUG: close: 127.0.0.1:59783 -[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:27:49] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsEnabledScenario" -[18:27:49] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationBreadcrumbsEnabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:28:50] DEBUG: accept: 127.0.0.1:59933 -[18:28:50] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:28:50] TRACE: Step started: I wait to receive 3 errors -[18:28:50] TRACE: Step started: I wait to receive 3 errors -[18:28:50] TRACE: Step started: I wait to receive 3 errors -[18:28:50] TRACE: Step started: I wait to receive 3 errors -[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:28:50] TRACE: Step started: the event "context" equals "Home" -[18:28:50] TRACE: Step started: the event "context" equals "Home" -[18:28:50] TRACE: Step started: the event "context" equals "Home" -[18:28:50] TRACE: Step started: the event "context" equals "Home" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: I discard the oldest error -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:28:50] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:28:50] TRACE: Step started: the event "unhandled" is true -[18:28:50] TRACE: Step started: the event "unhandled" is true -[18:28:50] TRACE: Step started: the event "unhandled" is true -[18:28:50] TRACE: Step started: the event "unhandled" is true -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event "context" equals "Details" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeReadyNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: the event contains a breadcrumb matching the JSON fixture in "features/fixtures/expected_breadcrumbs/HomeToDetailsNavigation.json" -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] DEBUG: After hook 3 - scenario.status: passed -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] DEBUG: After hook 2 - scenario.status: passed -[18:28:50] DEBUG: After hook 2 - Maze.driver&.failed?: false -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] TRACE: Step started: After hook -[18:28:50] DEBUG: After hook 1 - scenario.status: passed -[18:28:50] TRACE: --- End Scenario: Navigating screens causes breadcrumbs and context to be updated "# features/react-native-navigation.feature:4" -[18:28:50] TRACE: -[18:28:50] DEBUG: Appium after hook -[18:28:50] DEBUG: close: 127.0.0.1:59933 -[18:28:52] TRACE: Step started: Before hook -[18:28:52] TRACE: Step started: Before hook -[18:28:52] TRACE: Step started: Before hook -[18:28:52] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] TRACE: Step started: Before hook -[18:28:53] DEBUG: Before hook - scenario.status: passed -[18:28:53] DEBUG: Before hook - Maze.driver&.failed?: false -[18:28:53] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} -[18:28:54] TRACE: -[18:28:54] TRACE: ---- Begin Scenario: Navigating when navigation breadcrumbs are disabled only updates context "# features/react-native-navigation.feature:30" -[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:28:54] TRACE: Step started: I run "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:28:54] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationBreadcrumbsDisabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:29:52] DEBUG: accept: 127.0.0.1:60025 -[18:29:52] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:29:52] TRACE: Step started: I relaunch the app after a crash -[18:29:52] TRACE: Step started: I relaunch the app after a crash -[18:29:52] TRACE: Step started: I relaunch the app after a crash -[18:29:52] TRACE: Step started: I relaunch the app after a crash -[18:29:53] DEBUG: accept: 127.0.0.1:60028 -[18:29:54] DEBUG: Maze::Servlets::Servlet is invoked. -[18:29:54] TRACE: DIGESTS computed: sha1=47a0643ec0f0f767e58197f77d844ab561321186 simple=29179 -[18:29:55] DEBUG: Maze::Servlets::Servlet is invoked. -[18:29:55] TRACE: DIGESTS computed: sha1=a42f4b57d562e9ec3ef5f11894c5605ade27fc5d simple=30033 -[18:29:57] DEBUG: Maze::Servlets::Servlet is invoked. -[18:29:57] TRACE: DIGESTS computed: sha1=2d0b20a0c63d6dd9fd2c7078cf368a295cd0b1f9 simple=31796 -[18:30:11] WARN: App state running_in_foreground instead of not_running after 10s -[18:30:11] DEBUG: close: 127.0.0.1:60025 -[18:30:11] DEBUG: close: 127.0.0.1:60028 -[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:30:12] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationBreadcrumbsDisabledScenario" -[18:30:12] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationBreadcrumbsDisabledScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:31:13] DEBUG: accept: 127.0.0.1:60111 -[18:31:13] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:31:13] TRACE: Step started: I wait to receive 3 errors -[18:31:13] TRACE: Step started: I wait to receive 3 errors -[18:31:13] TRACE: Step started: I wait to receive 3 errors -[18:31:13] TRACE: Step started: I wait to receive 3 errors -[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "HomeNavigationError" -[18:31:13] TRACE: Step started: the event "context" equals "Home" -[18:31:13] TRACE: Step started: the event "context" equals "Home" -[18:31:13] TRACE: Step started: the event "context" equals "Home" -[18:31:13] TRACE: Step started: the event "context" equals "Home" -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationError" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: I discard the oldest error -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:31:13] TRACE: Step started: the exception "message" equals "DetailsNavigationUnhandledError" -[18:31:13] TRACE: Step started: the event "unhandled" is true -[18:31:13] TRACE: Step started: the event "unhandled" is true -[18:31:13] TRACE: Step started: the event "unhandled" is true -[18:31:13] TRACE: Step started: the event "unhandled" is true -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event "context" equals "Details" -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: the event does not have a "navigation" breadcrumb -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] DEBUG: After hook 3 - scenario.status: passed -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] DEBUG: After hook 2 - scenario.status: passed -[18:31:13] DEBUG: After hook 2 - Maze.driver&.failed?: false -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] TRACE: Step started: After hook -[18:31:13] DEBUG: After hook 1 - scenario.status: passed -[18:31:13] TRACE: --- End Scenario: Navigating when navigation breadcrumbs are disabled only updates context "# features/react-native-navigation.feature:30" -[18:31:13] TRACE: -[18:31:13] DEBUG: Appium after hook -[18:31:35] DEBUG: close: 127.0.0.1:60111 -[18:31:36] TRACE: Step started: Before hook -[18:31:36] TRACE: Step started: Before hook -[18:31:36] TRACE: Step started: Before hook -[18:31:36] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] TRACE: Step started: Before hook -[18:31:45] DEBUG: Before hook - scenario.status: passed -[18:31:45] DEBUG: Before hook - Maze.driver&.failed?: false -[18:31:45] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} -[18:32:03] TRACE: -[18:32:03] TRACE: ---- Begin Scenario: Multiple rapid navigation events are tracked correctly "# features/react-native-navigation.feature:54" -[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" -[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" -[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" -[18:32:03] TRACE: Step started: I run "ReactNativeNavigationRapidNavigationScenario" -[18:32:03] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationRapidNavigationScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:32:37] DEBUG: accept: 127.0.0.1:60257 -[18:32:37] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:32:37] TRACE: Step started: I wait to receive 1 error -[18:32:37] TRACE: Step started: I wait to receive 1 error -[18:32:37] TRACE: Step started: I wait to receive 1 error -[18:32:37] TRACE: Step started: I wait to receive 1 error -[18:32:38] DEBUG: accept: 127.0.0.1:60260 -[18:32:38] DEBUG: Maze::Servlets::Servlet is invoked. -[18:32:38] TRACE: DIGESTS computed: sha1=b23f5fafcf646c42718d849141cd1ebab42b5038 simple=30576 -[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" -[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" -[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" -[18:32:38] TRACE: Step started: the exception "message" equals "RapidNavigationError" -[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" -[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" -[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" -[18:32:38] TRACE: Step started: the event "context" equals "FinalScreen" -[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" -[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" -[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" -[18:32:38] TRACE: Step started: the event has a "navigation" breadcrumb named "React Native Navigation componentDidAppear" -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] DEBUG: After hook 3 - scenario.status: passed -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] DEBUG: After hook 2 - scenario.status: passed -[18:32:38] DEBUG: After hook 2 - Maze.driver&.failed?: false -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] TRACE: Step started: After hook -[18:32:38] DEBUG: After hook 1 - scenario.status: passed -[18:32:38] TRACE: --- End Scenario: Multiple rapid navigation events are tracked correctly "# features/react-native-navigation.feature:54" -[18:32:38] TRACE: -[18:32:38] DEBUG: Appium after hook -[18:32:53] DEBUG: close: 127.0.0.1:60257 -[18:32:53] DEBUG: close: 127.0.0.1:60260 -[18:33:02] TRACE: Step started: Before hook -[18:33:02] TRACE: Step started: Before hook -[18:33:02] TRACE: Step started: Before hook -[18:33:02] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] TRACE: Step started: Before hook -[18:33:03] DEBUG: Before hook - scenario.status: passed -[18:33:03] DEBUG: Before hook - Maze.driver&.failed?: false -[18:33:03] TRACE: Pushing file to '/sdcard/Android/data/com.reactnative/files/fixture_config.json' with contents: {"maze_address":"bs-local.com:9339"} -[18:33:16] TRACE: -[18:33:16] TRACE: ---- Begin Scenario: Navigation context persists across error handling "# features/react-native-navigation.feature:61" -[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" -[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" -[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" -[18:33:16] TRACE: Step started: I run "ReactNativeNavigationPersistenceScenario" -[18:33:16] DEBUG: Queuing command: {action: "run-scenario", scenario_name: "ReactNativeNavigationPersistenceScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:34:02] DEBUG: accept: 127.0.0.1:60446 -[18:34:02] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:34:02] TRACE: Step started: I relaunch the app after a crash -[18:34:02] TRACE: Step started: I relaunch the app after a crash -[18:34:02] TRACE: Step started: I relaunch the app after a crash -[18:34:02] TRACE: Step started: I relaunch the app after a crash -[18:34:03] DEBUG: accept: 127.0.0.1:60448 -[18:34:03] DEBUG: Maze::Servlets::Servlet is invoked. -[18:34:03] TRACE: DIGESTS computed: sha1=27a6433078cc328f52f8d84acf23d6ebe96741bf simple=29974 -[18:34:07] DEBUG: Maze::Servlets::Servlet is invoked. -[18:34:07] TRACE: DIGESTS computed: sha1=dae8be69269221bde83fab8d08c481bba90a6769 simple=31201 -[18:34:20] WARN: App state running_in_foreground instead of not_running after 10s -[18:34:21] DEBUG: close: 127.0.0.1:60446 -[18:34:21] DEBUG: close: 127.0.0.1:60448 -[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" -[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" -[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" -[18:34:21] TRACE: Step started: I configure Bugsnag for "ReactNativeNavigationPersistenceScenario" -[18:34:21] DEBUG: Queuing command: {action: "start-bugsnag", scenario_name: "ReactNativeNavigationPersistenceScenario", notify: "http://localhost:9339/notify", sessions: "http://localhost:9339/sessions", api_key: "12312312312312312312312312312312", scenario_data: ""} -[18:35:22] DEBUG: accept: 127.0.0.1:60564 -[18:35:22] DEBUG: Maze::Servlets::CommandServlet is invoked. -[18:35:22] TRACE: Step started: I wait to receive 2 errors -[18:35:22] TRACE: Step started: I wait to receive 2 errors -[18:35:22] TRACE: Step started: I wait to receive 2 errors -[18:35:22] TRACE: Step started: I wait to receive 2 errors -[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "FirstNavigationError" -[18:35:22] TRACE: Step started: the event "context" equals "Home" -[18:35:22] TRACE: Step started: the event "context" equals "Home" -[18:35:22] TRACE: Step started: the event "context" equals "Home" -[18:35:22] TRACE: Step started: the event "context" equals "Home" -[18:35:22] TRACE: Step started: I discard the oldest error -[18:35:22] TRACE: Step started: I discard the oldest error -[18:35:22] TRACE: Step started: I discard the oldest error -[18:35:22] TRACE: Step started: I discard the oldest error -[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" -[18:35:22] TRACE: Step started: the exception "message" equals "SecondNavigationError" -[18:35:22] TRACE: Step started: the event "context" equals "Settings" -[18:35:22] TRACE: Step started: the event "context" equals "Settings" -[18:35:22] TRACE: Step started: the event "context" equals "Settings" -[18:35:22] TRACE: Step started: the event "context" equals "Settings" -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] DEBUG: After hook 3 - scenario.status: passed -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] DEBUG: After hook 2 - scenario.status: passed -[18:35:22] DEBUG: After hook 2 - Maze.driver&.failed?: false -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] TRACE: Step started: After hook -[18:35:22] DEBUG: After hook 1 - scenario.status: passed -[18:35:22] TRACE: --- End Scenario: Navigation context persists across error handling "# features/react-native-navigation.feature:61" -[18:35:22] TRACE: -[18:35:22] DEBUG: Appium after hook -[18:35:23] DEBUG: close: 127.0.0.1:60564 -[18:35:24] INFO: Timer totals: -[18:35:24] INFO: Appium - click element: 0 -[18:35:24] INFO: Appium - find element: 0 -[18:35:24] INFO: Appium session created: d21cdf88d7c3c9e5f206e42533e148981b42151e -[18:35:24] DEBUG: close TCPSocket(::, 9339) -[18:35:24] INFO: BrowserStack session(s): https://app-automate.browserstack.com/dashboard/v2/search?query=fb4684dd-550f-4292-ae67-5b6df8f31412&type=builds -[18:35:24] INFO: Stopping the Appium session -[18:35:24] DEBUG: close TCPSocket(0.0.0.0, 9339) -[18:35:24] INFO: going to shutdown ... -[18:35:24] INFO: WEBrick::HTTPServer#start done. -[18:35:25] INFO: Stopping BrowserStack local tunnel