diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildHelper.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildHelper.kt new file mode 100644 index 0000000000..d54fc41aad --- /dev/null +++ b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildHelper.kt @@ -0,0 +1,24 @@ +package com.itsaky.androidide + +import com.itsaky.androidide.scenarios.InitializationProjectAndCancelingBuildScenario +import com.itsaky.androidide.scenarios.NavigateToMainScreenScenario +import com.itsaky.androidide.screens.TemplateScreen.selectTemplate +import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext + +fun TestContext.navigateToMainScreen() { + step("Initialize the app and navigate to the Main Screen") { + scenario(NavigateToMainScreenScenario()) + } +} + +fun TestContext.selectProjectTemplate(stepTitle: String, templateResId: Int) { + step(stepTitle) { + selectTemplate(templateResId) + } +} + +fun TestContext.initializeProjectAndCancelBuild() { + step("Initialization the project and cancelling the build") { + scenario(InitializationProjectAndCancelingBuildScenario()) + } +} \ No newline at end of file diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithGroovyGradle.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithGroovyGradle.kt new file mode 100644 index 0000000000..95def227fe --- /dev/null +++ b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithGroovyGradle.kt @@ -0,0 +1,210 @@ +package com.itsaky.androidide + +import androidx.test.ext.junit.rules.activityScenarioRule +import com.itsaky.androidide.activities.SplashActivity +import com.itsaky.androidide.screens.HomeScreen.clickCreateProjectHomeScreen +import com.itsaky.androidide.screens.ProjectSettingsScreen.clickCreateProjectProjectSettings +import com.itsaky.androidide.screens.ProjectSettingsScreen.selectJavaLanguage +import com.itsaky.androidide.screens.ProjectSettingsScreen.selectKotlinLanguage +import com.itsaky.androidide.screens.ProjectSettingsScreen.uncheckeKotlinScript +import com.kaspersky.kaspresso.testcases.api.testcase.TestCase +import org.junit.Rule +import org.junit.Test + +class ProjectBuildTestWithGroovyGradle : TestCase() { + + @get:Rule + val activityRule = activityScenarioRule() + + @Test + fun test_projectBuild_emptyProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the empty project", + R.string.template_empty + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_emptyProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the empty project", + R.string.template_empty + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_baseProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the basic project", + R.string.template_basic + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_baseProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the basic project", + R.string.template_basic + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_navigationDrawerProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the navigation drawer project", + R.string.template_navigation_drawer + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_navigationDrawerProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the navigation drawer project", + R.string.template_navigation_drawer + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_bottomNavigationProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the bottom navigation project", + R.string.template_navigation_tabs + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_bottomNavigationProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the bottom navigation project", + R.string.template_navigation_tabs + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_tabbedActivityProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the tabbed activity project", + R.string.template_tabs + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_tabbedActivityProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the tabbed activity project", + R.string.template_tabs + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_noAndroidXProject_java_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the no AndroidX project", + R.string.template_no_AndroidX + ) + selectJavaLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } + + @Test + fun test_projectBuild_noAndroidXProject_kotlin_groovyGradle() { + run { + navigateToMainScreen() + clickCreateProjectHomeScreen() + selectProjectTemplate( + "Select the no AndroidX project", + R.string.template_no_AndroidX + ) + selectKotlinLanguage() + uncheckeKotlinScript() + clickCreateProjectProjectSettings() + initializeProjectAndCancelBuild() + } + } +} \ No newline at end of file diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTest.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithKtsGradle.kt similarity index 87% rename from app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTest.kt rename to app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithKtsGradle.kt index 2a611b2ae0..50d893cb83 100644 --- a/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTest.kt +++ b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTestWithKtsGradle.kt @@ -2,19 +2,15 @@ package com.itsaky.androidide import androidx.test.ext.junit.rules.activityScenarioRule import com.itsaky.androidide.activities.SplashActivity -import com.itsaky.androidide.scenarios.InitializationProjectAndCancelingBuildScenario -import com.itsaky.androidide.scenarios.NavigateToMainScreenScenario import com.itsaky.androidide.screens.HomeScreen.clickCreateProjectHomeScreen import com.itsaky.androidide.screens.ProjectSettingsScreen.clickCreateProjectProjectSettings import com.itsaky.androidide.screens.ProjectSettingsScreen.selectJavaLanguage import com.itsaky.androidide.screens.ProjectSettingsScreen.selectKotlinLanguage -import com.itsaky.androidide.screens.TemplateScreen.selectTemplate import com.kaspersky.kaspresso.testcases.api.testcase.TestCase -import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext import org.junit.Rule import org.junit.Test -class ProjectBuildTest : TestCase() { +class ProjectBuildTestWithKtsGradle : TestCase() { @get:Rule val activityRule = activityScenarioRule() @@ -212,22 +208,4 @@ class ProjectBuildTest : TestCase() { initializeProjectAndCancelBuild() } } - - private fun TestContext.navigateToMainScreen() { - step("Initialize the app and navigate to the Main Screen") { - scenario(NavigateToMainScreenScenario()) - } - } - - private fun TestContext.selectProjectTemplate(stepTitle: String, templateResId: Int) { - step(stepTitle) { - selectTemplate(templateResId) - } - } - - private fun TestContext.initializeProjectAndCancelBuild() { - step("Initialization the project and cancelling the build") { - scenario(InitializationProjectAndCancelingBuildScenario()) - } - } } \ No newline at end of file diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt index 6e36c91c1e..eb95799c07 100644 --- a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt +++ b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt @@ -3,6 +3,7 @@ package com.itsaky.androidide.screens import com.itsaky.androidide.R import com.kaspersky.kaspresso.screens.KScreen import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext +import io.github.kakaocup.kakao.check.KCheckBox import io.github.kakaocup.kakao.spinner.KSpinner import io.github.kakaocup.kakao.spinner.KSpinnerItem import io.github.kakaocup.kakao.text.KButton @@ -23,6 +24,10 @@ object ProjectSettingsScreen : KScreen() { itemTypeBuilder = { itemType(::KSpinnerItem) } ) + val kotlinScriptText = KCheckBox { + withText(R.string.msg_use_kts) + } + fun TestContext.selectJavaLanguage() { step("Select the java language") { ProjectSettingsScreen { @@ -67,4 +72,12 @@ object ProjectSettingsScreen : KScreen() { } } } + + fun TestContext.uncheckeKotlinScript() { + step("Unselect Kotlin Script for Gradle") { + kotlinScriptText { + setChecked(false) + } + } + } } \ No newline at end of file