diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddCategoryTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddCategoryTest.kt index 0c1fe117..a26f33e4 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddCategoryTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddCategoryTest.kt @@ -39,9 +39,10 @@ class AddCategoryTest : BaseUiTest() { val lastColorPosition = ColorMapper.getAvailableColors().size - 1 // Add activities - NavUtils.addActivity(typeName1) - NavUtils.addActivity(typeName2) + testUtils.addActivity(typeName1) + testUtils.addActivity(typeName2) + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() clickOnViewWithText(R.string.categories_add) closeSoftKeyboard() @@ -121,6 +122,7 @@ class AddCategoryTest : BaseUiTest() { @Test fun addCategoryTypesEmpty() { + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() clickOnViewWithText(R.string.categories_add) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt index edf35728..b94129cf 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTest.kt @@ -40,7 +40,7 @@ class AddRecordTest : BaseUiTest() { val comment = "Comment" // Add activity - NavUtils.addActivity(name, color, icon) + testUtils.addActivity(name, color, icon) // Add record NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt index 7f0d6ac9..99c4db92 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/AddRecordTypeTest.kt @@ -44,6 +44,7 @@ class AddRecordTypeTest : BaseUiTest() { val lastIcon = iconMapper.availableIconsNames.values.last() val lastIconPosition = iconMapper.availableIconsNames.size - 1 + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() NavUtils.addCategory(categoryName1) NavUtils.addCategory(categoryName2) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeCategoryTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeCategoryTest.kt index 141f0618..f901bd7c 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeCategoryTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeCategoryTest.kt @@ -37,10 +37,11 @@ class ChangeCategoryTest : BaseUiTest() { val lastColor = ColorMapper.getAvailableColors().last() // Add activities - NavUtils.addActivity(typeName1) - NavUtils.addActivity(typeName2) + testUtils.addActivity(typeName1) + testUtils.addActivity(typeName2) // Add category + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() NavUtils.addCategory(name, firstColor, listOf(typeName1)) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt index ef051212..d09701cc 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt @@ -47,8 +47,8 @@ class ChangeRecordTest : BaseUiTest() { val newComment = "new comment" // Add activities - NavUtils.addActivity(name, firstColor, firstIcon) - NavUtils.addActivity(newName, lastColor, lastIcon) + testUtils.addActivity(name, firstColor, firstIcon) + testUtils.addActivity(newName, lastColor, lastIcon) // Add record NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeUntrackedTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeUntrackedTest.kt index 0368e86c..4fe4e9bc 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeUntrackedTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeUntrackedTest.kt @@ -33,7 +33,7 @@ class ChangeUntrackedTest : BaseUiTest() { val icon = iconMapper.availableIconsNames.values.first() // Add activity - NavUtils.addActivity(name, color, icon) + testUtils.addActivity(name, color, icon) // Open edit view NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/DeleteRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/DeleteRecordTest.kt index e607bcac..6f986ee6 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/DeleteRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/DeleteRecordTest.kt @@ -30,7 +30,7 @@ class DeleteRecordTest : BaseUiTest() { val icon = iconMapper.availableIconsNames.values.first() // Add activity - NavUtils.addActivity(name, color, icon) + testUtils.addActivity(name, color, icon) // Add record NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/MessagesTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/MessagesTest.kt index 2a4c7466..8da4d94f 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/MessagesTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/MessagesTest.kt @@ -1,7 +1,5 @@ package com.example.util.simpletimetracker -import androidx.test.espresso.Espresso.closeSoftKeyboard -import androidx.test.espresso.Espresso.pressBack import androidx.test.ext.junit.runners.AndroidJUnit4 import com.example.util.simpletimetracker.utils.BaseUiTest import com.example.util.simpletimetracker.utils.NavUtils @@ -16,21 +14,16 @@ import org.junit.runner.RunWith class MessagesTest : BaseUiTest() { @Test - fun messages() { - // Activity with no name + fun messageRecordTypeName() { tryAction { clickOnViewWithText(R.string.running_records_add_type) } clickOnViewWithText(R.string.change_record_type_save) toastTextShowing(R.string.change_record_message_choose_name) - closeSoftKeyboard() - pressBack() + } - // Add record + @Test + fun messageRecordActivity() { NavUtils.openRecordsScreen() clickOnViewWithId(R.id.btnRecordAdd) - - // Record with no activity - // Wait for previous message to disappear - Thread.sleep(5000) clickOnViewWithText(R.string.change_record_save) toastTextShowing(R.string.message_choose_type) } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt index 8ec1f9e3..25e5b525 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordTypeCategoryTest.kt @@ -26,6 +26,7 @@ class RecordTypeCategoryTest : BaseUiTest() { val typeName2 = "Type2" // Add category + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() NavUtils.addCategory(categoryName1) NavUtils.addCategory(categoryName2) @@ -33,10 +34,11 @@ class RecordTypeCategoryTest : BaseUiTest() { // Add activities NavUtils.openRunningRecordsScreen() - NavUtils.addActivity(typeName1, categories = listOf(categoryName1)) - NavUtils.addActivity(typeName2, categories = listOf(categoryName2)) + testUtils.addActivity(typeName1, categories = listOf(categoryName1)) + testUtils.addActivity(typeName2, categories = listOf(categoryName2)) // Check first category + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() longClickOnView(withText(categoryName1)) @@ -92,6 +94,7 @@ class RecordTypeCategoryTest : BaseUiTest() { clickOnViewWithText(R.string.change_record_type_save) // Check first category again + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() longClickOnView(withText(categoryName1)) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt index 7d81b7ca..fbc4e9f3 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordsAllTest.kt @@ -22,6 +22,7 @@ import com.example.util.simpletimetracker.utils.clickOnViewWithIdOnPager import com.example.util.simpletimetracker.utils.clickOnViewWithText import com.example.util.simpletimetracker.utils.longClickOnView import com.example.util.simpletimetracker.utils.nestedScrollTo +import com.example.util.simpletimetracker.utils.tryAction import com.example.util.simpletimetracker.utils.withCardColor import com.example.util.simpletimetracker.utils.withPluralText import org.hamcrest.CoreMatchers.allOf @@ -37,7 +38,7 @@ class RecordsAllTest : BaseUiTest() { val comment = "comment" // Add activity - NavUtils.addActivity(name) + testUtils.addActivity(name) // Add records NavUtils.openRecordsScreen() @@ -109,20 +110,20 @@ class RecordsAllTest : BaseUiTest() { val name4 = "WithRecords" // Add activity - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) - NavUtils.addActivity(name3) - NavUtils.addActivity(name4) + testUtils.addActivity(name1) + testUtils.addActivity(name2) + testUtils.addActivity(name3) + testUtils.addActivity(name4) // Delete one activity - longClickOnView(withText(name3)) + tryAction { longClickOnView(withText(name3)) } clickOnViewWithId(R.id.btnChangeRecordTypeDelete) // Add records NavUtils.openRecordsScreen() - NavUtils.addRecord(name1) - NavUtils.addRecord(name2) - NavUtils.addRecord(name4) + testUtils.addRecord(name1) + testUtils.addRecord(name2) + testUtils.addRecord(name4) // Delete another activity NavUtils.openRunningRecordsScreen() @@ -204,7 +205,7 @@ class RecordsAllTest : BaseUiTest() { val name = "Test" // Add activity - NavUtils.addActivity(name) + testUtils.addActivity(name) // Add records NavUtils.openRecordsScreen() @@ -297,6 +298,7 @@ class RecordsAllTest : BaseUiTest() { val categoryName2 = "category2" // Add categories + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() NavUtils.addCategory(categoryName1) NavUtils.addCategory(categoryName2) @@ -304,9 +306,9 @@ class RecordsAllTest : BaseUiTest() { // Add activity NavUtils.openRunningRecordsScreen() - NavUtils.addActivity(typeName1, color1, categories = listOf(categoryName1)) - NavUtils.addActivity(typeName2, color2, categories = listOf(categoryName1)) - NavUtils.addActivity(typeName3, color3, categories = listOf(categoryName2)) + testUtils.addActivity(typeName1, color1, categories = listOf(categoryName1)) + testUtils.addActivity(typeName2, color2, categories = listOf(categoryName1)) + testUtils.addActivity(typeName3, color3, categories = listOf(categoryName2)) // Add records NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt index 5413d138..05be0fdc 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt @@ -26,6 +26,7 @@ import com.example.util.simpletimetracker.utils.clickOnViewWithId import com.example.util.simpletimetracker.utils.clickOnViewWithText import com.example.util.simpletimetracker.utils.drag import com.example.util.simpletimetracker.utils.nestedScrollTo +import com.example.util.simpletimetracker.utils.tryAction import com.example.util.simpletimetracker.utils.unconstrainedClickOnView import org.hamcrest.CoreMatchers.allOf import org.hamcrest.Matcher @@ -42,7 +43,7 @@ class SettingsTest : BaseUiTest() { val icon = iconMapper.availableIconsNames.values.first() // Add activity - NavUtils.addActivity(name, color, icon) + testUtils.addActivity(name, color, icon) // Untracked is shown NavUtils.openRecordsScreen() @@ -62,7 +63,6 @@ class SettingsTest : BaseUiTest() { ) // Add record - NavUtils.openRecordsScreen() NavUtils.addRecord(name) checkViewDoesNotExist( allOf(withText(R.string.untracked_time_name), isCompletelyDisplayed()) @@ -89,12 +89,12 @@ class SettingsTest : BaseUiTest() { val name3 = "Test3" // Add activities - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) - NavUtils.addActivity(name3) + testUtils.addActivity(name1) + testUtils.addActivity(name2) + testUtils.addActivity(name3) // Start timers - clickOnViewWithText(name1) + tryAction { clickOnViewWithText(name1) } clickOnViewWithText(name2) clickOnViewWithText(name3) var startTime = System.currentTimeMillis() @@ -226,11 +226,11 @@ class SettingsTest : BaseUiTest() { val name3 = "Test3" // Add activities - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) - NavUtils.addActivity(name3) + testUtils.addActivity(name1) + testUtils.addActivity(name2) + testUtils.addActivity(name3) - check(name1, name2) { matcher -> isCompletelyLeftOf(matcher) } + tryAction { check(name1, name2) { matcher -> isCompletelyLeftOf(matcher) } } check(name2, name3) { matcher -> isCompletelyLeftOf(matcher) } // Open settings @@ -287,11 +287,11 @@ class SettingsTest : BaseUiTest() { val color2 = ColorMapper.getAvailableColors().last() // Add activities - NavUtils.addActivity(name1, color2) - NavUtils.addActivity(name2, color1) + testUtils.addActivity(name1, color2) + testUtils.addActivity(name2, color1) // Check order - check(name1, name2) { matcher -> isCompletelyLeftOf(matcher) } + tryAction { check(name1, name2) { matcher -> isCompletelyLeftOf(matcher) } } // Check settings NavUtils.openSettingsScreen() @@ -309,8 +309,8 @@ class SettingsTest : BaseUiTest() { val color2 = ColorMapper.getAvailableColors().last() // Add activities - NavUtils.addActivity(name1, color2) - NavUtils.addActivity(name2, color1) + testUtils.addActivity(name1, color2) + testUtils.addActivity(name2, color1) // Change settings NavUtils.openSettingsScreen() @@ -333,9 +333,9 @@ class SettingsTest : BaseUiTest() { val name3 = "Test3" // Add activities - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) - NavUtils.addActivity(name3) + testUtils.addActivity(name1) + testUtils.addActivity(name2) + testUtils.addActivity(name3) // Change settings NavUtils.openSettingsScreen() @@ -383,11 +383,11 @@ class SettingsTest : BaseUiTest() { val name2 = "Test2" // Add activities - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) + testUtils.addActivity(name1) + testUtils.addActivity(name2) // Start one timer - clickOnViewWithText(name1) + tryAction { clickOnViewWithText(name1) } // Change settings NavUtils.openSettingsScreen() @@ -417,11 +417,15 @@ class SettingsTest : BaseUiTest() { val name2 = "Test2" // Add activities - NavUtils.addActivity(name1) - NavUtils.addActivity(name2) + testUtils.addActivity(name1) + testUtils.addActivity(name2) // Start one timer - clickOnViewWithText(name1) + tryAction { clickOnViewWithText(name1) } + + // Add record + testUtils.addRecord(name1) + testUtils.addRecord(name2) // Change settings NavUtils.openSettingsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsDetailTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsDetailTest.kt index 455a49b0..26e6cea7 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsDetailTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsDetailTest.kt @@ -39,11 +39,11 @@ class StatisticsDetailTest : BaseUiTest() { val icon = iconMapper.availableIconsNames.values.first() // Add activity - NavUtils.addActivity(name, color, icon) + testUtils.addActivity(name, color, icon) // Add record NavUtils.openRecordsScreen() - NavUtils.addRecord(name) + testUtils.addRecord(name) // Add record clickOnViewWithId(R.id.btnRecordsContainerPrevious) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt index 4f75cd82..d8a3b74d 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsFilterTest.kt @@ -30,13 +30,13 @@ class StatisticsFilterTest : BaseUiTest() { val lastIcon = iconMapper.availableIconsNames.values.last() // Add activities - NavUtils.addActivity(name, firstColor, firstIcon) - NavUtils.addActivity(newName, lastColor, lastIcon) + testUtils.addActivity(name, firstColor, firstIcon) + testUtils.addActivity(newName, lastColor, lastIcon) // Add records NavUtils.openRecordsScreen() - NavUtils.addRecord(name) - NavUtils.addRecord(newName) + testUtils.addRecord(name) + testUtils.addRecord(newName) NavUtils.openStatisticsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt index d9d0714a..142482fd 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsRangesTest.kt @@ -18,6 +18,7 @@ import com.example.util.simpletimetracker.utils.clickOnView import com.example.util.simpletimetracker.utils.clickOnViewWithId import com.example.util.simpletimetracker.utils.clickOnViewWithText import com.example.util.simpletimetracker.utils.longClickOnViewWithId +import com.example.util.simpletimetracker.utils.tryAction import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.equalTo import org.junit.Test @@ -34,10 +35,10 @@ class StatisticsRangesTest : BaseUiTest() { val name = "Test" // Add activity - NavUtils.addActivity(name) + testUtils.addActivity(name) // Start timer - clickOnViewWithText(name) + tryAction { clickOnViewWithText(name) } clickOnView(allOf(isDescendantOfA(withId(R.id.viewRunningRecordItem)), withText(name))) // Statistics diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsTest.kt index c90fd8a5..698cc637 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/StatisticsTest.kt @@ -34,13 +34,13 @@ class StatisticsTest : BaseUiTest() { val lastIcon = iconMapper.availableIconsNames.values.last() // Add activities - NavUtils.addActivity(name, firstColor, firstIcon) - NavUtils.addActivity(newName, lastColor, lastIcon) + testUtils.addActivity(name, firstColor, firstIcon) + testUtils.addActivity(newName, lastColor, lastIcon) // Add records NavUtils.openRecordsScreen() - NavUtils.addRecord(name) - NavUtils.addRecord(newName) + testUtils.addRecord(name) + testUtils.addRecord(newName) NavUtils.openStatisticsScreen() @@ -213,6 +213,7 @@ class StatisticsTest : BaseUiTest() { val lastColor = ColorMapper.getAvailableColors().last() // Add categories + NavUtils.openSettingsScreen() NavUtils.openCategoriesScreen() NavUtils.addCategory(categoryName1, firstColor) NavUtils.addCategory(categoryName2, lastColor) @@ -221,17 +222,17 @@ class StatisticsTest : BaseUiTest() { // Add activities NavUtils.openRunningRecordsScreen() - NavUtils.addActivity(typeName1, categories = listOf(categoryName1)) - NavUtils.addActivity(typeName2, categories = listOf(categoryName1)) - NavUtils.addActivity(typeName3, categories = listOf(categoryName2)) - NavUtils.addActivity(typeName4, categories = listOf(categoryName1, categoryName2)) + testUtils.addActivity(typeName1, categories = listOf(categoryName1)) + testUtils.addActivity(typeName2, categories = listOf(categoryName1)) + testUtils.addActivity(typeName3, categories = listOf(categoryName2)) + testUtils.addActivity(typeName4, categories = listOf(categoryName1, categoryName2)) // Add records NavUtils.openRecordsScreen() - NavUtils.addRecord(typeName1) - NavUtils.addRecord(typeName2) - NavUtils.addRecord(typeName3) - NavUtils.addRecord(typeName4) + testUtils.addRecord(typeName1) + testUtils.addRecord(typeName2) + testUtils.addRecord(typeName3) + testUtils.addRecord(typeName4) NavUtils.openStatisticsScreen() clickOnViewWithIdOnPager(R.id.btnStatisticsChartFilter) diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ZeroDurationRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ZeroDurationRecordTest.kt index 81b1b1cc..6a83dd2e 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ZeroDurationRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ZeroDurationRecordTest.kt @@ -29,7 +29,7 @@ class ZeroDurationRecordTest : BaseUiTest() { val name = "Name" // Add activity - NavUtils.addActivity(name) + testUtils.addActivity(name) // Add record NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt index 3838c6a8..9929cd97 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/BaseUiTest.kt @@ -33,6 +33,10 @@ open class BaseUiTest { @JvmField val activityScenarioRule = ActivityScenarioRule(MainActivity::class.java) + @Rule + @JvmField + val mRetryTestRule = RetryTestRule() + init { inject() } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt index 8e004f8e..27272e53 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt @@ -35,7 +35,6 @@ object NavUtils { } fun openCategoriesScreen() { - openSettingsScreen() onView(withText(R.string.settings_edit_categories)).perform(nestedScrollTo(), click()) } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/utils/RetryTestRule.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/RetryTestRule.kt new file mode 100644 index 00000000..020bb500 --- /dev/null +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/utils/RetryTestRule.kt @@ -0,0 +1,40 @@ +package com.example.util.simpletimetracker.utils + +import android.util.Log +import org.junit.rules.TestRule +import org.junit.runner.Description +import org.junit.runners.model.Statement + +/** + * Retry test rule used to retry test that failed. + */ +class RetryTestRule(val retryCount: Int = 5) : TestRule { + + private val tag: String = RetryTestRule::class.java.simpleName + + override fun apply(base: Statement, description: Description): Statement { + return statement(base, description) + } + + private fun statement(base: Statement, description: Description): Statement { + return object : Statement() { + @Throws(Throwable::class) + override fun evaluate() { + var caughtThrowable: Throwable? = null + + for (i in 0 until retryCount) { + try { + base.evaluate() + return + } catch (t: Throwable) { + caughtThrowable = t + Log.e(tag, "${description.displayName}: run ${i + 1} failed") + } + } + + Log.e(tag, "${description.displayName}: giving up after $retryCount failures") + throw caughtThrowable!! + } + } + } +} \ No newline at end of file