From f6adda6690f97eae54275c4e5d483aadf157edb3 Mon Sep 17 00:00:00 2001 From: mahdiabbasian Date: Thu, 21 Mar 2024 21:24:14 +0330 Subject: [PATCH] add espresso core with compose ui test and write a simple test for MainActivity --- app/build.gradle.kts | 3 +++ .../ir/composenews/ui/MainActivityTest.kt | 26 +++++++++++++++++++ gradle/libs.versions.toml | 3 +++ 3 files changed, 32 insertions(+) create mode 100644 app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0189551c..fdcb5859 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -50,5 +50,8 @@ dependencies { implementation(lifecycle.runtime.ktx) implementation(work.runtime.ktx) implementation(libs.hilt.navigation.compose) + implementation(libs.espresso.core) + implementation(libs.compose.ui.test.manifest) + implementation(libs.compose.ui.test.junit4) } } diff --git a/app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt b/app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt new file mode 100644 index 00000000..23f07b92 --- /dev/null +++ b/app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt @@ -0,0 +1,26 @@ +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithContentDescription +import androidx.compose.ui.test.performClick +import androidx.test.ext.junit.runners.AndroidJUnit4 +import ir.composenews.ui.MainActivity +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class MainActivityTest { + + @get:Rule + val composeTestRule = createAndroidComposeRule() + + @Test + fun checkNavigationItemsDisplayed() { + composeTestRule.waitForIdle() + + composeTestRule + .onNodeWithContentDescription("Favorite") + .assertIsDisplayed() + .performClick() + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2a187727..5b33451d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -59,6 +59,7 @@ windowsSizeClass = "1.1.2" adaptive = "0.26.2-beta" kotest = "5.7.2" +espressoCore = "3.4.0" [libraries] androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" } @@ -69,6 +70,7 @@ compose-ui = { group = "androidx.compose.ui", name = "ui" } compose-ui-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } compose-runtime = { group = "androidx.compose.runtime", name = "runtime" } compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "composeMaterial3" } compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivity" } @@ -128,6 +130,7 @@ compose-lottie-animation = { group = "com.airbnb.android", name = "lottie-compos kotest-assertionsCore = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } kotest-property = { module = "io.kotest:kotest-property", version.ref = "kotest" } kotest-runnerJUnit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } +espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }