diff options
Diffstat (limited to 'android-app/app/src/androidTest/kotlin/org/terst')
| -rw-r--r-- | android-app/app/src/androidTest/kotlin/org/terst/nav/MainActivitySmokeTest.kt | 86 |
1 files changed, 34 insertions, 52 deletions
diff --git a/android-app/app/src/androidTest/kotlin/org/terst/nav/MainActivitySmokeTest.kt b/android-app/app/src/androidTest/kotlin/org/terst/nav/MainActivitySmokeTest.kt index a13ef7f..fecd9cc 100644 --- a/android-app/app/src/androidTest/kotlin/org/terst/nav/MainActivitySmokeTest.kt +++ b/android-app/app/src/androidTest/kotlin/org/terst/nav/MainActivitySmokeTest.kt @@ -1,6 +1,5 @@ package org.terst.nav -import androidx.test.core.app.ActivityScenario import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.assertion.ViewAssertions.matches @@ -8,21 +7,26 @@ import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withContentDescription import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Before +import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith /** * Smoke tests: verify the main UI surfaces launch and respond correctly. - * These run on an emulator without GPS permission, so no LocationService. + * Run without GPS permission — LocationService is not started. * - * Run locally: ./gradlew connectedDebugAndroidTest - * In CI: smoke-test job via android-emulator-runner + * Locally: ./gradlew connectedDebugAndroidTest + * CI: smoke-test job via android-emulator-runner */ @RunWith(AndroidJUnit4::class) class MainActivitySmokeTest { + @get:Rule + val activityRule = ActivityScenarioRule(MainActivity::class.java) + @Before fun setup() { NavApplication.isTesting = true @@ -32,10 +36,8 @@ class MainActivitySmokeTest { @Test fun mainActivity_launches_withoutCrash() { - ActivityScenario.launch(MainActivity::class.java).use { scenario -> - scenario.onActivity { activity -> - assert(!activity.isFinishing) { "MainActivity finished immediately after launch" } - } + activityRule.scenario.onActivity { activity -> + assert(!activity.isFinishing) { "MainActivity finished immediately after launch" } } } @@ -43,89 +45,69 @@ class MainActivitySmokeTest { @Test fun bottomNav_allFourTabs_areDisplayed() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Map")).check(matches(isDisplayed())) - onView(withText("Instruments")).check(matches(isDisplayed())) - onView(withText("Log")).check(matches(isDisplayed())) - onView(withText("Safety")).check(matches(isDisplayed())) - } + onView(withText("Map")).check(matches(isDisplayed())) + onView(withText("Instruments")).check(matches(isDisplayed())) + onView(withText("Log")).check(matches(isDisplayed())) + onView(withText("Safety")).check(matches(isDisplayed())) } @Test fun bottomNav_safetyTab_showsSafetyDashboard() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Safety")).perform(click()) - onView(withText("Safety Dashboard")).check(matches(isDisplayed())) - onView(withText("ACTIVATE MOB")).check(matches(isDisplayed())) - onView(withText("ANCHOR WATCH")).check(matches(isDisplayed())) - } + onView(withText("Safety")).perform(click()) + onView(withText("Safety Dashboard")).check(matches(isDisplayed())) + onView(withText("ACTIVATE MOB")).check(matches(isDisplayed())) + onView(withText("ANCHOR WATCH")).check(matches(isDisplayed())) } @Test fun bottomNav_logTab_showsVoiceLogUi() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Log")).perform(click()) - onView(withContentDescription("Start voice recognition")).check(matches(isDisplayed())) - } + onView(withText("Log")).perform(click()) + onView(withContentDescription("Start voice recognition")).check(matches(isDisplayed())) } @Test fun bottomNav_instrumentsTab_isSelectable() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Instruments")).perform(click()) - onView(withId(R.id.instrument_bottom_sheet)).check(matches(isDisplayed())) - } + onView(withText("Instruments")).perform(click()) + onView(withId(R.id.instrument_bottom_sheet)).check(matches(isDisplayed())) } @Test fun bottomNav_mapTab_returnsFromOverlay() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Safety")).perform(click()) - onView(withText("Map")).perform(click()) - onView(withId(R.id.mapView)).check(matches(isDisplayed())) - } + onView(withText("Safety")).perform(click()) + onView(withText("Map")).perform(click()) + onView(withId(R.id.mapView)).check(matches(isDisplayed())) } // ── Persistent FABs ──────────────────────────────────────────────────── @Test fun fabMob_isAlwaysVisible() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withContentDescription("Man Overboard")).check(matches(isDisplayed())) - } + onView(withContentDescription("Man Overboard")).check(matches(isDisplayed())) } @Test fun fabMob_remainsVisibleOnSafetyTab() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withText("Safety")).perform(click()) - onView(withContentDescription("Man Overboard")).check(matches(isDisplayed())) - } + onView(withText("Safety")).perform(click()) + onView(withContentDescription("Man Overboard")).check(matches(isDisplayed())) } // ── Track recording ──────────────────────────────────────────────────── @Test fun fabRecordTrack_isDisplayedWithRecordDescription() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withContentDescription("Record Track")).check(matches(isDisplayed())) - } + onView(withContentDescription("Record Track")).check(matches(isDisplayed())) } @Test fun fabRecordTrack_togglesToStopRecording_onFirstClick() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withContentDescription("Record Track")).perform(click()) - onView(withContentDescription("Stop Recording")).check(matches(isDisplayed())) - } + onView(withContentDescription("Record Track")).perform(click()) + onView(withContentDescription("Stop Recording")).check(matches(isDisplayed())) } @Test fun fabRecordTrack_togglesBackToRecord_onSecondClick() { - ActivityScenario.launch(MainActivity::class.java).use { - onView(withContentDescription("Record Track")).perform(click()) - onView(withContentDescription("Stop Recording")).perform(click()) - onView(withContentDescription("Record Track")).check(matches(isDisplayed())) - } + onView(withContentDescription("Record Track")).perform(click()) + onView(withContentDescription("Stop Recording")).perform(click()) + onView(withContentDescription("Record Track")).check(matches(isDisplayed())) } } |
