diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectAndConfigureKotlinGuiTest.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectAndConfigureKotlinGuiTest.kt index af31b2eb26a7..1138e623bbac 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectAndConfigureKotlinGuiTest.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectAndConfigureKotlinGuiTest.kt @@ -7,10 +7,12 @@ import org.junit.Ignore import org.junit.Test class CreateJavaProjectAndConfigureKotlinGuiTest : KotlinGuiTestCase() { + private val testedJdk = "1.8" + @Test @JvmName("kotlin_cfg_jvm_with_lib") fun configureKotlinJvmWithLibInJavaProject() { - createJavaProject(projectFolder) + createJavaProject(projectFolder, testedJdk) configureKotlinJvm(libInPlugin = false) checkKotlinLibInProject( projectPath = projectFolder, @@ -25,7 +27,7 @@ class CreateJavaProjectAndConfigureKotlinGuiTest : KotlinGuiTestCase() { @Test @JvmName("kotlin_cfg_jvm_no_lib") fun configureKotlinJvmInJavaProject() { - createJavaProject(projectFolder) + createJavaProject(projectFolder, testedJdk) configureKotlinJvm(libInPlugin = true) projectStructureDialogScenarios.checkKotlinLibsInStructureFromPlugin( project = kotlinProjects.getValue(Projects.JavaProject), @@ -35,7 +37,7 @@ class CreateJavaProjectAndConfigureKotlinGuiTest : KotlinGuiTestCase() { @Test @JvmName("kotlin_cfg_js_with_lib") fun configureKotlinJSWithLibInJavaProject() { - createJavaProject(projectFolder) + createJavaProject(projectFolder, testedJdk) configureKotlinJs(libInPlugin = false) checkKotlinLibInProject( projectPath = projectFolder, @@ -50,7 +52,7 @@ class CreateJavaProjectAndConfigureKotlinGuiTest : KotlinGuiTestCase() { @Test @JvmName("kotlin_cfg_js_no_lib") fun configureKotlinJSInJavaProject() { - createJavaProject(projectFolder) + createJavaProject(projectFolder, testedJdk) configureKotlinJs(libInPlugin = true) projectStructureDialogScenarios.checkKotlinLibsInStructureFromPlugin( project = kotlinProjects.getValue(Projects.KotlinProjectJs), diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectWithKotlinGuiTest.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectWithKotlinGuiTest.kt index 9bb1a83301bf..720acb60e464 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectWithKotlinGuiTest.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateJavaProjectWithKotlinGuiTest.kt @@ -7,10 +7,12 @@ import com.intellij.testGuiFramework.util.scenarios.projectStructureDialogScenar import org.junit.Test class CreateJavaProjectWithKotlinGuiTest : KotlinGuiTestCase() { + private val testedJdk = "1.8" @Test @JvmName("java_with_jvm") fun createJavaWithKotlinJvmProject() { createJavaProject(projectFolder, + testedJdk, setOf(NewProjectDialogModel.LibraryOrFramework(kotlinProjects.getValue(Projects.JavaProject).frameworkName))) projectStructureDialogScenarios.checkKotlinLibsInStructureFromPlugin( project = kotlinProjects.getValue(Projects.JavaProject), diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateKotlinMPProjectGuiTest.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateKotlinMPProjectGuiTest.kt index 1eb5a8acd015..868ebfdad992 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateKotlinMPProjectGuiTest.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateKotlinMPProjectGuiTest.kt @@ -45,7 +45,8 @@ class CreateKotlinMPProjectGuiTest(private val testParameters: TestParameters) : if (!isIdeFrameRun()) return createKotlinMPProject( projectPath = projectFolder, - templateName = testParameters.project.frameworkName + templateName = testParameters.project.frameworkName, + projectSdk = "1.8" ) waitAMoment() diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateMavenProjectWithKotlinGuiTest.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateMavenProjectWithKotlinGuiTest.kt index 68b4da62c3aa..90958326ebc9 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateMavenProjectWithKotlinGuiTest.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/createProject/CreateMavenProjectWithKotlinGuiTest.kt @@ -37,7 +37,8 @@ class CreateMavenProjectWithKotlinGuiTest(private val testParameters: TestParame projectPath = projectFolder, artifact = projectName, archetype = testParameters.archetype, - kotlinVersion = kotlinVersion) + kotlinVersion = kotlinVersion, + projectSdk = "1.8") waitAMoment() mavenReimport() // TODO: remove extra mavenReimport after GUI-72 fixing diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/CommonKotlinConstants.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/CommonKotlinConstants.kt index 60c297670a94..5d2b9bc21833 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/CommonKotlinConstants.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/CommonKotlinConstants.kt @@ -35,7 +35,9 @@ data class ProjectProperties( // Gradle/Maven based projects: used for multimodule projects val modules: Set = emptySet(), // Idea, Gradle or Maven - val buildSystem: BuildSystem + val buildSystem: BuildSystem, + // project SDK + val projectSdk: String = "1.8" ) : Serializable enum class Projects(val title: String) { diff --git a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/ProjectsWithKotlin.kt b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/ProjectsWithKotlin.kt index 8b68f157ea44..e93f3ed85779 100644 --- a/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/ProjectsWithKotlin.kt +++ b/community-guitests/testSrc/com/intellij/ide/projectWizard/kotlin/model/ProjectsWithKotlin.kt @@ -30,10 +30,11 @@ import org.hamcrest.core.Is.`is` as Matcher_Is */ fun KotlinGuiTestCase.createJavaProject( projectPath: String, + projectSdk: String, framework: LibrariesSet = emptySet()) { welcomePageDialogModel.createNewProject() newProjectDialogModel.assertGroupPresent(NewProjectDialogModel.Groups.Kotlin) - newProjectDialogModel.createJavaProject(projectPath, framework) + newProjectDialogModel.createJavaProject(projectPath, projectSdk, framework) waitAMoment() } @@ -47,11 +48,12 @@ fun KotlinGuiTestCase.createJavaProject( */ fun KotlinGuiTestCase.createGradleProject( projectPath: String, - gradleOptions: NewProjectDialogModel.GradleProjectOptions + gradleOptions: NewProjectDialogModel.GradleProjectOptions, + projectSdk: String ) { welcomePageDialogModel.createNewProject() newProjectDialogModel.assertGroupPresent(NewProjectDialogModel.Groups.Kotlin) - newProjectDialogModel.createGradleProject(projectPath, gradleOptions) + newProjectDialogModel.createGradleProject(projectPath, gradleOptions, projectSdk) } @@ -66,6 +68,7 @@ fun KotlinGuiTestCase.createGradleProject( fun KotlinGuiTestCase.createMavenProject( projectPath: String, artifact: String, + projectSdk: String, archetype: String = "", kotlinVersion: String = "" ) { @@ -78,7 +81,7 @@ fun KotlinGuiTestCase.createMavenProject( archetypeGroup = "org.jetbrains.kotlin:$archetype", archetypeVersion = "$archetype:$kotlinVersion" ) - newProjectDialogModel.createMavenProject(projectPath, mavenOptions) + newProjectDialogModel.createMavenProject(projectPath, mavenOptions, projectSdk) } /** @@ -681,7 +684,8 @@ fun KotlinGuiTestCase.createMavenAndConfigureKotlin( val projectName = testMethod.methodName createMavenProject( projectPath = projectFolder, - artifact = projectName) + artifact = projectName, + projectSdk = project.projectSdk) waitAMoment() when(project.modules.contains(TargetPlatform.JavaScript)){ false -> configureKotlinJvmFromMaven(kotlinVersion) @@ -724,7 +728,9 @@ fun KotlinGuiTestCase.testCreateGradleAndConfigureKotlin( val projectName = testMethod.methodName createGradleProject( projectPath = projectFolder, - gradleOptions = gradleOptions) + gradleOptions = gradleOptions, + projectSdk = project.projectSdk + ) waitAMoment() when { project.modules.contains(TargetPlatform.JVM16) || project.modules.contains(TargetPlatform.JVM18) -> configureKotlinJvmFromGradle(kotlinVersion) @@ -792,14 +798,16 @@ fun ProjectStructureDialogScenarios.checkGradleFacets( fun KotlinGuiTestCase.createKotlinMPProject( projectPath: String, - templateName: String + templateName: String, + projectSdk: String ) { logTestStep("Create new $templateName project") welcomePageDialogModel.createNewProject() newProjectDialogModel.assertGroupPresent(NewProjectDialogModel.Groups.Kotlin) newProjectDialogModel.createKotlinMPProject( projectPath = projectPath, - templateName = templateName + templateName = templateName, + projectSdk = projectSdk ) } @@ -810,7 +818,8 @@ fun KotlinGuiTestCase.testGradleProjectWithKotlin( gradleOptions: NewProjectDialogModel.GradleProjectOptions) { createGradleProject( projectPath = projectFolder, - gradleOptions = gradleOptions + gradleOptions = gradleOptions, + projectSdk = project.projectSdk ) val projectName = testMethod.methodName waitAMoment() diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/GuiTestCaseExt.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/GuiTestCaseExt.kt index 5ec574dc6106..911112cf1d4c 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/GuiTestCaseExt.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/GuiTestCaseExt.kt @@ -333,8 +333,7 @@ fun GuiTestCase.createJdk(jdkPath: String, jdkName: String = ""): String{ lateinit var installedJdkName: String welcomeFrame { actionLink("Configure").click() - popupMenu("Project Defaults").clickSearchedItem() - popupMenu("Project Structure").clickSearchedItem() + popupMenu("Structure for New Projects").clickSearchedItem() logUIStep("Open `$dialogName` dialog") dialog(dialogName) { jList("SDKs").clickItem("SDKs") diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogModel.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogModel.kt index 2d2288524610..396b23c9d8be 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogModel.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogModel.kt @@ -217,6 +217,7 @@ fun LibrariesSet.isSetNotEmpty() = !isSetEmpty() * Note: only one library/framework can be checked! * */ fun NewProjectDialogModel.createJavaProject(projectPath: String, + projectSdk: String, libs: LibrariesSet = emptySet(), template: String = "", basePackage: String = "") { @@ -224,6 +225,7 @@ fun NewProjectDialogModel.createJavaProject(projectPath: String, fileSystemUtils.assertProjectPathExists(projectPath) with(connectDialog()) { selectProjectGroup(NewProjectDialogModel.Groups.Java) + if(projectSdk.isNotEmpty()) selectSdk(projectSdk) if (libs.isSetNotEmpty()) setLibrariesAndFrameworks(libs) else { button(buttonNext).click() @@ -294,11 +296,16 @@ fun NewProjectDialogModel.typeGroupAndArtifact(group: String, artifact: String){ } } -fun NewProjectDialogModel.createGradleProject(projectPath: String, gradleOptions: NewProjectDialogModel.GradleProjectOptions) { +fun NewProjectDialogModel.createGradleProject( + projectPath: String, + gradleOptions: NewProjectDialogModel.GradleProjectOptions, + projectSdk: String +) { with(guiTestCase) { fileSystemUtils.assertProjectPathExists(projectPath) with(connectDialog()) { selectProjectGroup(NewProjectDialogModel.Groups.Gradle) + if(projectSdk.isNotEmpty()) selectSdk(projectSdk) setCheckboxValue(checkKotlinDsl, gradleOptions.useKotlinDsl) if (gradleOptions.framework.isNotEmpty()) { checkboxTree(gradleOptions.framework).check() @@ -358,12 +365,13 @@ fun NewProjectDialogModel.typeProjectNameAndLocation(projectPath: String){ } } -fun NewProjectDialogModel.createMavenProject(projectPath: String, mavenOptions: NewProjectDialogModel.MavenProjectOptions) { +fun NewProjectDialogModel.createMavenProject(projectPath: String, mavenOptions: NewProjectDialogModel.MavenProjectOptions, projectSdk: String) { with(guiTestCase) { fileSystemUtils.assertProjectPathExists(projectPath) with(connectDialog()) { selectProjectGroup(NewProjectDialogModel.Groups.Maven) Pause.pause(2000L) + if(projectSdk.isNotEmpty()) selectSdk(projectSdk) if (mavenOptions.useArchetype) { logUIStep("Set `$checkCreateFromArchetype` checkbox") val archetypeCheckbox = checkbox(checkCreateFromArchetype) @@ -462,7 +470,8 @@ fun NewProjectDialogModel.createKotlinMPProjectDeprecated( fun NewProjectDialogModel.createKotlinMPProject( projectPath: String, - templateName: String + templateName: String, + projectSdk: String ) { with(guiTestCase) { with(connectDialog()) { @@ -470,6 +479,11 @@ fun NewProjectDialogModel.createKotlinMPProject( logUIStep("Select `$templateName` kind of project") jList(templateName).clickItem(templateName) button(buttonNext).click() + val gradleJvm = "Gradle JVM:" + waitForPageTransitionFinished { + combobox(gradleJvm).target().locationOnScreen + } + if(projectSdk.isNotEmpty()) selectSdk(projectSdk, gradleJvm) button(buttonNext).click() typeProjectNameAndLocation(projectPath) logUIStep("Close New Project dialog with Finish") @@ -521,6 +535,7 @@ fun NewProjectDialogModel.assertGroupPresent(group: NewProjectDialogModel.Groups * */ fun NewProjectDialogModel.createProjectInGroup(group: NewProjectDialogModel.Groups, projectPath: String, + projectSdk: String, libs: LibrariesSet) { with(guiTestCase) { fileSystemUtils.assertProjectPathExists(projectPath) @@ -541,12 +556,12 @@ fun NewProjectDialogModel.createProjectInGroup(group: NewProjectDialogModel.Grou } } -fun NewProjectDialogModel.createGroovyProject(projectPath: String, libs: LibrariesSet) { - createProjectInGroup(NewProjectDialogModel.Groups.Groovy, projectPath, libs) +fun NewProjectDialogModel.createGroovyProject(projectPath: String, projectSdk: String, libs: LibrariesSet) { + createProjectInGroup(NewProjectDialogModel.Groups.Groovy, projectPath, projectSdk, libs) } -fun NewProjectDialogModel.createGriffonProject(projectPath: String, libs: LibrariesSet) { - createProjectInGroup(NewProjectDialogModel.Groups.Griffon, projectPath, libs) +fun NewProjectDialogModel.createGriffonProject(projectPath: String, projectSdk: String, libs: LibrariesSet) { + createProjectInGroup(NewProjectDialogModel.Groups.Griffon, projectPath, projectSdk, libs) } fun NewProjectDialogModel.waitLoadingTemplates() { @@ -580,17 +595,17 @@ fun NewProjectDialogModel.selectProjectGroup(group: NewProjectDialogModel.Groups } } -fun NewProjectDialogModel.selectSdk(sdk: String) { +fun NewProjectDialogModel.selectSdk(sdk: String, sdkField: String = "Project SDK:") { with(guiTestCase) { logUIStep("Going to select $sdk as a project SDK") with(connectDialog()) { - val sdkCombo = combobox("Project SDK:") + val sdkCombo = combobox(sdkField) val selectedItem = sdkCombo.listItems().firstOrNull { it.startsWith(sdk) } if (selectedItem != null) sdkCombo.selectItem(selectedItem) else throw IllegalStateException( - "Required SDK $sdk is absent in the \"Project SDK\" list. Found following values: ${sdkCombo.listItems()}") + "Required SDK $sdk is absent in the \"$sdkField\" list. Found following values: ${sdkCombo.listItems()}") } } } diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogScenarios.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogScenarios.kt index 48888a63aee2..c8bd6cc3eaa3 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogScenarios.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/util/scenarios/NewProjectDialogScenarios.kt @@ -14,13 +14,14 @@ class NewProjectDialogScenarios(val testCase: GuiTestCase) : TestUtilsClass(test val GuiTestCase.newProjectDialogScenarios by NewProjectDialogScenarios fun NewProjectDialogScenarios.createJavaProjectScenario(projectPath: String, + projectSdk: String, libs: LibrariesSet = emptySet(), template: String = "", basePackage: String = "") { with(testCase) { fileSystemUtils.assertProjectPathExists(projectPath) welcomePageDialogModel.createNewProject() - newProjectDialogModel.createJavaProject(projectPath, libs, template, basePackage) + newProjectDialogModel.createJavaProject(projectPath, projectSdk, libs, template, basePackage) } } @@ -34,26 +35,27 @@ fun NewProjectDialogScenarios.createJavaProjectScenario(projectPath: String, * */ fun NewProjectDialogScenarios.createProjectInGroupScenario(group: NewProjectDialogModel.Groups, projectPath: String, + projectSdk: String, libs: LibrariesSet = emptySet()) { with(testCase) { fileSystemUtils.assertProjectPathExists(projectPath) welcomePageDialogModel.createNewProject() - newProjectDialogModel.createProjectInGroup(group, projectPath, libs) + newProjectDialogModel.createProjectInGroup(group, projectPath, projectSdk, libs) } } -fun NewProjectDialogScenarios.createGradleProjectScenario(projectPath: String, gradleOptions: NewProjectDialogModel.GradleProjectOptions){ +fun NewProjectDialogScenarios.createGradleProjectScenario(projectPath: String, projectSdk: String, gradleOptions: NewProjectDialogModel.GradleProjectOptions){ with(testCase) { fileSystemUtils.assertProjectPathExists(projectPath) welcomePageDialogModel.createNewProject() - newProjectDialogModel.createGradleProject(projectPath, gradleOptions) + newProjectDialogModel.createGradleProject(projectPath, gradleOptions, projectSdk) } } -fun NewProjectDialogScenarios.createMavenProjectScenario(projectPath: String, mavenOptions: NewProjectDialogModel.MavenProjectOptions){ +fun NewProjectDialogScenarios.createMavenProjectScenario(projectPath: String, projectSdk: String, mavenOptions: NewProjectDialogModel.MavenProjectOptions){ with(testCase) { fileSystemUtils.assertProjectPathExists(projectPath) welcomePageDialogModel.createNewProject() - newProjectDialogModel.createMavenProject(projectPath, mavenOptions) + newProjectDialogModel.createMavenProject(projectPath, mavenOptions, projectSdk) } }