[Selenium] Adapt selenium tests from dashboard package (#14980)

7.20.x
Sergey Skorik 2019-10-28 12:28:43 +02:00 committed by GitHub
parent 598d1b1337
commit cdca0558af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 140 additions and 296 deletions

View File

@ -75,6 +75,14 @@ public abstract class AbstractTestWorkspaceServiceClient implements TestWorkspac
return workspaces.stream().map(ws -> ws.getConfig().getName()).collect(Collectors.toList());
}
/** Returns the number of workspaces that belongs to the user. */
@Override
public int getWorkspacesCount() throws Exception {
List<WorkspaceDto> workspaces =
requestFactory.fromUrl(getBaseUrl()).request().asList(WorkspaceDto.class);
return workspaces.size();
}
/** Stops workspace. */
@Override
public void stop(String workspaceName, String userName) throws Exception {

View File

@ -25,6 +25,8 @@ public interface TestWorkspaceServiceClient {
List<String> getAll() throws Exception;
int getWorkspacesCount() throws Exception;
void stop(String workspaceName, String userName) throws Exception;
Workspace getByName(String workspace, String username) throws Exception;

View File

@ -45,7 +45,7 @@ public class WorkspaceConfig {
}
public interface Locators {
String CONFIG_FORM = "//ng-form[@name='workspaceConfigForm']";
String CONFIG_FORM = "//ng-form[@name='workspaceDevfileForm']";
String CONFIG_EDITOR = "//ng-form[@name='workspaceConfigForm']//div[@class='CodeMirror-code']";
}

View File

@ -108,9 +108,9 @@ public class WorkspaceDetails {
}
public enum ActionButton {
SAVE_BUTTON(By.name("save-button")),
APPLY_BUTTON(By.name("apply-button")),
CANCEL_BUTTON(By.name("cancel-button"));
SAVE_BUTTON(By.className("save-button")),
APPLY_BUTTON(By.className("apply-button")),
CANCEL_BUTTON(By.className("cancel-button"));
private By buttonLocator;

View File

@ -13,6 +13,7 @@ package org.eclipse.che.selenium.pageobject.dashboard.workspaces;
import static java.lang.String.format;
import static java.util.Arrays.asList;
import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.ELEMENT_TIMEOUT_SEC;
import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.REDRAW_UI_ELEMENTS_TIMEOUT_SEC;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects.Locators.ADD_NEW_PROJECT_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects.Locators.CHECKBOX_BY_PROJECT_NAME_XPATH_TEMPLATE;
@ -76,7 +77,7 @@ public class WorkspaceProjects {
}
public By getLocator() {
return By.name(this.buttonNameAttribute);
return By.className(this.buttonNameAttribute);
}
}
@ -158,7 +159,7 @@ public class WorkspaceProjects {
* @param projectName name of project
*/
public void waitProjectIsPresent(String projectName) {
new WebDriverWait(seleniumWebDriver, REDRAW_UI_ELEMENTS_TIMEOUT_SEC)
new WebDriverWait(seleniumWebDriver, ELEMENT_TIMEOUT_SEC)
.until(
visibilityOfElementLocated(
By.xpath(String.format(Locators.PROJECT_BY_NAME, projectName))));
@ -170,7 +171,7 @@ public class WorkspaceProjects {
* @param projectName name of project
*/
public void waitProjectIsNotPresent(String projectName) {
new WebDriverWait(seleniumWebDriver, REDRAW_UI_ELEMENTS_TIMEOUT_SEC)
new WebDriverWait(seleniumWebDriver, ELEMENT_TIMEOUT_SEC)
.until(
invisibilityOfElementLocated(
By.xpath(String.format(Locators.PROJECT_BY_NAME, projectName))));

View File

@ -18,11 +18,8 @@ import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspace
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.Locators.CHECKBOX_BY_SAMPLE_NAME_ID_TEMPLATE;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.Locators.SAMPLE_ITEM_TEMPLATE_XPATH;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.Locators.TAB_STATE_TEMPLATE_XPATH;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.BLANK_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.GITHUB_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.GIT_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.SAMPLES_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.ZIP_BUTTON;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@ -88,15 +85,7 @@ public class WorkspaceProjectsSamples {
}
public void waitSamplesForm() {
waitButtons(
asList(
SAMPLES_BUTTON,
BLANK_BUTTON,
GIT_BUTTON,
GITHUB_BUTTON,
ZIP_BUTTON,
CANCEL_BUTTON,
ADD_BUTTON));
waitButtons(asList(GIT_BUTTON, GITHUB_BUTTON, CANCEL_BUTTON, ADD_BUTTON));
}
public WebElement waitButton(Button button) {
@ -166,7 +155,7 @@ public class WorkspaceProjectsSamples {
}
private void waitButtonState(ActionButton actionButton, boolean state) {
final String buttonXpath = format("//*[@id='%s']/button", actionButton.get());
final String buttonXpath = format("//*[@id='%s']", actionButton.get());
seleniumWebDriverHelper.waitAttributeEqualsTo(
By.xpath(buttonXpath), "aria-disabled", Boolean.toString(!state));
}

View File

@ -437,10 +437,8 @@ public class Workspaces {
String fullName = getFullNameOfWorkspacesListItem(i);
String ownerName = Arrays.asList(fullName.split("/")).get(0);
String workspaceName = Arrays.asList(fullName.split("/")).get(1);
int ramCount =
Integer.parseInt(Arrays.asList(getWorkspaceRamValue(workspaceName).split(" ")).get(0));
int projectsCount = Integer.parseInt(getWorkspaceProjectsValue(workspaceName));
items.add(new WorkspaceListItem(ownerName, workspaceName, ramCount, projectsCount));
items.add(new WorkspaceListItem(ownerName, workspaceName, 0, projectsCount));
}
return items;

View File

@ -25,6 +25,7 @@ import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper;
import org.eclipse.che.selenium.pageobject.dashboard.Dashboard;
import org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Devfile;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceDetails;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceDetails.ActionButton;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceOverview;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspaces;
import org.testng.annotations.AfterClass;
@ -77,12 +78,14 @@ public class RenameWorkspaceTest {
// type name with 1 characters and check error message that this name is too short
workspaceOverview.enterNameWorkspace("w");
workspaceDetails.waitAllDisabled(ActionButton.SAVE_BUTTON, ActionButton.APPLY_BUTTON);
assertTrue(workspaceOverview.isWorkspaceNameErrorMessageEquals(WS_NAME_TOO_SHORT));
workspaceDetails.clickOnCancelChangesBtn();
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME);
// type name with 101 characters and check error message that this name is too long
workspaceOverview.enterNameWorkspace(MAX_WORKSPACE_NAME + "a");
workspaceDetails.waitAllDisabled(ActionButton.SAVE_BUTTON, ActionButton.APPLY_BUTTON);
assertTrue(workspaceOverview.isWorkspaceNameErrorMessageEquals(WS_NAME_TOO_LONG));
workspaceDetails.clickOnCancelChangesBtn();
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME);

View File

@ -12,26 +12,19 @@
package org.eclipse.che.selenium.dashboard.workspaces;
import static java.util.Arrays.asList;
import static org.eclipse.che.commons.lang.NameGenerator.generate;
import static org.eclipse.che.selenium.core.TestGroup.UNDER_REPAIR;
import static org.eclipse.che.selenium.core.project.ProjectTemplates.MAVEN_SPRING;
import static org.eclipse.che.selenium.core.workspace.WorkspaceTemplate.UBUNTU_JDK8;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import com.google.inject.Inject;
import java.net.URL;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
import org.eclipse.che.selenium.core.SeleniumWebDriver;
import org.eclipse.che.selenium.core.client.TestProjectServiceClient;
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.core.workspace.InjectTestWorkspace;
import org.eclipse.che.selenium.core.workspace.TestWorkspace;
import org.eclipse.che.selenium.pageobject.dashboard.CreateWorkspaceHelper;
import org.eclipse.che.selenium.pageobject.dashboard.Dashboard;
import org.eclipse.che.selenium.pageobject.dashboard.DocumentationPage;
import org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace;
import org.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Devfile;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceConfig;
@ -39,6 +32,8 @@ import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceOvervie
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspaces;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspaces.Status;
import org.openqa.selenium.TimeoutException;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
@ -48,17 +43,12 @@ import org.testng.annotations.Test;
* @author Sergey Skorik
* @author Ihor Okhrimenko
*/
/** TODO rewrite to use che7 workspace */
@Test(groups = UNDER_REPAIR)
public class WorkspacesListTest {
private static final int BLANK_WS_MB = 2048;
private static final int JAVA_WS_MB = 3072;
private static final int BLANK_WS_PROJECTS_COUNT = 0;
private static final int JAVA_WS_PROJECTS_COUNT = 1;
private static final String EXPECTED_DOCUMENTATION_PAGE_TITLE = "Eclipse Che Documentation";
private static final String EXPECTED_JAVA_PROJECT_NAME = "web-java-spring";
private static final String EXPECTED_JAVA_PROJECT_NAME = "console-java-simple";
private static final String NEWEST_CREATED_WORKSPACE_NAME = "just-created-workspace";
private static final int EXPECTED_SORTED_WORKSPACES_COUNT = 1;
private static final String WORKSPACE_NAME = generate("test-workspace", 4);
private static final String WORKSPACE_NAME2 = generate("test-workspace", 4);
private static final int EXPECTED_SEARCHED_WORKSPACES_COUNT = 1;
@Inject private Dashboard dashboard;
@Inject private WorkspaceProjects workspaceProjects;
@ -66,51 +56,23 @@ public class WorkspacesListTest {
@Inject private DefaultTestUser defaultTestUser;
@Inject private Workspaces workspaces;
@Inject private NewWorkspace newWorkspace;
@Inject private TestProjectServiceClient testProjectServiceClient;
@Inject private TestWorkspaceServiceClient testWorkspaceServiceClient;
@Inject private SeleniumWebDriverHelper seleniumWebDriverHelper;
@Inject private SeleniumWebDriver seleniumWebDriver;
@Inject private DocumentationPage documentationPage;
@Inject private WorkspaceOverview workspaceOverview;
@InjectTestWorkspace(memoryGb = 2, startAfterCreation = false)
private TestWorkspace blankWorkspace;
@InjectTestWorkspace(memoryGb = 2, startAfterCreation = false)
private TestWorkspace workspaceToDelete;
@InjectTestWorkspace(template = UBUNTU_JDK8, memoryGb = 3)
private TestWorkspace javaWorkspace;
private Workspaces.WorkspaceListItem expectedBlankItem;
private Workspaces.WorkspaceListItem expectedJavaItem;
private Workspaces.WorkspaceListItem expectedNewestWorkspaceItem;
@Inject private TestWorkspaceServiceClient workspaceServiceClient;
@Inject private CreateWorkspaceHelper createWorkspaceHelper;
@BeforeClass
public void setUp() throws Exception {
URL resource = getClass().getResource("/projects/defaultSpringProjectWithDifferentTypeOfFiles");
testProjectServiceClient.importProject(
javaWorkspace.getId(), Paths.get(resource.toURI()), "web-java-spring", MAVEN_SPRING);
expectedBlankItem =
new Workspaces.WorkspaceListItem(
defaultTestUser.getName(),
blankWorkspace.getName(),
BLANK_WS_MB,
BLANK_WS_PROJECTS_COUNT);
expectedJavaItem =
new Workspaces.WorkspaceListItem(
defaultTestUser.getName(), javaWorkspace.getName(), JAVA_WS_MB, JAVA_WS_PROJECTS_COUNT);
expectedNewestWorkspaceItem =
new Workspaces.WorkspaceListItem(
defaultTestUser.getName(),
NEWEST_CREATED_WORKSPACE_NAME,
BLANK_WS_MB,
BLANK_WS_PROJECTS_COUNT);
dashboard.open();
createWorkspaceHelper.createAndEditWorkspaceFromStack(
Devfile.JAVA_MAVEN, WORKSPACE_NAME, Collections.emptyList(), null);
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME);
createWorkspaceHelper.createAndEditWorkspaceFromStack(
Devfile.JAVA_MAVEN, WORKSPACE_NAME2, Collections.emptyList(), null);
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME2);
}
@BeforeMethod
@ -121,24 +83,27 @@ public class WorkspacesListTest {
@AfterClass
public void tearDown() throws Exception {
testWorkspaceServiceClient.delete(
expectedNewestWorkspaceItem.getWorkspaceName(), defaultTestUser.getName());
workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName());
workspaceServiceClient.delete(WORKSPACE_NAME2, defaultTestUser.getName());
workspaceServiceClient.delete(NEWEST_CREATED_WORKSPACE_NAME, defaultTestUser.getName());
}
@Test
public void shouldDisplayElements() throws Exception {
workspaces.waitPageLoading();
dashboard.waitWorkspacesCountInWorkspacesItem(getWorkspacesCount());
dashboard.waitWorkspacesCountInWorkspacesItem(testWorkspaceServiceClient.getWorkspacesCount());
checkExpectedBlankWorkspaceDisplaying();
workspaces.waitWorkspaceIsPresent(WORKSPACE_NAME);
Assert.assertEquals(workspaces.getWorkspaceProjectsValue(WORKSPACE_NAME), "1");
checkExpectedJavaWorkspaceDisplaying();
workspaces.waitWorkspaceIsPresent(WORKSPACE_NAME2);
Assert.assertEquals(workspaces.getWorkspaceProjectsValue(WORKSPACE_NAME), "1");
}
@Test
public void checkWorkspaceSelectingByCheckbox() throws Exception {
String blankWorkspaceName = blankWorkspace.getName();
String javaWorkspaceName = javaWorkspace.getName();
public void checkWorkspaceSelectingByCheckbox() {
String blankWorkspaceName = WORKSPACE_NAME;
String javaWorkspaceName = WORKSPACE_NAME2;
workspaces.waitPageLoading();
@ -209,89 +174,37 @@ public class WorkspacesListTest {
}
@Test(groups = UNDER_REPAIR)
public void checkSorting() {
workspaces.waitPageLoading();
workspaces.clickOnRamButton();
List<Workspaces.WorkspaceListItem> items = workspaces.getVisibleWorkspaces();
// items are sorted by name, check is present for ensuring of items order
if (items.get(0).getRamAmount() != BLANK_WS_MB) {
workspaces.clickOnRamButton();
items = workspaces.getVisibleWorkspaces();
}
// check items order after "RAM" clicking
try {
assertEquals(items.get(0).getRamAmount(), BLANK_WS_MB);
assertEquals(items.get(1).getRamAmount(), JAVA_WS_MB);
} catch (AssertionError ex) {
// remove try-catch block after issue has been resolved
fail("Known permanent failure https://github.com/eclipse/che/issues/4242");
}
// check reverse order after "RAM" clicking
workspaces.clickOnRamButton();
items = workspaces.getVisibleWorkspaces();
try {
assertEquals(items.get(0).getRamAmount(), JAVA_WS_MB);
assertEquals(items.get(1).getRamAmount(), BLANK_WS_MB);
} catch (AssertionError ex) {
// remove try-catch block after issue has been resolved
fail("Known permanent failure https://github.com/eclipse/che/issues/4242");
}
// check items order after "Projects" clicking
workspaces.clickOnProjectsButton();
items = workspaces.getVisibleWorkspaces();
assertEquals(items.get(0).getProjectsAmount(), BLANK_WS_PROJECTS_COUNT);
assertEquals(items.get(1).getProjectsAmount(), JAVA_WS_PROJECTS_COUNT);
// check items reverse order after "Projects" clicking
workspaces.clickOnProjectsButton();
items = workspaces.getVisibleWorkspaces();
assertEquals(items.get(0).getProjectsAmount(), JAVA_WS_PROJECTS_COUNT);
assertEquals(items.get(1).getProjectsAmount(), BLANK_WS_PROJECTS_COUNT);
}
@Test
public void checkSearchField() throws Exception {
int nameLength = expectedBlankItem.getWorkspaceName().length();
int existingWorkspacesCount = getWorkspacesCount();
String sequenceForSearch =
expectedBlankItem.getWorkspaceName().substring(nameLength - 5, nameLength);
int nameLength = WORKSPACE_NAME.length();
int existingWorkspacesCount = testWorkspaceServiceClient.getWorkspacesCount();
String sequenceForSearch = WORKSPACE_NAME.substring(nameLength - 5, nameLength);
workspaces.waitVisibleWorkspacesCount(existingWorkspacesCount);
workspaces.typeToSearchInput(sequenceForSearch);
workspaces.waitVisibleWorkspacesCount(EXPECTED_SORTED_WORKSPACES_COUNT);
try {
workspaces.waitVisibleWorkspacesCount(EXPECTED_SEARCHED_WORKSPACES_COUNT);
} catch (TimeoutException ex) {
// remove try-catch block after issue has been resolved
fail("Known permanent failure https://github.com/eclipse/che/issues/13950");
}
List<Workspaces.WorkspaceListItem> items = workspaces.getVisibleWorkspaces();
assertEquals(items.get(0).getWorkspaceName(), expectedBlankItem.getWorkspaceName());
assertEquals(items.get(0).getWorkspaceName(), WORKSPACE_NAME);
// check displaying list size
workspaces.typeToSearchInput("");
workspaces.waitVisibleWorkspacesCount(getWorkspacesCount());
workspaces.waitVisibleWorkspacesCount(testWorkspaceServiceClient.getWorkspacesCount());
// check that expected blank and java items are displaying, in sum with previous items count
// checking it gives a full workspaces list checking
checkExpectedBlankWorkspaceDisplaying();
checkExpectedJavaWorkspaceDisplaying();
workspaces.waitWorkspaceIsPresent(WORKSPACE_NAME);
Assert.assertEquals(workspaces.getWorkspaceProjectsValue(WORKSPACE_NAME), "1");
workspaces.waitWorkspaceIsPresent(WORKSPACE_NAME2);
Assert.assertEquals(workspaces.getWorkspaceProjectsValue(WORKSPACE_NAME), "1");
}
@Test
public void checkWorkspaceActions() throws Exception {
workspaces.waitPageLoading();
String mainWindow = seleniumWebDriver.getWindowHandle();
// check documentation link
workspaces.clickOnDocumentationLink();
seleniumWebDriverHelper.waitOpenedSomeWin();
seleniumWebDriverHelper.switchToNextWindow(mainWindow);
documentationPage.waitTitle(EXPECTED_DOCUMENTATION_PAGE_TITLE);
seleniumWebDriver.close();
seleniumWebDriver.switchTo().window(mainWindow);
// go to workspace details by clicking on item in workspaces list
workspaces.clickOnAddWorkspaceBtn();
@ -301,18 +214,17 @@ public class WorkspacesListTest {
workspaces.waitPageLoading();
workspaces.clickOnWorkspaceListItem(
defaultTestUser.getName(), expectedBlankItem.getWorkspaceName());
workspaces.clickOnWorkspaceListItem(defaultTestUser.getName(), WORKSPACE_NAME);
workspaceOverview.checkNameWorkspace(expectedBlankItem.getWorkspaceName());
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME);
seleniumWebDriver.navigate().back();
// check "Add project" button
workspaces.waitPageLoading();
workspaces.moveCursorToWorkspaceRamSection(expectedJavaItem.getWorkspaceName());
workspaces.clickOnWorkspaceAddProjectButton(expectedJavaItem.getWorkspaceName());
workspaces.moveCursorToWorkspaceRamSection(WORKSPACE_NAME2);
workspaces.clickOnWorkspaceAddProjectButton(WORKSPACE_NAME2);
workspaceProjects.waitProjectIsPresent(EXPECTED_JAVA_PROJECT_NAME);
@ -321,8 +233,8 @@ public class WorkspacesListTest {
// check "Workspace configuration" button
workspaces.waitPageLoading();
workspaces.moveCursorToWorkspaceRamSection(expectedJavaItem.getWorkspaceName());
workspaces.clickOnWorkspaceConfigureButton(expectedJavaItem.getWorkspaceName());
workspaces.moveCursorToWorkspaceRamSection(WORKSPACE_NAME2);
workspaces.clickOnWorkspaceConfigureButton(WORKSPACE_NAME2);
workspaceConfig.waitConfigForm();
seleniumWebDriver.navigate().back();
@ -330,12 +242,12 @@ public class WorkspacesListTest {
// check stop/start button
workspaces.waitPageLoading();
workspaces.moveCursorToWorkspaceRamSection(expectedJavaItem.getWorkspaceName());
workspaces.clickOnWorkspaceStopStartButton(expectedJavaItem.getWorkspaceName());
workspaces.waitWorkspaceStatus(expectedJavaItem.getWorkspaceName(), Status.STOPPED);
workspaces.moveCursorToWorkspaceRamSection(WORKSPACE_NAME2);
workspaces.clickOnWorkspaceStopStartButton(WORKSPACE_NAME2);
workspaces.waitWorkspaceStatus(WORKSPACE_NAME2, Status.RUNNING);
workspaces.clickOnWorkspaceStopStartButton(expectedJavaItem.getWorkspaceName());
workspaces.waitWorkspaceStatus(expectedJavaItem.getWorkspaceName(), Status.RUNNING);
workspaces.clickOnWorkspaceStopStartButton(WORKSPACE_NAME2);
workspaces.waitWorkspaceStatus(WORKSPACE_NAME2, Status.STOPPED);
// check adding the workspace to list
workspaces.clickOnAddWorkspaceBtn();
@ -348,46 +260,17 @@ public class WorkspacesListTest {
dashboard.selectWorkspacesItemOnDashboard();
workspaces.waitPageLoading();
workspaces.waitVisibleWorkspacesCount(getWorkspacesCount());
Workspaces.WorkspaceListItem newestCreatedWorkspaceItem =
workspaces.getWorkspacesListItemByWorkspaceName(
workspaces.getVisibleWorkspaces(), NEWEST_CREATED_WORKSPACE_NAME);
assertTrue(newestCreatedWorkspaceItem.equals(expectedNewestWorkspaceItem));
workspaces.waitVisibleWorkspacesCount(testWorkspaceServiceClient.getWorkspacesCount());
}
@Test
public void deleteWorkspacesByCheckboxes() throws Exception {
@Test(priority = 1)
public void deleteWorkspacesByCheckboxes() {
workspaces.waitPageLoading();
workspaces.selectWorkspaceByCheckbox(workspaceToDelete.getName());
workspaces.selectWorkspaceByCheckbox(NEWEST_CREATED_WORKSPACE_NAME);
workspaces.clickOnDeleteWorkspacesBtn();
workspaces.clickOnDeleteButtonInDialogWindow();
workspaces.waitWorkspaceIsNotPresent(workspaceToDelete.getName());
}
private void checkExpectedBlankWorkspaceDisplaying() {
List<Workspaces.WorkspaceListItem> items = workspaces.getVisibleWorkspaces();
Workspaces.WorkspaceListItem currentDisplayingBlankItem =
workspaces.getWorkspacesListItemByWorkspaceName(
items, expectedBlankItem.getWorkspaceName());
assertEquals(currentDisplayingBlankItem, expectedBlankItem);
}
private void checkExpectedJavaWorkspaceDisplaying() {
List<Workspaces.WorkspaceListItem> items = workspaces.getVisibleWorkspaces();
Workspaces.WorkspaceListItem currentDisplayingJavaItem =
workspaces.getWorkspacesListItemByWorkspaceName(items, expectedJavaItem.getWorkspaceName());
assertEquals(currentDisplayingJavaItem, expectedJavaItem);
}
private int getWorkspacesCount() throws Exception {
return testWorkspaceServiceClient.getAll().size();
workspaces.waitWorkspaceIsNotPresent(NEWEST_CREATED_WORKSPACE_NAME);
}
}

View File

@ -11,193 +11,153 @@
*/
package org.eclipse.che.selenium.dashboard.workspaces.details;
import static org.eclipse.che.selenium.core.TestGroup.UNDER_REPAIR;
import static org.eclipse.che.selenium.core.project.ProjectTemplates.MAVEN_SPRING;
import static org.eclipse.che.commons.lang.NameGenerator.generate;
import static org.eclipse.che.selenium.pageobject.dashboard.ProjectSourcePage.Sources.GIT;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceDetails.WorkspaceDetailsTab.PROJECTS;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects.BottomButton.APPLY_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects.BottomButton.SAVE_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.ActionButton.ADD_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.ActionButton.CANCEL_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.SAMPLES_BUTTON;
import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples.TabButton.GIT_BUTTON;
import com.google.inject.Inject;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.selenium.core.client.TestProjectServiceClient;
import java.util.Collections;
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.core.workspace.TestWorkspace;
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.eclipse.che.selenium.pageobject.dashboard.NewWorkspace.Devfile;
import org.eclipse.che.selenium.pageobject.dashboard.ProjectSourcePage;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceDetails;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceOverview;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjects;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceProjectsSamples;
import org.eclipse.che.selenium.pageobject.dashboard.workspaces.Workspaces;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/** TODO rewrite to use che7 workspace */
@Test(groups = UNDER_REPAIR)
@Test
public class WorkspaceDetailsProjectsTest {
private static final String PROJECT_NAME = NameGenerator.generate("wsDetails", 4);
private static final String PROJECT_FOR_SEARCHING_NAME = NameGenerator.generate("searchWs", 4);
private static final String SPRING_SAMPLE_NAME = "web-java-spring";
private static final String CONSOLE_SAMPLE_NAME = "console-java-simple";
private static final String PROJECT_NAME = "console-java-simple";
private static final String WORKSPACE_NAME = generate("test-workspace", 4);
private static final String EXPECTED_SUCCESS_NOTIFICATION = "Success\n" + "Workspace updated.";
private static final String CHECKING_CHECKBOXES_PROJECT_NAME = "checkboxesProject";
private static final String CHECKING_CHECKBOXES_NEWEST_PROJECT_NAME = "newestProject";
private static final String PROJECTS_CANNOT_BE_REMOVED_IN_STOPPED_WORKSPACE_WARNING =
"Projects cannot be removed in stopped workspace.";
private static final String NEW_PROJECT_NAME = "console-java-simple-1";
@Inject private Dashboard dashboard;
@Inject private WorkspaceProjects workspaceProjects;
@Inject private TestWorkspace testWorkspace;
@Inject private TestWorkspace checkingCheckboxesWorkspace;
@Inject private Workspaces workspaces;
@Inject private WorkspaceDetails workspaceDetails;
@Inject private WorkspaceProjectsSamples workspaceProjectsSamples;
@Inject private TestWorkspaceServiceClient testWorkspaceServiceClient;
@Inject private TestProjectServiceClient testProjectServiceClient;
@Inject private WorkspaceOverview workspaceOverview;
@Inject private CreateWorkspaceHelper createWorkspaceHelper;
@Inject private ProjectSourcePage projectSourcePage;
@Inject private DefaultTestUser defaultTestUser;
@Inject private SeleniumWebDriverHelper seleniumWebDriverHelper;
@Inject private ProjectExplorer projectExplorer;
@Inject private TestWorkspaceServiceClient workspaceServiceClient;
@BeforeClass
public void setup() throws Exception {
// setup workspaces and projects
Path projectPath =
Paths.get(getClass().getResource("/projects/default-spring-project").toURI());
testProjectServiceClient.importProject(
testWorkspace.getId(), projectPath, PROJECT_NAME, MAVEN_SPRING);
testProjectServiceClient.importProject(
testWorkspace.getId(), projectPath, PROJECT_FOR_SEARCHING_NAME, MAVEN_SPRING);
testProjectServiceClient.importProject(
checkingCheckboxesWorkspace.getId(),
projectPath,
CHECKING_CHECKBOXES_PROJECT_NAME,
MAVEN_SPRING);
testProjectServiceClient.importProject(
checkingCheckboxesWorkspace.getId(),
projectPath,
CHECKING_CHECKBOXES_NEWEST_PROJECT_NAME,
MAVEN_SPRING);
testWorkspaceServiceClient.stop(
checkingCheckboxesWorkspace.getName(), defaultTestUser.getName());
// open dashboard
public void setup() {
dashboard.open();
dashboard.waitDashboardToolbarTitle();
createWorkspaceHelper.createAndEditWorkspaceFromStack(
Devfile.JAVA_MAVEN, WORKSPACE_NAME, Collections.emptyList(), null);
workspaceOverview.checkNameWorkspace(WORKSPACE_NAME);
}
@AfterClass
public void tearDown() throws Exception {
workspaceServiceClient.delete(WORKSPACE_NAME, defaultTestUser.getName());
}
@Test
public void mainElementsShouldBePresent() throws Exception {
openWoprkspaceDetailsProjectsPage(testWorkspace.getName());
public void mainElementsShouldBePresent() {
openWorkspaceDetailsProjectsPage(WORKSPACE_NAME);
addSpringSampleToWorkspace();
checkProjectAppearanceAndButtonsState();
// reject added project
workspaceProjects.waitAndClickOn(WorkspaceProjects.BottomButton.CANCEL_BUTTON);
workspaceProjects.waitProjectIsNotPresent(SPRING_SAMPLE_NAME);
workspaceProjects.waitProjectIsNotPresent(NEW_PROJECT_NAME);
addSpringSampleToWorkspace();
checkProjectAppearanceAndButtonsState();
// save added project
workspaceProjects.waitAndClickOn(SAVE_BUTTON);
workspaceProjects.waitNotification(EXPECTED_SUCCESS_NOTIFICATION);
workspaceProjects.waitProjectIsPresent(SPRING_SAMPLE_NAME);
workspaceProjects.waitProjectIsPresent(NEW_PROJECT_NAME);
}
@Test
public void checkSearchField() throws Exception {
final String textForSearching = "sea";
@Test(priority = 1)
public void checkSearchField() {
final String textForSearching = "simple-1";
openWoprkspaceDetailsProjectsPage(testWorkspace.getName());
openWorkspaceDetailsProjectsPage(WORKSPACE_NAME);
// check searching
workspaceProjects.waitSearchField();
workspaceProjects.typeToSearchField(textForSearching);
workspaceProjects.waitProjectIsNotPresent(PROJECT_NAME);
workspaceProjects.waitProjectIsPresent(PROJECT_FOR_SEARCHING_NAME);
workspaceProjects.waitProjectIsPresent(NEW_PROJECT_NAME);
// check restoring of the projects list without any specified search information
workspaceProjects.typeToSearchField("");
workspaceProjects.waitProjectIsPresent(PROJECT_NAME);
workspaceProjects.waitProjectIsPresent(PROJECT_FOR_SEARCHING_NAME);
workspaceProjects.waitProjectIsPresent(NEW_PROJECT_NAME);
}
@Test(priority = 1)
public void checkOfCheckboxes() throws Exception {
openWoprkspaceDetailsProjectsPage(checkingCheckboxesWorkspace.getName());
public void checkOfCheckboxes() {
openWorkspaceDetailsProjectsPage(WORKSPACE_NAME);
// check of default checkboxes state
workspaceProjects.selectProject(CHECKING_CHECKBOXES_PROJECT_NAME);
workspaceProjects.selectProject(PROJECT_NAME);
workspaceProjects.waitDeleteButtonDisabling();
workspaceProjects.waitDeleteButtonMessage(
PROJECTS_CANNOT_BE_REMOVED_IN_STOPPED_WORKSPACE_WARNING);
// check behavior with one selected checkbox
workspaceProjects.selectProject(CHECKING_CHECKBOXES_PROJECT_NAME);
workspaceProjects.selectProject(PROJECT_NAME);
workspaceProjects.waitDeleteButtonDisappearance();
workspaceProjects.waitDeleteButtonMessageDisappearance();
// check enabling behavior of the "select all" checkbox
workspaceProjects.clickOnSelectAllCheckbox();
workspaceProjects.waitCheckboxEnabled(
CHECKING_CHECKBOXES_PROJECT_NAME, CHECKING_CHECKBOXES_NEWEST_PROJECT_NAME);
workspaceProjects.waitCheckboxEnabled(PROJECT_NAME, NEW_PROJECT_NAME);
workspaceProjects.waitDeleteButtonDisabling();
workspaceProjects.waitDeleteButtonMessage(
PROJECTS_CANNOT_BE_REMOVED_IN_STOPPED_WORKSPACE_WARNING);
// check disabling behavior of the "select all" checkbox
workspaceProjects.clickOnSelectAllCheckbox();
workspaceProjects.waitCheckboxDisabled(
CHECKING_CHECKBOXES_PROJECT_NAME, CHECKING_CHECKBOXES_NEWEST_PROJECT_NAME);
workspaceProjects.waitCheckboxDisabled(PROJECT_NAME, NEW_PROJECT_NAME);
workspaceProjects.waitDeleteButtonMessageDisappearance();
workspaceProjects.waitDeleteButtonMessageDisappearance();
// check of all projects presentation in the ran workspace
workspaceDetails.clickOpenInIdeWsBtn();
seleniumWebDriverHelper.switchToIdeFrameAndWaitAvailability();
projectExplorer.waitProjectExplorer();
projectExplorer.waitItem(CHECKING_CHECKBOXES_PROJECT_NAME);
projectExplorer.waitItem(CHECKING_CHECKBOXES_NEWEST_PROJECT_NAME);
}
private void addSpringSampleToWorkspace() {
workspaceProjects.clickOnAddNewProjectButton();
workspaceProjectsSamples.waitSamplesForm();
workspaceProjectsSamples.waitTabSelected(SAMPLES_BUTTON);
workspaceProjectsSamples.waitAllCheckboxesDisabled(SPRING_SAMPLE_NAME, CONSOLE_SAMPLE_NAME);
workspaceProjectsSamples.waitTabSelected(GIT_BUTTON);
workspaceProjectsSamples.waitButtonDisabled(ADD_BUTTON, CANCEL_BUTTON);
workspaceProjectsSamples.clickOnAllCheckboxes(SPRING_SAMPLE_NAME);
workspaceProjectsSamples.waitAllCheckboxesEnabled(SPRING_SAMPLE_NAME);
workspaceProjectsSamples.waitButtonEnabled(ADD_BUTTON, CANCEL_BUTTON);
projectSourcePage.selectSourceTab(GIT);
projectSourcePage.typeGitRepositoryLocation(
"https://github.com/che-samples/console-java-simple.git");
projectSourcePage.clickOnAddProjectButton();
workspaceProjectsSamples.clickOnButton(ADD_BUTTON);
workspaceProjects.waitEnabled(
WorkspaceProjects.BottomButton.CANCEL_BUTTON, APPLY_BUTTON, SAVE_BUTTON);
workspaceProjects.waitProjectIsPresent(SPRING_SAMPLE_NAME);
workspaceProjects.waitEnabled(WorkspaceProjects.BottomButton.CANCEL_BUTTON, SAVE_BUTTON);
workspaceProjects.waitProjectIsPresent(NEW_PROJECT_NAME);
}
private void checkProjectAppearanceAndButtonsState() {
workspaceProjects.waitProjectIsPresent(SPRING_SAMPLE_NAME);
workspaceProjects.waitEnabled(
APPLY_BUTTON, SAVE_BUTTON, WorkspaceProjects.BottomButton.CANCEL_BUTTON);
workspaceProjects.waitProjectIsPresent(NEW_PROJECT_NAME);
workspaceProjects.waitEnabled(SAVE_BUTTON, WorkspaceProjects.BottomButton.CANCEL_BUTTON);
}
private void openWoprkspaceDetailsProjectsPage(String workspaceName) throws Exception {
private void openWorkspaceDetailsProjectsPage(String workspaceName) {
dashboard.selectWorkspacesItemOnDashboard();
workspaces.waitPageLoading();
workspaces.selectWorkspaceItemName(workspaceName);