mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gui-tests] PluginsDialogScenarios: changed all scenarios to use PluginDialogFixture, PluginsDialogModel removed.
This commit is contained in:
+8
-8
@@ -13,17 +13,17 @@ import org.junit.Test
|
||||
class InstallPluginGuiTest : KotlinGuiTestCase() {
|
||||
@Test
|
||||
fun installKotlinPlugin() {
|
||||
//TODO: uncomment when new design of Plugins dialog is finished
|
||||
// if (!pluginsDialogScenarios
|
||||
// .isPluginRequiredVersionInstalled(KOTLIN_PLUGIN_NAME, KotlinTestProperties.kotlin_plugin_version_full)) {
|
||||
if (pluginsDialogScenarios.isPluginRequiredVersionInstalled(
|
||||
KOTLIN_PLUGIN_NAME, KotlinTestProperties.kotlin_plugin_version_full
|
||||
).not()) {
|
||||
pluginsDialogScenarios.actionAndRestart {
|
||||
pluginsDialogScenarios.installPluginFromDisk(KotlinTestProperties.kotlin_plugin_install_path)
|
||||
}
|
||||
// assertTrue(
|
||||
// actual = pluginsDialogScenarios
|
||||
// .isPluginRequiredVersionInstalled(KOTLIN_PLUGIN_NAME, KotlinTestProperties.kotlin_plugin_version_full),
|
||||
// message = "Kotlin plugin `${KotlinTestProperties.kotlin_plugin_version_full}` is not installed")
|
||||
// }
|
||||
assertTrue(
|
||||
actual = pluginsDialogScenarios.isPluginRequiredVersionInstalled(
|
||||
KOTLIN_PLUGIN_NAME, KotlinTestProperties.kotlin_plugin_version_full),
|
||||
message = "Kotlin plugin `${KotlinTestProperties.kotlin_plugin_version_full}` is not installed")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+2
-2
@@ -76,10 +76,10 @@ object KotlinTestProperties {
|
||||
get() = getPropertyValue("kotlin.plugin.install.path")
|
||||
|
||||
/**
|
||||
* @return Kotlin plugin version with IDE marker, e.g. `1.2.41-release-IJ2018.2-1`. This value is shown in Plugins dialog.
|
||||
* @return Kotlin plugin version with IDE marker, e.g. `v1.2.41-release-IJ2018.2-1`. This value is shown in Plugins dialog.
|
||||
*/
|
||||
val kotlin_plugin_version_full: String
|
||||
get() = getPropertyValue("kotlin.plugin.version.full")
|
||||
get() = "v${getPropertyValue("kotlin.plugin.version.full")}"
|
||||
|
||||
/**
|
||||
* @return path where the Java is installed
|
||||
|
||||
@@ -118,6 +118,10 @@ open class GuiTestCase {
|
||||
if (!needToKeepDialog) pluginDialog.waitTillGone()
|
||||
}
|
||||
|
||||
fun pluginDialog(timeout: Timeout = Timeouts.defaultTimeout) : PluginDialogFixture{
|
||||
return PluginDialogFixture(robot(), findDialog("Plugins", false, timeout))
|
||||
}
|
||||
|
||||
/**
|
||||
* Waits for a native file chooser, types the path in a textfield and closes it by clicking OK button. Or runs AppleScript if the file chooser
|
||||
* is a Mac native.
|
||||
|
||||
-124
@@ -1,124 +0,0 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.testGuiFramework.util.scenarios
|
||||
|
||||
import com.intellij.testGuiFramework.fixtures.JDialogFixture
|
||||
import com.intellij.testGuiFramework.fixtures.extended.ExtendedButtonFixture
|
||||
import com.intellij.testGuiFramework.framework.Timeouts
|
||||
import com.intellij.testGuiFramework.impl.*
|
||||
import com.intellij.testGuiFramework.util.logInfo
|
||||
import com.intellij.testGuiFramework.util.logTestStep
|
||||
import com.intellij.testGuiFramework.util.logUIStep
|
||||
import com.intellij.testGuiFramework.utils.TestUtilsClass
|
||||
import com.intellij.testGuiFramework.utils.TestUtilsClassCompanion
|
||||
import org.fest.swing.exception.WaitTimedOutError
|
||||
import javax.swing.JDialog
|
||||
|
||||
|
||||
class PluginsDialogModel(val testCase: GuiTestCase) : TestUtilsClass(testCase) {
|
||||
companion object : TestUtilsClassCompanion<PluginsDialogModel>(
|
||||
{ PluginsDialogModel(it) }
|
||||
)
|
||||
}
|
||||
|
||||
val GuiTestCase.pluginsDialogModel: PluginsDialogModel by PluginsDialogModel
|
||||
|
||||
fun PluginsDialogModel.connectDialog(): JDialogFixture =
|
||||
testCase.dialog("Plugins", true, Timeouts.defaultTimeout)
|
||||
|
||||
fun PluginsDialogModel.isPluginInstalled(pluginName: String): Boolean {
|
||||
val result = try {
|
||||
with(testCase) {
|
||||
logTestStep("Search `$pluginName` plugin")
|
||||
val dialog = connectDialog()
|
||||
dialog.table(pluginName, timeout = Timeouts.seconds05).cell(pluginName).click()
|
||||
}
|
||||
true
|
||||
}
|
||||
catch (e: Exception) {
|
||||
testCase.logInfo("No `$pluginName` plugin found")
|
||||
false
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun PluginsDialogModel.isPluginRequiredVersionInstalled(pluginName: String, pluginVersion: String): Boolean =
|
||||
isPluginInstalled(pluginName) && getPluginVersion(pluginName).contains(pluginVersion)
|
||||
|
||||
fun PluginsDialogModel.getPluginVersion(pluginName: String): String {
|
||||
val version = try {
|
||||
with(testCase) {
|
||||
logTestStep("Search `$pluginName` plugin")
|
||||
val dialog = connectDialog()
|
||||
dialog.table(pluginName, timeout = Timeouts.seconds05).cell(pluginName).click()
|
||||
logUIStep("Get installed version of `$pluginName` plugin")
|
||||
dialog.label("Version").text()?.removePrefix("version:")?.trim() ?: ""
|
||||
}
|
||||
}
|
||||
catch (e: Exception) {
|
||||
testCase.logInfo("No `$pluginName` plugin found")
|
||||
""
|
||||
}
|
||||
testCase.logInfo("Found `$version` version of `$pluginName` plugin")
|
||||
return version
|
||||
}
|
||||
|
||||
fun PluginsDialogModel.getPluginButton(pluginName: String, buttonName: String): ExtendedButtonFixture? {
|
||||
return try {
|
||||
with(testCase) {
|
||||
logTestStep("Search `$pluginName` plugin")
|
||||
val dialog = connectDialog()
|
||||
dialog.table(pluginName, timeout = Timeouts.seconds05).cell(pluginName).click()
|
||||
logUIStep("Search `$buttonName` button")
|
||||
dialog.button(buttonName)
|
||||
}
|
||||
}
|
||||
catch (e: Exception) {
|
||||
testCase.logInfo("No `$buttonName` found for `$pluginName` plugin")
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
fun PluginsDialogModel.getUninstallButton(pluginName: String): ExtendedButtonFixture? = getPluginButton(pluginName, "Uninstall")
|
||||
fun PluginsDialogModel.getUpdatesButton(pluginName: String): ExtendedButtonFixture? = getPluginButton(pluginName, "Updates")
|
||||
fun PluginsDialogModel.getRestartButton(pluginName: String): ExtendedButtonFixture? = getPluginButton(pluginName, "Restart IntelliJ IDEA")
|
||||
|
||||
fun PluginsDialogModel.getButton(buttonName: String): ExtendedButtonFixture?{
|
||||
return with(testCase) {
|
||||
connectDialog().button(buttonName)
|
||||
}
|
||||
}
|
||||
fun PluginsDialogModel.pressButton(buttonName: String) {
|
||||
testCase.logUIStep("Press `$buttonName` button")
|
||||
getButton(buttonName)?.click()
|
||||
}
|
||||
|
||||
fun PluginsDialogModel.pressOk(): Unit = pressButton("OK")
|
||||
fun PluginsDialogModel.pressCancel(): Unit = pressButton("Cancel")
|
||||
|
||||
fun PluginsDialogModel.installPluginFromDisk(pluginFileName: String){
|
||||
with(connectDialog()){
|
||||
guiTestCase.logUIStep("Press `Install plugin from disk`")
|
||||
actionButtonByClass("").click()
|
||||
popupMenu("Install Plugin from Disk...").clickSearchedItem()
|
||||
guiTestCase.chooseFileInFileChooser(pluginFileName)
|
||||
pressOk()
|
||||
ensureButtonOkHasPressed()
|
||||
}
|
||||
}
|
||||
|
||||
fun PluginsDialogModel.ensureButtonOkHasPressed() {
|
||||
val dialogTitle = "Plugins"
|
||||
try {
|
||||
testCase.logTestStep("Check that `Plugins` dialog closed")
|
||||
GuiTestUtilKt.waitUntilGone(robot = testCase.robot(),
|
||||
timeout = Timeouts.seconds05,
|
||||
matcher = GuiTestUtilKt.typeMatcher(
|
||||
JDialog::class.java) { it.isShowing && it.title == dialogTitle })
|
||||
}
|
||||
catch (timeoutError: WaitTimedOutError) {
|
||||
with(testCase) {
|
||||
logUIStep("`Plugins` dialog not closed. Press OK again")
|
||||
getButton("OK")?.clickWhenEnabled()
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
-17
@@ -13,6 +13,7 @@ import com.intellij.testGuiFramework.remote.transport.RestartIdeCause
|
||||
import com.intellij.testGuiFramework.remote.transport.TransportMessage
|
||||
import com.intellij.testGuiFramework.util.logInfo
|
||||
import com.intellij.testGuiFramework.util.logTestStep
|
||||
import com.intellij.testGuiFramework.util.logUIStep
|
||||
import com.intellij.testGuiFramework.utils.TestUtilsClass
|
||||
import com.intellij.testGuiFramework.utils.TestUtilsClassCompanion
|
||||
|
||||
@@ -27,20 +28,16 @@ val GuiTestCase.pluginsDialogScenarios: PluginsDialogScenarios by PluginsDialogS
|
||||
fun PluginsDialogScenarios.uninstallPlugin(pluginName: String) {
|
||||
with(testCase) {
|
||||
welcomePageDialogModel.openPluginsDialog()
|
||||
if (pluginsDialogModel.isPluginInstalled(pluginName)) {
|
||||
val uninstallButton = pluginsDialogModel.getUninstallButton(pluginName)
|
||||
if (uninstallButton != null) {
|
||||
logTestStep("Uninstall `$pluginName` plugin")
|
||||
uninstallButton.click()
|
||||
pluginsDialogModel.pressOk()
|
||||
pluginDialog {
|
||||
pluginDetails(pluginName) {
|
||||
if (isPluginInstalled()) {
|
||||
logTestStep("Uninstall `$pluginName` plugin")
|
||||
uninstall()
|
||||
}
|
||||
}
|
||||
else {
|
||||
pluginsDialogModel.pressCancel()
|
||||
}
|
||||
dialog("IDE and Plugin Updates", timeout = Timeouts.seconds05) { button("Postpone").click() }
|
||||
ok()
|
||||
}
|
||||
else
|
||||
pluginsDialogModel.pressCancel()
|
||||
dialog("IDE and Plugin Updates", timeout = Timeouts.seconds05) { button("Postpone").click() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,17 +63,39 @@ fun PluginsDialogScenarios.actionAndRestart(actionFunction: () -> Unit) {
|
||||
fun PluginsDialogScenarios.installPluginFromDisk(pluginFileName: String) {
|
||||
with(testCase) {
|
||||
welcomePageDialogModel.openPluginsDialog()
|
||||
pluginsDialogModel.installPluginFromDisk(pluginFileName)
|
||||
pluginDialog {
|
||||
showInstallPluginFromDiskDialog()
|
||||
installPluginFromDiskDialog {
|
||||
setPath(pluginFileName)
|
||||
clickOk()
|
||||
}
|
||||
ok()
|
||||
}
|
||||
dialog("IDE and Plugin Updates", timeout = Timeouts.seconds05) { button("Postpone").click() }
|
||||
}
|
||||
}
|
||||
|
||||
fun PluginsDialogScenarios.isPluginRequiredVersionInstalled(pluginName: String, pluginVersion: String): Boolean {
|
||||
var result = false
|
||||
var version = ""
|
||||
with(testCase) {
|
||||
welcomePageDialogModel.openPluginsDialog()
|
||||
result = pluginsDialogModel.isPluginRequiredVersionInstalled(pluginName, pluginVersion)
|
||||
pluginsDialogModel.pressCancel()
|
||||
pluginDialog {
|
||||
showInstalledPlugins()
|
||||
cancel()
|
||||
}
|
||||
welcomePageDialogModel.openPluginsDialog()
|
||||
testCase.logUIStep("Get version of `$pluginName` plugin")
|
||||
pluginDialog {
|
||||
if (isPluginInstalled(pluginName)) {
|
||||
pluginDetails(pluginName) {
|
||||
version = pluginVersion()
|
||||
testCase.logInfo("Found `$version` version of `$pluginName` plugin")
|
||||
}
|
||||
}
|
||||
else
|
||||
testCase.logInfo("No `$pluginName` plugin")
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
return result
|
||||
return version == pluginVersion
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.testGuiFramework.util.scenarios
|
||||
|
||||
import com.intellij.testGuiFramework.fixtures.JDialogFixture
|
||||
import com.intellij.testGuiFramework.fixtures.PluginDialogFixture
|
||||
import com.intellij.testGuiFramework.fixtures.WelcomeFrameFixture
|
||||
import com.intellij.testGuiFramework.impl.GuiTestCase
|
||||
import com.intellij.testGuiFramework.util.logTestStep
|
||||
@@ -30,10 +30,10 @@ fun WelcomePageDialogModel.createNewProject() {
|
||||
testCase.newProjectDialogModel.waitLoadingTemplates()
|
||||
}
|
||||
|
||||
fun WelcomePageDialogModel.openPluginsDialog():JDialogFixture{
|
||||
fun WelcomePageDialogModel.openPluginsDialog(): PluginDialogFixture {
|
||||
with(testCase) {
|
||||
logTestStep("Open `Plugins` dialog")
|
||||
WelcomeFrameFixture.findSimple().openPluginsDialog()
|
||||
return pluginsDialogModel.connectDialog()
|
||||
return pluginDialog()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user