Skip to content

Commit efe78f7

Browse files
committed
add marathon for ui tests
1 parent ce729e4 commit efe78f7

File tree

9 files changed

+39
-4
lines changed

9 files changed

+39
-4
lines changed

app/build.gradle.kts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
alias(libs.plugins.kotlin)
77
alias(libs.plugins.ksp)
88
alias(libs.plugins.hilt)
9+
alias(libs.plugins.marathon)
910
}
1011

1112
applyAndroidLibrary()
@@ -139,4 +140,15 @@ dependencies {
139140
androidTestImplementation(libs.uitest.espressoContrib)
140141
androidTestImplementation(libs.uitest.dagger)
141142
androidTestImplementation(libs.uitest.room)
143+
androidTestImplementation(libs.uitest.rules)
144+
}
145+
146+
marathon {
147+
name = "stt tests"
148+
retryStrategy {
149+
fixedQuota {
150+
retryPerTestQuota = 3
151+
totalAllowedRetryQuota = 100
152+
}
153+
}
142154
}

app/src/androidTest/java/com/example/util/simpletimetracker/ActivityFilterTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ class ActivityFilterTest : BaseUiTest() {
369369
color = firstColor,
370370
names = listOf(categoryName1, categoryName2),
371371
)
372+
Thread.sleep(1000)
372373

373374
// Check filtering
374375
tryAction { checkFilter(filterByActivity1, viewsR.color.colorFiltered) }

app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ class AddRecordTest : BaseUiTest() {
179179
// Set comment
180180
clickOnViewWithText(coreR.string.change_record_comment_field)
181181
typeTextIntoView(changeRecordR.id.etChangeRecordCommentField, comment)
182+
Thread.sleep(1000) // For keyboard to open.
182183
closeSoftKeyboard()
183184
tryAction { checkPreviewUpdated(hasDescendant(withText(comment))) }
184185
clickOnViewWithText(coreR.string.change_record_comment_field)

app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ class ChangeRunningRecordTest : BaseUiTest() {
159159
checkViewIsDisplayed(allOf(withId(changeRecordR.id.tvChangeRecordTimeStartedTime), withText(timeStarted.time)))
160160
clickOnViewWithText(coreR.string.change_record_comment_field)
161161
typeTextIntoView(changeRecordR.id.etChangeRecordCommentField, comment)
162+
Thread.sleep(1000) // For keyboard to open.
162163
clickOnViewWithText(coreR.string.change_record_comment_field)
163164

164165
// Preview is updated

app/src/androidTest/java/com/example/util/simpletimetracker/RecordActionsDuplicateTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ class RecordActionsDuplicateTest : BaseUiTest() {
263263
clickOnRecyclerItem(changeRecordR.id.rvChangeRecordType, withText(name))
264264
clickOnViewWithText(coreR.string.change_record_comment_field)
265265
typeTextIntoView(changeRecordR.id.etChangeRecordCommentField, comment)
266+
Thread.sleep(1000) // For keyboard top open.
266267
closeSoftKeyboard()
267268
clickOnViewWithText(coreR.string.change_record_comment_field)
268269

app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.example.util.simpletimetracker.utils
22

3+
import android.Manifest
34
import android.content.Context
5+
import android.os.Build
46
import androidx.annotation.ColorInt
57
import androidx.emoji2.bundled.BundledEmojiCompatConfig
68
import androidx.emoji2.text.EmojiCompat
79
import androidx.test.core.app.ApplicationProvider
810
import androidx.test.espresso.IdlingRegistry
911
import androidx.test.ext.junit.rules.ActivityScenarioRule
1012
import androidx.test.platform.app.InstrumentationRegistry
13+
import androidx.test.rule.GrantPermissionRule
1114
import com.example.util.simpletimetracker.core.R
1215
import com.example.util.simpletimetracker.core.interactor.LanguageInteractor
1316
import com.example.util.simpletimetracker.core.mapper.ColorMapper
@@ -16,9 +19,9 @@ import com.example.util.simpletimetracker.core.mapper.IconImageMapper
1619
import com.example.util.simpletimetracker.core.mapper.TimeMapper
1720
import com.example.util.simpletimetracker.core.utils.CountingIdlingResourceProvider
1821
import com.example.util.simpletimetracker.core.utils.TestUtils
19-
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
20-
import com.example.util.simpletimetracker.domain.complexRule.repo.ComplexRuleRepo
2122
import com.example.util.simpletimetracker.domain.backup.repo.BackupRepo
23+
import com.example.util.simpletimetracker.domain.complexRule.repo.ComplexRuleRepo
24+
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
2225
import com.example.util.simpletimetracker.domain.recordType.repo.RecordTypeRepo
2326
import com.example.util.simpletimetracker.feature_records.view.RecordsContainerFragment
2427
import com.example.util.simpletimetracker.feature_settings.viewModel.delegate.SettingsFileWorkDelegate
@@ -73,6 +76,14 @@ open class BaseUiTest {
7376
val mRetryTestRule = RetryTestRule()
7477

7578
@get:Rule(order = 2)
79+
val permissionRule: GrantPermissionRule =
80+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
81+
GrantPermissionRule.grant(Manifest.permission.POST_NOTIFICATIONS)
82+
} else {
83+
GrantPermissionRule.grant()
84+
}
85+
86+
@get:Rule(order = 3)
7687
val activityScenarioRule = ActivityScenarioRule(MainActivity::class.java)
7788

7889
val firstColor: Int

app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ object NavUtils {
243243

244244
// Name
245245
typeTextIntoView(changeCategoryR.id.etChangeCategoryName, name)
246+
Thread.sleep(1000) // For keyboard to open.
246247

247248
// Color
248249
if (color != null) {

features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/interactor/ChangeRunningRecordViewDataInteractor.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.feature_change_running_record.interac
33
import com.example.util.simpletimetracker.core.interactor.FilterGoalsByDayOfWeekInteractor
44
import com.example.util.simpletimetracker.core.interactor.GetRunningRecordViewDataMediator
55
import com.example.util.simpletimetracker.core.mapper.ChangeRecordDateTimeMapper
6+
import com.example.util.simpletimetracker.domain.extension.dropMillis
67
import com.example.util.simpletimetracker.domain.extension.orZero
78
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
89
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
@@ -64,7 +65,9 @@ class ChangeRunningRecordViewDataInteractor @Inject constructor(
6465
ChangeRecordDateTimeMapper.Param.DateTime(record.timeStarted)
6566
}
6667
is ChangeRecordDateTimeFieldsState.State.Duration -> {
67-
ChangeRecordDateTimeMapper.Param.Duration(record.duration)
68+
ChangeRecordDateTimeMapper.Param.Duration(
69+
record.timeEnded - record.timeStarted.dropMillis(),
70+
)
6871
}
6972
},
7073
field = ChangeRecordDateTimeMapper.Field.Start,

gradle/libs.versions.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ gradle = "8.4.0"
33
kotlin = "1.9.25"
44
ktlint = "12.1.0"
55
ksp = "1.9.25-1.0.20" # same as kotlin
6+
marathon = "0.10.3"
67

78
coroutines = "1.6.4"
89
timber = "4.7.1"
@@ -47,6 +48,7 @@ espresso = "3.5.0"
4748
mockito = "5.14.2"
4849
mockitoKotlin = "5.4.0"
4950
coroutinesTest = "1.7.1"
51+
rules = "1.5.0"
5052

5153
[libraries]
5254
kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
@@ -120,6 +122,7 @@ uitest-espressoContrib = { group = "androidx.test.espresso", name = "espresso-co
120122
uitest-espressoIdling = { group = "androidx.test.espresso", name = "espresso-idling-resource", version.ref = "espresso" }
121123
uitest-dagger = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "dagger" }
122124
uitest-room = { group = "androidx.room", name = "room-testing", version.ref = "room" }
125+
uitest-rules = { group = "androidx.test", name = "rules", version.ref = "rules" }
123126

124127
[plugins]
125128
gradleApplication = { id = "com.android.application", version.ref = "gradle" }
@@ -130,4 +133,5 @@ kotlinParcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref =
130133
javaLibrary = { id = "java-library" }
131134
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
132135
hilt = { id = "com.google.dagger.hilt.android", version.ref = "dagger" }
133-
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
136+
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
137+
marathon = { id = "com.malinskiy.marathon", version.ref = "marathon" }

0 commit comments

Comments
 (0)