test(US-14): add instrumented UI tests for PacerScreen
Tests cover: app launch, START/STOP toggle, preset BPM button, and service running/stopped state. Run with: ./gradlew connectedAndroidTest
This commit is contained in:
parent
7f8a65d76b
commit
4647853ce7
1 changed files with 68 additions and 0 deletions
|
|
@ -0,0 +1,68 @@
|
||||||
|
package net.jeena.pacer
|
||||||
|
|
||||||
|
import androidx.compose.ui.test.assertIsDisplayed
|
||||||
|
import androidx.compose.ui.test.junit4.createAndroidComposeRule
|
||||||
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
|
import androidx.compose.ui.test.performClick
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instrumented UI tests for PacerScreen (US-14).
|
||||||
|
* Run with: ./gradlew connectedAndroidTest
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class PacerScreenTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val composeRule = createAndroidComposeRule<MainActivity>()
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun appLaunches_andShowsStartButton() {
|
||||||
|
composeRule.onNodeWithText("START").assertIsDisplayed()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun appLaunches_andShowsTitle() {
|
||||||
|
composeRule.onNodeWithText("PACER").assertIsDisplayed()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun tappingStart_changesButtonToStop() {
|
||||||
|
composeRule.onNodeWithText("START").performClick()
|
||||||
|
composeRule.onNodeWithText("STOP").assertIsDisplayed()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun tappingStop_changesButtonBackToStart() {
|
||||||
|
composeRule.onNodeWithText("START").performClick()
|
||||||
|
composeRule.onNodeWithText("STOP").performClick()
|
||||||
|
composeRule.onNodeWithText("START").assertIsDisplayed()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun presetButton_updatesBpmDisplay() {
|
||||||
|
// Tap the "100 / SLOW" preset
|
||||||
|
composeRule.onNodeWithText("100").performClick()
|
||||||
|
composeRule.onNodeWithText("100").assertIsDisplayed()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun serviceRunning_afterTappingStart() {
|
||||||
|
composeRule.onNodeWithText("START").performClick()
|
||||||
|
composeRule.waitForIdle()
|
||||||
|
assert(PacerService.isRunning)
|
||||||
|
// Clean up
|
||||||
|
composeRule.onNodeWithText("STOP").performClick()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun serviceStopped_afterTappingStop() {
|
||||||
|
composeRule.onNodeWithText("START").performClick()
|
||||||
|
composeRule.onNodeWithText("STOP").performClick()
|
||||||
|
composeRule.waitForIdle()
|
||||||
|
assert(!PacerService.isRunning)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue