From cdca0558af4e095562e4e83cf74b189bbfef6ab3 Mon Sep 17 00:00:00 2001 From: Sergey Skorik <sskoryk@redhat.com> Date: Mon, 28 Oct 2019 12:28:43 +0200 Subject: [PATCH] [Selenium] Adapt selenium tests from dashboard package (#14980) --- .../AbstractTestWorkspaceServiceClient.java | 8 + .../client/TestWorkspaceServiceClient.java | 2 + .../dashboard/workspaces/WorkspaceConfig.java | 2 +- .../workspaces/WorkspaceDetails.java | 6 +- .../workspaces/WorkspaceProjects.java | 7 +- .../workspaces/WorkspaceProjectsSamples.java | 15 +- .../dashboard/workspaces/Workspaces.java | 4 +- .../dashboard/RenameWorkspaceTest.java | 3 + .../workspaces/WorkspacesListTest.java | 239 +++++------------- .../details/WorkspaceDetailsProjectsTest.java | 146 ++++------- 10 files changed, 138 insertions(+), 294 deletions(-) diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/AbstractTestWorkspaceServiceClient.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/AbstractTestWorkspaceServiceClient.java index 526085edf4..b24fb1eb30 100644 --- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/AbstractTestWorkspaceServiceClient.java +++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/AbstractTestWorkspaceServiceClient.java @@ -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 { diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java index a2ae0f782b..c551b0a0fa 100644 --- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java +++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java @@ -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; diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceConfig.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceConfig.java index 3e78f04856..815000b7d5 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceConfig.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceConfig.java @@ -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']"; } diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceDetails.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceDetails.java index aa82557d49..68fbab72cf 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceDetails.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceDetails.java @@ -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; diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjects.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjects.java index 7b2e14229b..8c57d08489 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjects.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjects.java @@ -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)))); diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjectsSamples.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjectsSamples.java index 8dd584fd60..08da2a713f 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjectsSamples.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/WorkspaceProjectsSamples.java @@ -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)); } diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/Workspaces.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/Workspaces.java index 57a82aa858..a828dedaf2 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/Workspaces.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/dashboard/workspaces/Workspaces.java @@ -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; diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/RenameWorkspaceTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/RenameWorkspaceTest.java index d6928f2635..658a948b72 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/RenameWorkspaceTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/RenameWorkspaceTest.java @@ -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); diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/WorkspacesListTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/WorkspacesListTest.java index eaef2b087b..b34f1bf17c 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/WorkspacesListTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/WorkspacesListTest.java @@ -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(); - } + public void checkSearchField() throws Exception { + int nameLength = WORKSPACE_NAME.length(); + int existingWorkspacesCount = testWorkspaceServiceClient.getWorkspacesCount(); + String sequenceForSearch = WORKSPACE_NAME.substring(nameLength - 5, nameLength); - // 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"); - } + workspaces.waitVisibleWorkspacesCount(existingWorkspacesCount); + workspaces.typeToSearchInput(sequenceForSearch); - // 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) { + 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/4242"); + fail("Known permanent failure https://github.com/eclipse/che/issues/13950"); } - // 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); - - workspaces.waitVisibleWorkspacesCount(existingWorkspacesCount); - - workspaces.typeToSearchInput(sequenceForSearch); - workspaces.waitVisibleWorkspacesCount(EXPECTED_SORTED_WORKSPACES_COUNT); 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); } } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/details/WorkspaceDetailsProjectsTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/details/WorkspaceDetailsProjectsTest.java index c5239a5591..d07efd9c3e 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/details/WorkspaceDetailsProjectsTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/workspaces/details/WorkspaceDetailsProjectsTest.java @@ -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); - - workspaceProjectsSamples.clickOnButton(ADD_BUTTON); + projectSourcePage.selectSourceTab(GIT); + projectSourcePage.typeGitRepositoryLocation( + "https://github.com/che-samples/console-java-simple.git"); + projectSourcePage.clickOnAddProjectButton(); - 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); -- GitLab