diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestBuildConstants.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestBuildConstants.java index 9beb59461f..a41bacfe6d 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestBuildConstants.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestBuildConstants.java @@ -15,6 +15,6 @@ public class TestBuildConstants { public static final String BUILD_SUCCESS = "[INFO] BUILD SUCCESS"; public static final String BUILD_FAILED = "[INFO] BUILD FAILURE"; public static final String SERVER_STARTUP_IN = "Server startup in"; - public static final String LISTENING_AT_ADDRESS_8000 = - "Listening for transport dt_socket at address: 8000"; + public static final String LISTENING_AT_ADDRESS = "Listening for transport dt_socket at address"; + public static final String LISTENING_AT_ADDRESS_8000 = LISTENING_AT_ADDRESS + ": 8000"; } diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestCommandsConstants.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestCommandsConstants.java index 61478579c4..96a8f6b889 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestCommandsConstants.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestCommandsConstants.java @@ -17,6 +17,7 @@ public interface TestCommandsConstants { String GWT = "gwt"; String RUN_COMMAND = "run"; String BUILD_COMMAND = "build"; + String CLEAN_BUILD_COMMAND = "clean build"; String DEBUG_COMMAND = "debug"; String BUILD_AND_RUN_COMMAND = "build and run"; String STOP_TOMCAT_COMMAND = "stop tomcat"; diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestIntelligentCommandsConstants.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestIntelligentCommandsConstants.java index 592472a5a5..21645b1a97 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestIntelligentCommandsConstants.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/core/constant/TestIntelligentCommandsConstants.java @@ -24,9 +24,11 @@ public final class TestIntelligentCommandsConstants { RUN_COMMAND_ITEM("%s:run"), BUILD_COMMAND_ITEM("%s:build"), BUILD_AND_RUN_COMMAND_ITEM("%s:build and run"), + BUILD_AND_DEPLOY_COMMAND_ITEM("%s:build and deploy"), STOP_TOMCAT_COMMAND_ITEM("%s:stop tomcat"), RUN_TOMCAT_COMMAND_ITEM("%s:run tomcat"), - DEBUG_COMMAND_ITEM("%s:debug"); + DEBUG_COMMAND_ITEM("%s:debug"), + INSTALL_DEPENDENCIES_COMMAND_ITEM("%s:install dependencies"); private final String itemTemplate; diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Consoles.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Consoles.java index 76bc83afd4..51b25bed74 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Consoles.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Consoles.java @@ -480,6 +480,15 @@ public class Consoles { .click(); } + public void executeCommandFromProcessesArea( + String machineName, + ContextMenuCommandGoals commandGoal, + String commandName, + String expectedMessageInConsole) { + startCommandFromProcessesArea(machineName, commandGoal, commandName); + waitExpectedTextIntoConsole(expectedMessageInConsole); + } + public void startTerminalFromProcessesArea(String machineName) { WebElement machine = redrawDriverWait.until( diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Ide.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Ide.java index 2bfba84038..a2fd6a685c 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Ide.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/Ide.java @@ -76,9 +76,13 @@ public class Ide { } public String switchToIdeAndWaitWorkspaceIsReadyToUse() { + return switchToIdeAndWaitWorkspaceIsReadyToUse(APPLICATION_START_TIMEOUT_SEC); + } + + public String switchToIdeAndWaitWorkspaceIsReadyToUse(int timeoutInSec) { String currentWindow = seleniumWebDriverHelper.switchToIdeFrameAndWaitAvailability(); toastLoader.waitToastLoaderAndClickStartButton(); - waitOpenedWorkspaceIsReadyToUse(APPLICATION_START_TIMEOUT_SEC); + waitOpenedWorkspaceIsReadyToUse(timeoutInSec); return currentWindow; } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromAndroidStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromAndroidStackTest.java new file mode 100644 index 0000000000..3a6a930d24 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromAndroidStackTest.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.BUILD_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.RUN_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.ANDROID; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromAndroidStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String MOBILE_ANDROID_HELLO_WORLD = "mobile-android-hello-world"; + private static final String MOBILE_ANDROID_SIMPLE = "mobile-android-simple"; + + private List projects = + ImmutableList.of(MOBILE_ANDROID_HELLO_WORLD, MOBILE_ANDROID_SIMPLE); + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromAndroidStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects(ANDROID, WORKSPACE_NAME, projects); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(MOBILE_ANDROID_HELLO_WORLD); + projectExplorer.waitProjectInitialization(MOBILE_ANDROID_SIMPLE); + } + + @Test(priority = 1) + public void checkMobileAndroidHelloWorldProjectCommands() { + consoles.executeCommandFromProjectExplorer( + MOBILE_ANDROID_HELLO_WORLD, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + MOBILE_ANDROID_HELLO_WORLD, + RUN_GOAL, + RUN_COMMAND_ITEM.getItem(MOBILE_ANDROID_HELLO_WORLD), + BUILD_SUCCESS); + } + + @Test(priority = 1) + public void checkMobileAndroidSimpleProjectCommands() { + consoles.executeCommandFromProjectExplorer( + MOBILE_ANDROID_SIMPLE, + RUN_GOAL, + BUILD_COMMAND_ITEM.getItem(MOBILE_ANDROID_SIMPLE), + BUILD_SUCCESS); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromBlankStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromBlankStackTest.java index 42e23403bb..90e9f27b1e 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromBlankStackTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromBlankStackTest.java @@ -11,44 +11,32 @@ package org.eclipse.che.selenium.stack; import static org.eclipse.che.commons.lang.NameGenerator.generate; -import static org.eclipse.che.selenium.pageobject.ProjectExplorer.FolderTypes.PROJECT_FOLDER; import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.BLANK; import com.google.inject.Inject; import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; import org.eclipse.che.selenium.core.user.DefaultTestUser; -import org.eclipse.che.selenium.core.webdriver.SeleniumWebDriverHelper; import org.eclipse.che.selenium.pageobject.CodenvyEditor; import org.eclipse.che.selenium.pageobject.Ide; -import org.eclipse.che.selenium.pageobject.MavenPluginStatusBar; -import org.eclipse.che.selenium.pageobject.NotificationsPopupPanel; import org.eclipse.che.selenium.pageobject.ProjectExplorer; -import org.eclipse.che.selenium.pageobject.ToastLoader; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; -import org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace; -import org.eclipse.che.selenium.pageobject.dashboard.ProjectSourcePage; -import org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspaces; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** @author Skoryk Serhii */ public class CreateWorkspaceFromBlankStackTest { + private static final String WORKSPACE_NAME = generate("workspace", 4); private static final String PROJECT_NAME = "blank-project"; @Inject private Ide ide; @Inject private Dashboard dashboard; @Inject private CodenvyEditor editor; - @Inject private Workspaces workspaces; - @Inject private ToastLoader toastLoader; - @Inject private NewWorkspace newWorkspace; @Inject private DefaultTestUser defaultTestUser; @Inject private ProjectExplorer projectExplorer; - @Inject private ProjectSourcePage projectSourcePage; - @Inject private MavenPluginStatusBar mavenPluginStatusBar; - @Inject private NotificationsPopupPanel notificationsPopupPanel; - @Inject private SeleniumWebDriverHelper seleniumWebDriverHelper; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; @Inject private TestWorkspaceServiceClient workspaceServiceClient; @BeforeClass @@ -63,46 +51,18 @@ public class CreateWorkspaceFromBlankStackTest { @Test public void createWorkspaceFromBlankStackTest() { - createWorkspaceWithProjectFromStack(BLANK, WORKSPACE_NAME, PROJECT_NAME); + createWorkspaceHelper.createWorkspaceFromStackWithProject(BLANK, WORKSPACE_NAME, PROJECT_NAME); - switchToIdeAndWaitWorkspaceIsReadyToUse(); + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); - waitProjectInitialization(PROJECT_NAME); + projectExplorer.waitProjectInitialization(PROJECT_NAME); + } + @Test(priority = 1) + public void checkBlankProjectCommands() { projectExplorer.openItemByPath(PROJECT_NAME); projectExplorer.openItemByPath(PROJECT_NAME + "/README.md"); editor.waitActive(); editor.waitTabIsPresent("README.md"); } - - private void createWorkspaceWithProjectFromStack( - NewWorkspace.Stack stack, String workspaceName, String projectName) { - dashboard.waitDashboardToolbarTitle(); - dashboard.selectWorkspacesItemOnDashboard(); - workspaces.clickOnAddWorkspaceBtn(); - newWorkspace.waitToolbar(); - - newWorkspace.clickOnAllStacksTab(); - newWorkspace.selectStack(stack); - newWorkspace.typeWorkspaceName(workspaceName); - projectSourcePage.clickOnAddOrImportProjectButton(); - projectSourcePage.selectSample(projectName); - projectSourcePage.clickOnAddProjectButton(); - - newWorkspace.clickOnCreateButtonAndOpenInIDE(); - } - - private void switchToIdeAndWaitWorkspaceIsReadyToUse() { - seleniumWebDriverHelper.switchToIdeFrameAndWaitAvailability(); - toastLoader.waitToastLoaderAndClickStartButton(); - ide.waitOpenedWorkspaceIsReadyToUse(); - } - - private void waitProjectInitialization(String projectName) { - projectExplorer.waitItem(projectName); - notificationsPopupPanel.waitPopupPanelsAreClosed(); - mavenPluginStatusBar.waitClosingInfoPanel(); - projectExplorer.waitDefinedTypeOfFolder(projectName, PROJECT_FOLDER); - notificationsPopupPanel.waitPopupPanelsAreClosed(); - } } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosBlankStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosBlankStackTest.java new file mode 100644 index 0000000000..ca1ff9bb68 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosBlankStackTest.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.CENTOS_BLANK; + +import com.google.inject.Inject; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.CodenvyEditor; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromCentosBlankStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String PROJECT_NAME = "blank-project"; + + @Inject private Ide ide; + @Inject private Dashboard dashboard; + @Inject private CodenvyEditor editor; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void createWorkspaceFromCentosBlankStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProject( + CENTOS_BLANK, WORKSPACE_NAME, PROJECT_NAME); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(PROJECT_NAME); + } + + @Test(priority = 1) + public void checkBlankProjectCommands() { + projectExplorer.openItemByPath(PROJECT_NAME); + projectExplorer.openItemByPath(PROJECT_NAME + "/README.md"); + editor.waitActive(); + editor.waitTabIsPresent("README.md"); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosGoStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosGoStackTest.java new file mode 100644 index 0000000000..6faaee95fa --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosGoStackTest.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.RUN_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.RUN_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.CENTOS_GO; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromCentosGoStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String DESKTOP_GO_PROJECT = "desktop-go-simple"; + private static final String WEB_GO_PROJECT = "web-go-simple"; + + private List projects = ImmutableList.of(DESKTOP_GO_PROJECT, WEB_GO_PROJECT); + private By textOnPreviewPage = By.xpath("//pre[contains(text(),'Hello there')]"); + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromCentosGoStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects(CENTOS_GO, WORKSPACE_NAME, projects); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(DESKTOP_GO_PROJECT); + projectExplorer.waitProjectInitialization(WEB_GO_PROJECT); + } + + @Test(priority = 1) + public void checkDesktopGoSimpleProjectCommands() { + consoles.executeCommandFromProjectExplorer( + DESKTOP_GO_PROJECT, + RUN_GOAL, + RUN_COMMAND_ITEM.getItem(DESKTOP_GO_PROJECT), + "Hello, world. Sqrt(2) = 1.4142135623730951"); + } + + @Test(priority = 1) + public void checkWebGoSimpleProjectCommands() { + consoles.executeCommandFromProjectExplorer( + WEB_GO_PROJECT, RUN_GOAL, RUN_COMMAND, "listening on"); + + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND); + + consoles.executeCommandFromProjectExplorer( + WEB_GO_PROJECT, RUN_GOAL, RUN_COMMAND_ITEM.getItem(WEB_GO_PROJECT), "listening on"); + + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND_ITEM.getItem(WEB_GO_PROJECT)); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosNodeStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosNodeStackTest.java new file mode 100644 index 0000000000..238723c586 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosNodeStackTest.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.INSTALL_DEPENDENCIES_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.RUN_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.CENTOS_NODEJS; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromCentosNodeStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String ANGULAR_PROJECT = "angular-patternfly-starter"; + private static final String NODE_JS_PROJECT = "nodejs-hello-world"; + private static final String WEB_NODE_JS_PROJECT = "web-nodejs-simple"; + + private List projects = + ImmutableList.of(ANGULAR_PROJECT, NODE_JS_PROJECT, WEB_NODE_JS_PROJECT); + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromCentosNodeStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects( + CENTOS_NODEJS, WORKSPACE_NAME, projects); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(ANGULAR_PROJECT); + projectExplorer.waitProjectInitialization(NODE_JS_PROJECT); + projectExplorer.waitProjectInitialization(WEB_NODE_JS_PROJECT); + } + + @Test(priority = 1) + public void checkAngularPatternfyStarterProjectCommands() { + By textOnPreviewPage = By.xpath("//span[text()='UNIFIED MANAGEMENT EXPERIENCE']"); + + consoles.executeCommandFromProjectExplorer( + ANGULAR_PROJECT, + BUILD_GOAL, + INSTALL_DEPENDENCIES_COMMAND_ITEM.getItem(ANGULAR_PROJECT), + "bower_components/font-awesome"); + + consoles.executeCommandFromProjectExplorer( + ANGULAR_PROJECT, RUN_GOAL, RUN_COMMAND_ITEM.getItem(ANGULAR_PROJECT), "Waiting..."); + + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND_ITEM.getItem(ANGULAR_PROJECT)); + } + + @Test(priority = 1) + public void checkNodejsHelloWorldProjectCommands() { + By textOnPreviewPage = By.xpath("//*[text()='Hello World!']"); + + consoles.executeCommandFromProjectExplorer( + NODE_JS_PROJECT, + RUN_GOAL, + RUN_COMMAND_ITEM.getItem(NODE_JS_PROJECT), + "Example app listening on port 3000!"); + + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND_ITEM.getItem(NODE_JS_PROJECT)); + } + + @Test(priority = 1) + public void checkWebNodejsSimpleProjectCommands() { + By textOnPreviewPage = By.xpath("//p[text()=' from the Yeoman team']"); + + consoles.executeCommandFromProjectExplorer( + WEB_NODE_JS_PROJECT, + BUILD_GOAL, + INSTALL_DEPENDENCIES_COMMAND_ITEM.getItem(WEB_NODE_JS_PROJECT), + "bower_components/angular"); + + consoles.executeCommandFromProjectExplorer( + WEB_NODE_JS_PROJECT, + RUN_GOAL, + RUN_COMMAND_ITEM.getItem(WEB_NODE_JS_PROJECT), + "Started connect web server"); + + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND_ITEM.getItem(WEB_NODE_JS_PROJECT)); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosWildFlySwarmStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosWildFlySwarmStackTest.java new file mode 100644 index 0000000000..ff77ba60ba --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCentosWildFlySwarmStackTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.RUN_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.CENTOS_WILDFLY_SWARM; + +import com.google.inject.Inject; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromCentosWildFlySwarmStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String PROJECT_NAME = "wfswarm-rest-http"; + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void createWorkspaceFromCentosWildFlySwarmStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProject( + CENTOS_WILDFLY_SWARM, WORKSPACE_NAME, PROJECT_NAME); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(PROJECT_NAME); + } + + @Test(priority = 1) + public void checkWfswarmRestHttpProjectCommands() { + By textOnPreviewPage = By.xpath("//h2[@id='_http_booster']"); + + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, RUN_GOAL, RUN_COMMAND, "WildFly Swarm is Ready"); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCeylonWithJavaStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCeylonWithJavaStackTest.java new file mode 100644 index 0000000000..33891ba41e --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromCeylonWithJavaStackTest.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.CEYLON_WITH_JAVA_JAVASCRIPT; + +import com.google.inject.Inject; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromCeylonWithJavaStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String PROJECT_NAME = "ceylon-hello-world"; + private static final String MODULE_COMPILED_MESSAGE = + "Note: Created module che.ceylon.samples.helloWorld"; + private static final String MODULE_STARTED_MESSAGE = + "Hello World from Ceylon on the following backend : "; + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromCeylonWithJavaStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProject( + CEYLON_WITH_JAVA_JAVASCRIPT, WORKSPACE_NAME, PROJECT_NAME); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(PROJECT_NAME); + } + + @Test(priority = 1) + public void checkCeylonHelloWorldProjectCommands() { + // compile and start project on JVM + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, BUILD_GOAL, "compile for JVM", MODULE_COMPILED_MESSAGE); + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, RUN_GOAL, "Run on JVM", MODULE_STARTED_MESSAGE + "jvm !"); + + // compile and start project on NodeJS + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, BUILD_GOAL, "compile for JS", MODULE_COMPILED_MESSAGE); + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, RUN_GOAL, "Run on NodeJS", MODULE_STARTED_MESSAGE + "js !"); + + // compile and start project on Dart + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, BUILD_GOAL, "compile for Dart", MODULE_COMPILED_MESSAGE); + consoles.executeCommandFromProjectExplorer( + PROJECT_NAME, RUN_GOAL, "Run on Dart", MODULE_STARTED_MESSAGE + "dartvm !"); + + // clean all created modules + projectExplorer.openItemByPath(PROJECT_NAME); + projectExplorer.isItemVisible(PROJECT_NAME + "/modules"); + projectExplorer.invokeCommandWithContextMenu(BUILD_GOAL, PROJECT_NAME, "clean module"); + projectExplorer.waitItemIsNotPresentVisibleArea(PROJECT_NAME + "/modules"); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromEclipseVertxStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromEclipseVertxStackTest.java new file mode 100644 index 0000000000..973ab206c6 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromEclipseVertxStackTest.java @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.DEBUG_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.RUN_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.DEBUG_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.LOADER_TIMEOUT_SEC; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.ECLIPSE_VERTX; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.SeleniumWebDriver; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.core.webdriver.SeleniumWebDriverHelper; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromEclipseVertxStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String HEALTH_CHECKS_BOOSTER_PROJECT = "vertx-health-checks-booster"; + private static final String HEALTH_HTTP_BOOSTER_PROJECT = "vertx-http-booster"; + + private List projects = + ImmutableList.of(HEALTH_CHECKS_BOOSTER_PROJECT, HEALTH_HTTP_BOOSTER_PROJECT); + private String currentWindow; + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private SeleniumWebDriver seleniumWebDriver; + @Inject private SeleniumWebDriverHelper seleniumWebDriverHelper; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromEclipseVertxStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects( + ECLIPSE_VERTX, WORKSPACE_NAME, projects); + + currentWindow = ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(HEALTH_CHECKS_BOOSTER_PROJECT); + projectExplorer.waitProjectInitialization(HEALTH_HTTP_BOOSTER_PROJECT); + } + + @Test(priority = 1) + public void checkVertxHealthChecksBoosterProjectCommands() { + By textOnPreviewPage = By.id("_vert_x_health_check_booster"); + + // build and run web application + consoles.executeCommandFromProjectExplorer( + HEALTH_CHECKS_BOOSTER_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + consoles.executeCommandFromProjectExplorer( + HEALTH_CHECKS_BOOSTER_PROJECT, + RUN_GOAL, + RUN_COMMAND, + "[INFO] INFO: Succeeded in deploying verticle"); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + consoles.closeProcessTabWithAskDialog(RUN_COMMAND); + + consoles.executeCommandFromProcessesArea( + "dev-machine", + DEBUG_GOAL, + DEBUG_COMMAND, + "[INFO] Listening for transport dt_socket at address: 5005"); + consoles.closeProcessTabWithAskDialog(DEBUG_COMMAND); + } + + @Test(priority = 2) + public void checkVertxHttpBoosterProjectCommands() { + By textOnPreviewPage = By.id("_http_booster"); + + // build and run web application + consoles.executeCommandFromProjectExplorer( + HEALTH_HTTP_BOOSTER_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + consoles.executeCommandFromProjectExplorer( + HEALTH_HTTP_BOOSTER_PROJECT, + RUN_GOAL, + RUN_COMMAND, + "[INFO] INFO: Succeeded in deploying verticle"); + + // refresh application web page and check visibility of web element on opened page + checkApplicationPage(textOnPreviewPage); + + consoles.closeProcessTabWithAskDialog(RUN_COMMAND); + + consoles.executeCommandFromProcessesArea( + "dev-machine", + DEBUG_GOAL, + DEBUG_COMMAND, + "[INFO] Listening for transport dt_socket at address: 5005"); + consoles.closeProcessTabWithAskDialog(DEBUG_COMMAND); + } + + private void checkApplicationPage(By webElement) { + consoles.waitPreviewUrlIsPresent(); + consoles.waitPreviewUrlIsResponsive(10); + consoles.clickOnPreviewUrl(); + + seleniumWebDriverHelper.switchToNextWindow(currentWindow); + + seleniumWebDriver.navigate().refresh(); + seleniumWebDriverHelper.waitVisibility(webElement, LOADER_TIMEOUT_SEC); + + seleniumWebDriver.close(); + seleniumWebDriver.switchTo().window(currentWindow); + seleniumWebDriverHelper.switchToIdeFrameAndWaitAvailability(); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaCentosStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaCentosStackTest.java new file mode 100644 index 0000000000..a8aaa5a5b9 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaCentosStackTest.java @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.LISTENING_AT_ADDRESS_8000; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.SERVER_STARTUP_IN; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.BUILD_AND_RUN_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.BUILD_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.DEBUG_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.RUN_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.RUN_TOMCAT_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.STOP_TOMCAT_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.DEBUG_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.JAVA_CENTOS; +import static org.openqa.selenium.Keys.ENTER; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.CheTerminal; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromJavaCentosStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String CONSOLE_JAVA_PROJECT = "console-java-simple"; + private static final String WEB_JAVA_SPRING_PROJECT = "web-java-spring"; + + private List projects = ImmutableList.of(CONSOLE_JAVA_PROJECT, WEB_JAVA_SPRING_PROJECT); + private By textOnPreviewPage = By.xpath("//span[text()='Enter your name: ']"); + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private CheTerminal terminal; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromJavaCentosStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects( + JAVA_CENTOS, WORKSPACE_NAME, projects); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(CONSOLE_JAVA_PROJECT); + projectExplorer.waitProjectInitialization(WEB_JAVA_SPRING_PROJECT); + } + + @Test(priority = 1) + public void checkConsoleJavaSimpleProjectCommands() { + + // build and run console-java-simple project + consoles.executeCommandFromProjectExplorer( + CONSOLE_JAVA_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + consoles.executeCommandFromProjectExplorer( + CONSOLE_JAVA_PROJECT, + BUILD_GOAL, + BUILD_COMMAND_ITEM.getItem(CONSOLE_JAVA_PROJECT), + BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + CONSOLE_JAVA_PROJECT, + RUN_GOAL, + RUN_COMMAND_ITEM.getItem(CONSOLE_JAVA_PROJECT), + "Hello World Che!"); + } + + @Test(priority = 1) + public void checkWebJavaSpringProjectCommands() { + String tomcatIsRunning = "/bin/bash -c $TOMCAT_HOME/bin/catalina.sh"; + + // build web-java-spring project + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, + BUILD_GOAL, + BUILD_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), + BUILD_SUCCESS); + + // build and run web-java-spring project + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, + RUN_GOAL, + BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), + SERVER_STARTUP_IN); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + consoles.closeProcessTabWithAskDialog( + BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT)); + + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, + RUN_GOAL, + RUN_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), + SERVER_STARTUP_IN); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + // execute 'stop tomcat' command and check that tomcat process is not running + projectExplorer.invokeCommandWithContextMenu( + RUN_GOAL, + WEB_JAVA_SPRING_PROJECT, + STOP_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT)); + consoles.selectProcessInProcessConsoleTreeByName("Terminal"); + terminal.typeIntoTerminal("ps ax"); + terminal.typeIntoTerminal(ENTER.toString()); + terminal.waitExpectedTextNotPresentTerminal(tomcatIsRunning); + + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, + DEBUG_GOAL, + DEBUG_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), + LISTENING_AT_ADDRESS_8000); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaMySqlCentosStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaMySqlCentosStackTest.java new file mode 100644 index 0000000000..41a1f5edce --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaMySqlCentosStackTest.java @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.LISTENING_AT_ADDRESS_8000; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.BUILD_AND_DEPLOY_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.BUILD_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.DEBUG_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandItem.STOP_TOMCAT_COMMAND_ITEM; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.COMMON_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.DEBUG_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.JAVA_MYSQL_CENTOS; +import static org.openqa.selenium.Keys.ENTER; + +import com.google.inject.Inject; +import org.eclipse.che.selenium.core.TestGroup; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.CheTerminal; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +@Test(groups = {TestGroup.DOCKER}) +public class CreateWorkspaceFromJavaMySqlCentosStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String WEB_JAVA_PROJECT = "web-java-petclinic"; + private static final String DEV_MACHINE_NAME = "dev-machine"; + private static final String DB_MACHINE_NAME = "db"; + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private CheTerminal terminal; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromJavaMySqlCentosStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProject( + JAVA_MYSQL_CENTOS, WORKSPACE_NAME, WEB_JAVA_PROJECT); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); + + projectExplorer.waitProjectInitialization(WEB_JAVA_PROJECT); + } + + @Test(priority = 1) + public void checkWebJavaPetclinicProjectCommands() { + By textOnPreviewPage = By.xpath("//h2[text()='Welcome']"); + String tomcatIsRunning = "$TOMCAT_HOME/bin/catalina.sh"; + + projectExplorer.openItemByPath(WEB_JAVA_PROJECT); + + // Select the db machine and perform 'show databases' command + consoles.executeCommandFromProcessesArea( + DB_MACHINE_NAME, COMMON_GOAL, "show databases", "information_schema"); + + // Build and deploy the web application + consoles.executeCommandFromProcessesArea( + DEV_MACHINE_NAME, COMMON_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProcessesArea( + DEV_MACHINE_NAME, BUILD_GOAL, BUILD_COMMAND_ITEM.getItem(WEB_JAVA_PROJECT), BUILD_SUCCESS); + + consoles.executeCommandFromProcessesArea( + DEV_MACHINE_NAME, + RUN_GOAL, + BUILD_AND_DEPLOY_COMMAND_ITEM.getItem(WEB_JAVA_PROJECT), + "Server startup in"); + + // Run the application + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + + // execute 'stop tomcat' command and check that tomcat process is not running + projectExplorer.invokeCommandWithContextMenu( + RUN_GOAL, + WEB_JAVA_PROJECT, + STOP_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_PROJECT), + DEV_MACHINE_NAME); + consoles.selectProcessInProcessConsoleTreeByName("Terminal"); + terminal.typeIntoTerminal("ps ax"); + terminal.typeIntoTerminal(ENTER.toString()); + terminal.waitExpectedTextNotPresentTerminal(tomcatIsRunning); + + consoles.executeCommandFromProcessesArea( + DEV_MACHINE_NAME, + DEBUG_GOAL, + DEBUG_COMMAND_ITEM.getItem(WEB_JAVA_PROJECT), + LISTENING_AT_ADDRESS_8000); + } +} diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaStackTest.java index e44f81d286..e6fbbb0d98 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaStackTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromJavaStackTest.java @@ -45,19 +45,21 @@ import org.testng.annotations.Test; /** @author Skoryk Serhii */ public class CreateWorkspaceFromJavaStackTest { - private static final String WORKSPACE_NAME = generate("workspace", 4); - private static final String CONSOLE_JAVA_SIMPLE = "console-java-simple"; - private static final String WEB_JAVA_SPRING = "web-java-spring"; - private List projects = ImmutableList.of(CONSOLE_JAVA_SIMPLE, WEB_JAVA_SPRING); + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String CONSOLE_JAVA_PROJECT = "console-java-simple"; + private static final String WEB_JAVA_SPRING_PROJECT = "web-java-spring"; + + private List projects = ImmutableList.of(CONSOLE_JAVA_PROJECT, WEB_JAVA_SPRING_PROJECT); + private By textOnPreviewPage = By.xpath("//span[text()='Enter your name: ']"); @Inject private Ide ide; @Inject private Consoles consoles; @Inject private Dashboard dashboard; - @Inject private CreateWorkspaceHelper createWorkspaceHelper; - @Inject private DefaultTestUser defaultTestUser; @Inject private CheTerminal terminal; + @Inject private DefaultTestUser defaultTestUser; @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; @Inject private TestWorkspaceServiceClient workspaceServiceClient; @BeforeClass @@ -77,63 +79,71 @@ public class CreateWorkspaceFromJavaStackTest { ide.switchToIdeAndWaitWorkspaceIsReadyToUse(); - projectExplorer.waitProjectInitialization(CONSOLE_JAVA_SIMPLE); - projectExplorer.waitProjectInitialization(WEB_JAVA_SPRING); + projectExplorer.waitProjectInitialization(CONSOLE_JAVA_PROJECT); + projectExplorer.waitProjectInitialization(WEB_JAVA_SPRING_PROJECT); } @Test(priority = 1) - public void checkConsoleJavaSimpleCommands() { + public void checkConsoleJavaSimpleProjectCommands() { consoles.executeCommandFromProjectExplorer( - CONSOLE_JAVA_SIMPLE, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + CONSOLE_JAVA_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); consoles.executeCommandFromProjectExplorer( - CONSOLE_JAVA_SIMPLE, + CONSOLE_JAVA_PROJECT, BUILD_GOAL, - BUILD_COMMAND_ITEM.getItem(CONSOLE_JAVA_SIMPLE), + BUILD_COMMAND_ITEM.getItem(CONSOLE_JAVA_PROJECT), BUILD_SUCCESS); consoles.executeCommandFromProjectExplorer( - CONSOLE_JAVA_SIMPLE, + CONSOLE_JAVA_PROJECT, RUN_GOAL, - RUN_COMMAND_ITEM.getItem(CONSOLE_JAVA_SIMPLE), + RUN_COMMAND_ITEM.getItem(CONSOLE_JAVA_PROJECT), "Hello World Che!"); } @Test(priority = 1) - public void checkWebJavaSpringCommands() { - consoles.executeCommandFromProjectExplorer( - WEB_JAVA_SPRING, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + public void checkWebJavaSpringProjectCommands() { + String tomcatIsRunning = "/bin/bash -c $TOMCAT_HOME/bin/catalina.sh"; consoles.executeCommandFromProjectExplorer( - WEB_JAVA_SPRING, BUILD_GOAL, BUILD_COMMAND_ITEM.getItem(WEB_JAVA_SPRING), BUILD_SUCCESS); + WEB_JAVA_SPRING_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); consoles.executeCommandFromProjectExplorer( - WEB_JAVA_SPRING, + WEB_JAVA_SPRING_PROJECT, + BUILD_GOAL, + BUILD_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), + BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + WEB_JAVA_SPRING_PROJECT, RUN_GOAL, - BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING), + BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), SERVER_STARTUP_IN); - consoles.checkWebElementVisibilityAtPreviewPage(By.xpath("//span[text()='Enter your name: ']")); - consoles.closeProcessTabWithAskDialog(BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING)); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + consoles.closeProcessTabWithAskDialog( + BUILD_AND_RUN_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT)); consoles.executeCommandFromProjectExplorer( - WEB_JAVA_SPRING, + WEB_JAVA_SPRING_PROJECT, RUN_GOAL, - RUN_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING), + RUN_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), SERVER_STARTUP_IN); - consoles.checkWebElementVisibilityAtPreviewPage(By.xpath("//span[text()='Enter your name: ']")); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); - // execute 'stop tomcat' command and check that tomcat is not running + // execute 'stop tomcat' command and check that tomcat process is not running projectExplorer.invokeCommandWithContextMenu( - RUN_GOAL, WEB_JAVA_SPRING, STOP_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING)); + RUN_GOAL, + WEB_JAVA_SPRING_PROJECT, + STOP_TOMCAT_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT)); consoles.selectProcessInProcessConsoleTreeByName("Terminal"); terminal.typeIntoTerminal("ps ax"); terminal.typeIntoTerminal(ENTER.toString()); - terminal.waitExpectedTextNotPresentTerminal("/bin/bash -c $TOMCAT_HOME/bin/catalina.sh"); + terminal.waitExpectedTextNotPresentTerminal(tomcatIsRunning); consoles.executeCommandFromProjectExplorer( - WEB_JAVA_SPRING, + WEB_JAVA_SPRING_PROJECT, DEBUG_GOAL, - DEBUG_COMMAND_ITEM.getItem(WEB_JAVA_SPRING), + DEBUG_COMMAND_ITEM.getItem(WEB_JAVA_SPRING_PROJECT), LISTENING_AT_ADDRESS_8000); } } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromSpringBootStackTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromSpringBootStackTest.java new file mode 100644 index 0000000000..6d3213b6e1 --- /dev/null +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/stack/CreateWorkspaceFromSpringBootStackTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.selenium.stack; + +import static org.eclipse.che.commons.lang.NameGenerator.generate; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.BUILD_SUCCESS; +import static org.eclipse.che.selenium.core.constant.TestBuildConstants.LISTENING_AT_ADDRESS; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.CLEAN_BUILD_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.DEBUG_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestCommandsConstants.RUN_COMMAND; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.BUILD_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.DEBUG_GOAL; +import static org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants.ContextMenuCommandGoals.RUN_GOAL; +import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.APPLICATION_START_TIMEOUT_SEC; +import static org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Stack.SPRING_BOOT; + +import com.google.common.collect.ImmutableList; +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient; +import org.eclipse.che.selenium.core.user.DefaultTestUser; +import org.eclipse.che.selenium.pageobject.Consoles; +import org.eclipse.che.selenium.pageobject.Ide; +import org.eclipse.che.selenium.pageobject.ProjectExplorer; +import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper; +import org.eclipse.che.selenium.pageobject.dashboard.Dashboard; +import org.openqa.selenium.By; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** @author Skoryk Serhii */ +public class CreateWorkspaceFromSpringBootStackTest { + + private static final String WORKSPACE_NAME = generate("workspace", 4); + private static final String SPRING_BOOT_HEALTH_CHECK_PROJECT = "spring-boot-health-check-booster"; + private static final String SPRING_BOOT_HTTP_PROJECT = "spring-boot-http-booster"; + + private List projects = + ImmutableList.of(SPRING_BOOT_HEALTH_CHECK_PROJECT, SPRING_BOOT_HTTP_PROJECT); + + @Inject private Ide ide; + @Inject private Consoles consoles; + @Inject private Dashboard dashboard; + @Inject private DefaultTestUser defaultTestUser; + @Inject private ProjectExplorer projectExplorer; + @Inject private CreateWorkspaceHelper createWorkspaceHelper; + @Inject private TestWorkspaceServiceClient workspaceServiceClient; + + @BeforeClass + public void setUp() { + dashboard.open(); + } + + @AfterClass + public void tearDown() throws Exception { + workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName()); + } + + @Test + public void checkWorkspaceCreationFromSpringBootStack() { + createWorkspaceHelper.createWorkspaceFromStackWithProjects( + SPRING_BOOT, WORKSPACE_NAME, projects); + + ide.switchToIdeAndWaitWorkspaceIsReadyToUse(APPLICATION_START_TIMEOUT_SEC); + + projectExplorer.waitProjectInitialization(SPRING_BOOT_HEALTH_CHECK_PROJECT); + projectExplorer.waitProjectInitialization(SPRING_BOOT_HTTP_PROJECT); + } + + @Test(priority = 1) + public void checkSpringBootHealthCheckBoosterProjectCommands() { + By textOnPreviewPage = By.xpath("//h2[text()='Health Check Booster']"); + + // build and run 'spring-boot-health-check-booster' project + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HEALTH_CHECK_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HEALTH_CHECK_PROJECT, BUILD_GOAL, CLEAN_BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HEALTH_CHECK_PROJECT, RUN_GOAL, RUN_COMMAND, "Started BoosterApplication in"); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + consoles.closeProcessTabWithAskDialog(RUN_COMMAND); + + consoles.executeCommandFromProcessesArea( + "dev-machine", DEBUG_GOAL, DEBUG_COMMAND, LISTENING_AT_ADDRESS); + consoles.closeProcessTabWithAskDialog(DEBUG_COMMAND); + } + + @Test(priority = 1) + public void checkSpringBooHttpBoosterProjectCommands() { + By textOnPreviewPage = By.xpath("//h2[text()='HTTP Booster']"); + + // build and run 'spring-boot-http-booster' project + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HTTP_PROJECT, BUILD_GOAL, BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HTTP_PROJECT, BUILD_GOAL, CLEAN_BUILD_COMMAND, BUILD_SUCCESS); + + consoles.executeCommandFromProjectExplorer( + SPRING_BOOT_HTTP_PROJECT, + RUN_GOAL, + RUN_COMMAND, + "INFO: Setting the server's publish address to be"); + consoles.checkWebElementVisibilityAtPreviewPage(textOnPreviewPage); + consoles.closeProcessTabWithAskDialog(RUN_COMMAND); + + consoles.executeCommandFromProcessesArea( + "dev-machine", DEBUG_GOAL, DEBUG_COMMAND, LISTENING_AT_ADDRESS); + consoles.closeProcessTabWithAskDialog(DEBUG_COMMAND); + } +}