diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 1700279aab..0000000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 8690009a66..0000000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ 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/ProjectBuildTest.kt
index a22193f612..52b6719209 100644
--- a/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTest.kt
+++ b/app/src/androidTest/kotlin/com/itsaky/androidide/ProjectBuildTest.kt
@@ -4,11 +4,11 @@ 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
-import com.itsaky.androidide.screens.ProjectSettingsScreen
-import com.itsaky.androidide.screens.TemplateScreen
+import com.itsaky.androidide.screens.HomeScreen.clickCreateProject
+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 io.github.kakaocup.kakao.spinner.KSpinnerItem
import org.junit.Rule
import org.junit.Test
@@ -23,47 +23,11 @@ class ProjectBuildTest : TestCase() {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
- step("Click create project") {
- flakySafely(60000) {
- HomeScreen {
- rvActions {
- childAt(0) {
- click()
- }
- }
- }
- }
- }
+ clickCreateProject()
step("Select the basic project") {
- flakySafely(10000) {
- TemplateScreen {
- rvTemplates {
- childWith {
- withDescendant { withText(R.string.template_basic) }
- } perform { click() }
- }
- }
- }
- }
- step("Select the java language") {
- ProjectSettingsScreen {
- spinner {
- isVisible()
- open()
-
- childAt(0) {
- isVisible()
- hasText("Java")
- click()
- }
- }
-
- createProjectButton {
- isVisible()
- click()
- }
- }
+ selectTemplate(R.string.template_basic)
}
+ selectJavaLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
@@ -76,49 +40,45 @@ class ProjectBuildTest : TestCase() {
step("Initialize the app") {
scenario(NavigateToMainScreenScenario())
}
- step("Click create project") {
- flakySafely(60000) {
- HomeScreen {
- rvActions {
- childAt(0) {
- click()
- }
- }
- }
- }
- }
+ clickCreateProject()
step("Select the basic project") {
- flakySafely(10000) {
- TemplateScreen {
- rvTemplates {
- childWith {
- withDescendant { withText(R.string.template_basic) }
- } perform { click() }
- }
- }
- }
+ selectTemplate(R.string.template_basic)
}
- step("Select the kotlin language") {
- flakySafely {
- ProjectSettingsScreen {
- spinner {
- isVisible()
- open()
+ selectKotlinLanguage()
+ step("Initialization the project and cancelling the build") {
+ scenario(InitializationProjectAndCancelingBuildScenario())
+ }
+ }
+ }
- childAt(1) {
- isVisible()
- hasText("Kotlin")
- click()
- }
- }
+ @Test
+ fun test_projectBuild_navigationDrawerProject_java() {
+ run {
+ step("Initialize the app") {
+ scenario(NavigateToMainScreenScenario())
+ }
+ clickCreateProject()
+ step("Select the navigation drawer project") {
+ selectTemplate(R.string.template_navigation_drawer)
+ }
+ selectJavaLanguage()
+ step("Initialization the project and cancelling the build") {
+ scenario(InitializationProjectAndCancelingBuildScenario())
+ }
+ }
+ }
- createProjectButton {
- isVisible()
- click()
- }
- }
- }
+ @Test
+ fun test_projectBuild_navigationDrawerProject_kotlin() {
+ run {
+ step("Initialize the app") {
+ scenario(NavigateToMainScreenScenario())
+ }
+ clickCreateProject()
+ step("Select the navigation drawer project") {
+ selectTemplate(R.string.template_navigation_drawer)
}
+ selectKotlinLanguage()
step("Initialization the project and cancelling the build") {
scenario(InitializationProjectAndCancelingBuildScenario())
}
diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/scenarios/InitializationProjectAndCancelingBuildScenario.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/scenarios/InitializationProjectAndCancelingBuildScenario.kt
index ff508a9728..1da6fabcd0 100644
--- a/app/src/androidTest/kotlin/com/itsaky/androidide/scenarios/InitializationProjectAndCancelingBuildScenario.kt
+++ b/app/src/androidTest/kotlin/com/itsaky/androidide/scenarios/InitializationProjectAndCancelingBuildScenario.kt
@@ -47,7 +47,7 @@ class InitializationProjectAndCancelingBuildScenario : Scenario() {
}
}
step("Confirm that the install dialog appears and click cancel") {
- flakySafely(120000) {
+ flakySafely(180000) {
val installDialog =
device.uiDevice.findObject(UiSelector().text("Do you want to install this app?"))
val cancelButton = device.uiDevice.findObject(UiSelector().text("Cancel"))
diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/HomeScreen.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/HomeScreen.kt
index c5f3ee12af..1223db91a2 100644
--- a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/HomeScreen.kt
+++ b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/HomeScreen.kt
@@ -3,6 +3,7 @@ package com.itsaky.androidide.screens
import android.view.View
import com.itsaky.androidide.R
import com.kaspersky.kaspresso.screens.KScreen
+import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext
import io.github.kakaocup.kakao.recycler.KRecyclerItem
import io.github.kakaocup.kakao.recycler.KRecyclerView
import io.github.kakaocup.kakao.text.KButton
@@ -22,4 +23,18 @@ object HomeScreen : KScreen() {
val button = KButton(matcher) { withId(R.id.itemButton) }
}
+
+ fun TestContext.clickCreateProject() {
+ step("Click create project") {
+ flakySafely(60000) {
+ HomeScreen {
+ rvActions {
+ childAt(0) {
+ click()
+ }
+ }
+ }
+ }
+ }
+ }
}
\ 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 360b7c1f48..3587965c56 100644
--- a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt
+++ b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/ProjectSettingsScreen.kt
@@ -2,6 +2,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.spinner.KSpinner
import io.github.kakaocup.kakao.spinner.KSpinnerItem
import io.github.kakaocup.kakao.text.KButton
@@ -21,4 +22,50 @@ object ProjectSettingsScreen : KScreen() {
builder = { withHint("Project Language") },
itemTypeBuilder = { itemType(::KSpinnerItem) }
)
+
+ fun TestContext.selectJavaLanguage() {
+ step("Select the java language") {
+ ProjectSettingsScreen {
+ spinner {
+ isVisible()
+ open()
+
+ childAt(0) {
+ isVisible()
+ hasText("Java")
+ click()
+ }
+ }
+
+ createProjectButton {
+ isVisible()
+ click()
+ }
+ }
+ }
+ }
+
+ fun TestContext.selectKotlinLanguage() {
+ step("Select the kotlin language") {
+ flakySafely {
+ ProjectSettingsScreen {
+ spinner {
+ isVisible()
+ open()
+
+ childAt(1) {
+ isVisible()
+ hasText("Kotlin")
+ click()
+ }
+ }
+
+ createProjectButton {
+ isVisible()
+ click()
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/TemplateScreen.kt b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/TemplateScreen.kt
index 39461a753b..224b6d19b3 100644
--- a/app/src/androidTest/kotlin/com/itsaky/androidide/screens/TemplateScreen.kt
+++ b/app/src/androidTest/kotlin/com/itsaky/androidide/screens/TemplateScreen.kt
@@ -3,6 +3,7 @@ package com.itsaky.androidide.screens
import android.view.View
import com.itsaky.androidide.R
import com.kaspersky.kaspresso.screens.KScreen
+import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext
import io.github.kakaocup.kakao.recycler.KRecyclerItem
import io.github.kakaocup.kakao.recycler.KRecyclerView
import io.github.kakaocup.kakao.text.KTextView
@@ -23,4 +24,16 @@ object TemplateScreen : KScreen() {
val nameTemplate = KTextView(matcher) { withId(R.id.template_name) }
}
+
+ fun TestContext.selectTemplate(templateResId: Int) {
+ flakySafely(10000) {
+ TemplateScreen {
+ rvTemplates {
+ childWith {
+ withDescendant { withText(templateResId) }
+ } perform { click() }
+ }
+ }
+ }
+ }
}
\ No newline at end of file