android: add compose ui tests for auth and chat list states
Some checks failed
CI / test (push) Failing after 2m14s
Some checks failed
CI / test (push) Failing after 2m14s
This commit is contained in:
@@ -358,3 +358,8 @@
|
||||
- Added global Coil image loader cache policy in `MessengerApplication` (memory + disk cache).
|
||||
- Added Media3 `SimpleCache` singleton module for media stream/file caching foundation.
|
||||
- Added Media3/Coil core dependencies and configured cache sizes for mobile usage.
|
||||
|
||||
### Step 61 - Compose UI tests baseline
|
||||
- Added instrumented Compose UI tests for login and chat list states.
|
||||
- Added Android test dependencies for Compose test runner (`ui-test-junit4`) and test infra.
|
||||
- Covered key visual states: auth error rendering, chat list loading state, and empty state.
|
||||
|
||||
@@ -106,6 +106,9 @@ dependencies {
|
||||
testImplementation("androidx.test:core:1.6.1")
|
||||
testImplementation("org.robolectric:robolectric:4.13")
|
||||
testImplementation("com.squareup.okhttp3:mockwebserver:4.12.0")
|
||||
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.7.6")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.2.1")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
|
||||
|
||||
debugImplementation("androidx.compose.ui:ui-tooling:1.7.6")
|
||||
debugImplementation("androidx.compose.ui:ui-test-manifest:1.7.6")
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package ru.daemonlord.messenger.ui.auth
|
||||
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.compose.ui.test.assertIsDisplayed
|
||||
import androidx.compose.ui.test.junit4.createAndroidComposeRule
|
||||
import androidx.compose.ui.test.onNodeWithText
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
class LoginScreenTest {
|
||||
|
||||
@get:Rule
|
||||
val composeRule = createAndroidComposeRule<ComponentActivity>()
|
||||
|
||||
@Test
|
||||
fun loginScreen_showsErrorMessage() {
|
||||
composeRule.setContent {
|
||||
LoginScreen(
|
||||
state = AuthUiState(
|
||||
email = "demo@daemonlord.ru",
|
||||
password = "123456",
|
||||
errorMessage = "Invalid email or password.",
|
||||
),
|
||||
onEmailChanged = {},
|
||||
onPasswordChanged = {},
|
||||
onLoginClick = {},
|
||||
)
|
||||
}
|
||||
|
||||
composeRule.onNodeWithText("Messenger Login").assertIsDisplayed()
|
||||
composeRule.onNodeWithText("Invalid email or password.").assertIsDisplayed()
|
||||
composeRule.onNodeWithText("Login").assertIsDisplayed()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package ru.daemonlord.messenger.ui.chats
|
||||
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.compose.ui.test.assertIsDisplayed
|
||||
import androidx.compose.ui.test.junit4.createAndroidComposeRule
|
||||
import androidx.compose.ui.test.onNodeWithText
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
class ChatListScreenTest {
|
||||
|
||||
@get:Rule
|
||||
val composeRule = createAndroidComposeRule<ComponentActivity>()
|
||||
|
||||
@Test
|
||||
fun chatListScreen_loadingState_showsLoadingText() {
|
||||
composeRule.setContent {
|
||||
ChatListScreen(
|
||||
state = ChatListUiState(isLoading = true),
|
||||
onTabSelected = {},
|
||||
onFilterSelected = {},
|
||||
onSearchChanged = {},
|
||||
onRefresh = {},
|
||||
onOpenSettings = {},
|
||||
onOpenProfile = {},
|
||||
onOpenChat = {},
|
||||
)
|
||||
}
|
||||
|
||||
composeRule.onNodeWithText("Loading chats...").assertIsDisplayed()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun chatListScreen_emptyState_showsPlaceholder() {
|
||||
composeRule.setContent {
|
||||
ChatListScreen(
|
||||
state = ChatListUiState(isLoading = false, chats = emptyList()),
|
||||
onTabSelected = {},
|
||||
onFilterSelected = {},
|
||||
onSearchChanged = {},
|
||||
onRefresh = {},
|
||||
onOpenSettings = {},
|
||||
onOpenProfile = {},
|
||||
onOpenChat = {},
|
||||
)
|
||||
}
|
||||
|
||||
composeRule.onNodeWithText("No chats found").assertIsDisplayed()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
## 15. Качество
|
||||
- [x] Unit tests (domain/data)
|
||||
- [ ] UI tests (Compose test)
|
||||
- [x] UI tests (Compose test)
|
||||
- [ ] Integration tests для auth/chat/realtime
|
||||
- [x] Performance baseline (startup, scroll, media)
|
||||
- [ ] ANR/crash budget + monitoring
|
||||
|
||||
Reference in New Issue
Block a user