Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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<Unit>.navigateToMainScreen() {
step("Initialize the app and navigate to the Main Screen") {
scenario(NavigateToMainScreenScenario())
}
}

fun TestContext<Unit>.selectProjectTemplate(stepTitle: String, templateResId: Int) {
step(stepTitle) {
selectTemplate(templateResId)
}
}

fun TestContext<Unit>.initializeProjectAndCancelBuild() {
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I understand this file contains all groovy tests. And ProjectBuildTest has all gradle.kts test. If so can you later rename ProjectBuildTest to ProjectBuildTestWithKtsGradle?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Original file line number Diff line number Diff line change
@@ -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<SplashActivity>()

@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()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<SplashActivity>()
Expand Down Expand Up @@ -212,22 +208,4 @@ class ProjectBuildTest : TestCase() {
initializeProjectAndCancelBuild()
}
}

private fun TestContext<Unit>.navigateToMainScreen() {
step("Initialize the app and navigate to the Main Screen") {
scenario(NavigateToMainScreenScenario())
}
}

private fun TestContext<Unit>.selectProjectTemplate(stepTitle: String, templateResId: Int) {
step(stepTitle) {
selectTemplate(templateResId)
}
}

private fun TestContext<Unit>.initializeProjectAndCancelBuild() {
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -23,6 +24,10 @@ object ProjectSettingsScreen : KScreen<ProjectSettingsScreen>() {
itemTypeBuilder = { itemType(::KSpinnerItem) }
)

val kotlinScriptText = KCheckBox {
withText(R.string.msg_use_kts)
}

fun TestContext<Unit>.selectJavaLanguage() {
step("Select the java language") {
ProjectSettingsScreen {
Expand Down Expand Up @@ -67,4 +72,12 @@ object ProjectSettingsScreen : KScreen<ProjectSettingsScreen>() {
}
}
}

fun TestContext<Unit>.uncheckeKotlinScript() {
step("Unselect Kotlin Script for Gradle") {
kotlinScriptText {
setChecked(false)
}
}
}
}