[gui-test] explicitly specified project sdk in all kinds of projects (due to GUI-210)

This commit is contained in:
Viktoria.Shirunova
2018-12-01 13:17:05 +03:00
parent a63f799e72
commit 47c6e5dd7a
9 changed files with 67 additions and 34 deletions
@@ -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),
@@ -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),
@@ -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()
@@ -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
@@ -35,7 +35,9 @@ data class ProjectProperties(
// Gradle/Maven based projects: used for multimodule projects
val modules: Set<TargetPlatform> = 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) {
@@ -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()
@@ -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")
@@ -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()}")
}
}
}
@@ -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)
}
}