Selenium: cover workspace creation from CentOS stacks by selenium tests (#10255)

6.19.x
Sergey Skorik 2018-07-09 18:26:53 +03:00 committed by GitHub
parent f7f0c860b4
commit 14e3048d77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 1177 additions and 83 deletions

View File

@ -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";
}

View File

@ -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";

View File

@ -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;

View File

@ -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(

View File

@ -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;
}

View File

@ -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<String> 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);
}
}

View File

@ -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();
}
}

View File

@ -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");
}
}

View File

@ -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<String> 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));
}
}

View File

@ -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<String> 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));
}
}

View File

@ -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);
}
}

View File

@ -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");
}
}

View File

@ -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<String> 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();
}
}

View File

@ -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<String> 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);
}
}

View File

@ -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);
}
}

View File

@ -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<String> 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<String> 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);
}
}

View File

@ -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<String> 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);
}
}