From 5ec45e4f7603ed395671a2652b50a6a94f9a5fec Mon Sep 17 00:00:00 2001 From: Skorik Sergey Date: Tue, 27 Aug 2019 12:58:47 +0300 Subject: [PATCH 1/4] adapt selenium theia pageobjects according to changes in Che Theia --- .../eclipse/che/selenium/pageobject/theia/TheiaIde.java | 6 +++--- .../che/selenium/pageobject/theia/TheiaProjectTree.java | 7 +++---- .../selenium/dashboard/CreateAndDeleteProjectsTest.java | 7 +++---- .../selenium/dashboard/ImportMavenProjectFromGitTest.java | 4 ---- .../selenium/dashboard/ImportProjectFromGitHubTest.java | 4 ---- .../factory/DirectUrlFactoryWithRootFolderTest.java | 4 +--- .../factory/DirectUrlFactoryWithSpecificBranchTest.java | 4 +--- .../eclipse/che/selenium/theia/TheiaBuildPluginTest.java | 1 - 8 files changed, 11 insertions(+), 26 deletions(-) diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java index fad4a67e3b0..5bfbf747d9b 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java @@ -57,11 +57,11 @@ public interface Locators { String ABOUT_DIALOG_CONTENT_XPATH = ABOUT_DIALOG_XPATH + "//div[@class='dialogContent']"; String ABOUT_DIALOG_OK_BUTTON_XPATH = ABOUT_DIALOG_XPATH + "//button"; String NOTIFICATION_MESSAGE_EQUALS_TO_XPATH_TEMPLATE = - "//div[@class='theia-NotificationsContainer']//p[text()='%s']"; + "//div[@class='theia-notification-list-item']//div[@class='theia-notification-message']//span[text()='%s']"; String NOTIFICATION_MESSAGE_CONTAINS_XPATH_TEMPLATE = - "//div[@class='theia-NotificationsContainer']//p[contains(text(), '%s')]"; + "//div[@class='theia-notification-list-item']//div[@class='theia-notification-message']//span[contains(text(), '%s')]"; String NOTIFICATION_CLOSE_BUTTON = - "//div[@class='theia-NotificationsContainer']//button[text()='Close']"; + "//div[@class='theia-notification-buttons']//button[@data-action='Close']"; String BRANCH_NAME_XPATH = "//div[@id='theia-statusBar']//div[contains(@title,'Git')]"; } diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java index f19c758dab2..032b49783f1 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java @@ -62,8 +62,7 @@ public interface Locators { String COLLAPSED_ITEM_XPATH_TEMPLATE = "//div[@data-node-id='/projects:/projects/%s' and contains(@class, 'theia-mod-collapsed')]"; String EXPAND_ITEM_ICON_XPATH_TEMPLATE = "//div[@data-node-id='/projects:/projects/%s']"; - String FILES_TAB_XPATH = - "//div[contains(@class, 'theia-app-left')]//ul[@class='p-TabBar-content']//li[@title='Explorer']"; + String FILES_TAB_XPATH = "shell-tab-explorer-view-container"; String OPEN_WORKSPACE_BUTTON_XPATH = "//button[@class='open-workspace-button']"; } @@ -77,12 +76,12 @@ public void clickOnOpenWorkspaceButton() { public void clickOnFilesTab() { seleniumWebDriverHelper.waitNoExceptions( - () -> seleniumWebDriverHelper.waitAndClick(By.xpath(FILES_TAB_XPATH)), + () -> seleniumWebDriverHelper.waitAndClick(By.id(FILES_TAB_XPATH)), WebDriverException.class); } public void waitFilesTab() { - seleniumWebDriverHelper.waitVisibility(By.xpath(FILES_TAB_XPATH)); + seleniumWebDriverHelper.waitVisibility(By.id(FILES_TAB_XPATH)); } public void waitProjectAreaOpened() { diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java index 606671dc434..dbc07f744f9 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java @@ -12,7 +12,6 @@ package org.eclipse.che.selenium.dashboard; 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.pageobject.dashboard.ProjectSourcePage.Template.CONSOLE_JAVA_SIMPLE; import static org.eclipse.che.selenium.pageobject.dashboard.workspaces.WorkspaceDetails.WorkspaceDetailsTab.PROJECTS; @@ -37,7 +36,6 @@ import org.testng.annotations.Test; /** @author Andrey Chizhikov */ -@Test(groups = UNDER_REPAIR) public class CreateAndDeleteProjectsTest { private static final String WORKSPACE = generate("workspace", 4); @@ -99,13 +97,14 @@ public void createProjectTest() { // switch to the IDE and wait for workspace is ready to use theiaIde.switchToIdeFrame(); theiaIde.waitTheiaIde(); + theiaIde.waitLoaderInvisibility(); + theiaIde.waitTheiaIdeTopPanel(); theiaProjectTree.waitFilesTab(); + theiaProjectTree.clickOnFilesTab(); // wait for projects in the tree - theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); theiaProjectTree.waitProjectAreaOpened(); theiaProjectTree.waitItem(CONSOLE_JAVA_SIMPLE); theiaProjectTree.waitItem(SECOND_CONSOLE_JAVA_SIMPLE_PROJECT_NAME); diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportMavenProjectFromGitTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportMavenProjectFromGitTest.java index 9f4cd73fdac..8da9c693838 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportMavenProjectFromGitTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportMavenProjectFromGitTest.java @@ -12,7 +12,6 @@ package org.eclipse.che.selenium.dashboard; 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.pageobject.dashboard.ProjectSourcePage.Sources.GIT; import com.google.inject.Inject; @@ -36,7 +35,6 @@ import org.testng.annotations.Test; /** @author Andrey Chizhikov */ -@Test(groups = UNDER_REPAIR) public class ImportMavenProjectFromGitTest { private final String WORKSPACE = generate("ImtMvnPrjGit", 4); @@ -101,8 +99,6 @@ public void checkAbilityImportMavenProjectTest() { // wait the project in the tree theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); - theiaProjectTree.waitProjectAreaOpened(); theiaProjectTree.waitItem(testProjectName); } } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportProjectFromGitHubTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportProjectFromGitHubTest.java index eedc8115e22..03b058cfaed 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportProjectFromGitHubTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/ImportProjectFromGitHubTest.java @@ -12,7 +12,6 @@ package org.eclipse.che.selenium.dashboard; 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.utils.WaitUtils.sleepQuietly; import static org.eclipse.che.selenium.pageobject.dashboard.ProjectSourcePage.Sources.GITHUB; import static org.testng.AssertJUnit.assertTrue; @@ -41,7 +40,6 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -@Test(groups = UNDER_REPAIR) public class ImportProjectFromGitHubTest { private static final String WORKSPACE = generate(ImportProjectFromGitHubTest.class.getSimpleName(), 4); @@ -125,8 +123,6 @@ public void checkAbilityImportProjectFromGithub() { // wait the project in the tree theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); - theiaProjectTree.waitProjectAreaOpened(); theiaProjectTree.waitItem(projectName); } diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithRootFolderTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithRootFolderTest.java index 2dd124346b4..6de230a3482 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithRootFolderTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithRootFolderTest.java @@ -13,7 +13,6 @@ import static org.eclipse.che.selenium.core.TestGroup.GITHUB; import static org.eclipse.che.selenium.core.TestGroup.OPENSHIFT; -import static org.eclipse.che.selenium.core.TestGroup.UNDER_REPAIR; import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.UPDATING_PROJECT_TIMEOUT_SEC; import com.google.inject.Inject; @@ -33,7 +32,7 @@ import org.testng.annotations.Test; /** @author Musienko Maxim */ -@Test(groups = {GITHUB, OPENSHIFT, UNDER_REPAIR}) +@Test(groups = {GITHUB, OPENSHIFT}) public class DirectUrlFactoryWithRootFolderTest { private static final Logger LOG = LoggerFactory.getLogger(DirectUrlFactoryWithRootFolderTest.class); @@ -97,7 +96,6 @@ public void factoryWithDirectUrlWithRootFolder() { theiaProjectTree.waitFilesTab(); theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); theiaProjectTree.waitItem(repositoryName); theiaProjectTree.expandItem(repositoryName); diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithSpecificBranchTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithSpecificBranchTest.java index b65b45885f4..24b26de5456 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithSpecificBranchTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/factory/DirectUrlFactoryWithSpecificBranchTest.java @@ -14,7 +14,6 @@ import static org.eclipse.che.selenium.core.CheSeleniumSuiteModule.AUXILIARY; import static org.eclipse.che.selenium.core.TestGroup.GITHUB; import static org.eclipse.che.selenium.core.TestGroup.OPENSHIFT; -import static org.eclipse.che.selenium.core.TestGroup.UNDER_REPAIR; import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.UPDATING_PROJECT_TIMEOUT_SEC; import static org.testng.AssertJUnit.assertEquals; @@ -37,7 +36,7 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -@Test(groups = {GITHUB, OPENSHIFT, UNDER_REPAIR}) +@Test(groups = {GITHUB, OPENSHIFT}) public class DirectUrlFactoryWithSpecificBranchTest { private static final Logger LOG = LoggerFactory.getLogger(DirectUrlFactoryWithSpecificBranchTest.class); @@ -97,7 +96,6 @@ public void factoryWithDirectUrlWithSpecificBranch() { theiaProjectTree.waitFilesTab(); theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); theiaProjectTree.waitItem(repositoryName); theiaProjectTree.expandItem(repositoryName); diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/theia/TheiaBuildPluginTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/theia/TheiaBuildPluginTest.java index 14ae5af0048..eea0dd754fa 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/theia/TheiaBuildPluginTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/theia/TheiaBuildPluginTest.java @@ -99,7 +99,6 @@ public void pluginShouldBeBuilt() { // prepare project tree theiaProjectTree.waitFilesTab(); theiaProjectTree.clickOnFilesTab(); - theiaProjectTree.waitProjectsRootItem(); theiaIde.waitNotificationDisappearance( "Che Workspace: Finished cloning projects.", UPDATING_PROJECT_TIMEOUT_SEC); From dfecbf030d99044127f32efcf081251012bd4eb6 Mon Sep 17 00:00:00 2001 From: Skorik Sergey Date: Tue, 27 Aug 2019 14:25:50 +0300 Subject: [PATCH 2/4] stabilize switching to Theia IDE frame --- .../eclipse/che/selenium/pageobject/theia/TheiaIde.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java index 5bfbf747d9b..f86205c9f72 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java @@ -28,6 +28,7 @@ import org.eclipse.che.selenium.core.utils.WaitUtils; import org.eclipse.che.selenium.core.webdriver.SeleniumWebDriverHelper; import org.openqa.selenium.By; +import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; @@ -208,7 +209,12 @@ public void switchToIdeFrame() { seleniumWebDriverHelper.waitVisibility(By.xpath(ideWindowXpath), PREPARING_WS_TIMEOUT_SEC); // switch to IDE frame - seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); + try { + seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); + waitTheiaIde(); + } catch (TimeoutException ex) { + seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); + } } public void pressKeyCombination(CharSequence... combination) { From d1d0d9f511c20d16ca7f32d97d25da1276b5c654 Mon Sep 17 00:00:00 2001 From: Skorik Sergey Date: Tue, 27 Aug 2019 16:45:04 +0300 Subject: [PATCH 3/4] revert switch to frame changes --- .../eclipse/che/selenium/pageobject/theia/TheiaIde.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java index f86205c9f72..5bfbf747d9b 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaIde.java @@ -28,7 +28,6 @@ import org.eclipse.che.selenium.core.utils.WaitUtils; import org.eclipse.che.selenium.core.webdriver.SeleniumWebDriverHelper; import org.openqa.selenium.By; -import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; @@ -209,12 +208,7 @@ public void switchToIdeFrame() { seleniumWebDriverHelper.waitVisibility(By.xpath(ideWindowXpath), PREPARING_WS_TIMEOUT_SEC); // switch to IDE frame - try { - seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); - waitTheiaIde(); - } catch (TimeoutException ex) { - seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); - } + seleniumWebDriverHelper.waitAndSwitchToFrame(By.id(ideFrameId), PREPARING_WS_TIMEOUT_SEC); } public void pressKeyCombination(CharSequence... combination) { From 17fa1f151804360105ee97a7ddd2b9f921eafcd0 Mon Sep 17 00:00:00 2001 From: Skorik Sergey Date: Tue, 27 Aug 2019 16:48:34 +0300 Subject: [PATCH 4/4] formatter --- .../che/selenium/pageobject/theia/TheiaProjectTree.java | 9 ++++----- .../selenium/dashboard/CreateAndDeleteProjectsTest.java | 2 -- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java index 032b49783f1..9a7ce592619 100644 --- a/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java +++ b/selenium/che-selenium-test/src/main/java/org/eclipse/che/selenium/pageobject/theia/TheiaProjectTree.java @@ -13,7 +13,7 @@ import static java.lang.String.format; import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.EXPAND_ITEM_ICON_XPATH_TEMPLATE; -import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.FILES_TAB_XPATH; +import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.FILES_TAB_ID; import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.OPEN_WORKSPACE_BUTTON_XPATH; import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.PROJECT_TREE_CONTAINER_ID; import static org.eclipse.che.selenium.pageobject.theia.TheiaProjectTree.Locators.ROOT_PROJECTS_FOLDER_ID; @@ -62,7 +62,7 @@ public interface Locators { String COLLAPSED_ITEM_XPATH_TEMPLATE = "//div[@data-node-id='/projects:/projects/%s' and contains(@class, 'theia-mod-collapsed')]"; String EXPAND_ITEM_ICON_XPATH_TEMPLATE = "//div[@data-node-id='/projects:/projects/%s']"; - String FILES_TAB_XPATH = "shell-tab-explorer-view-container"; + String FILES_TAB_ID = "shell-tab-explorer-view-container"; String OPEN_WORKSPACE_BUTTON_XPATH = "//button[@class='open-workspace-button']"; } @@ -76,12 +76,11 @@ public void clickOnOpenWorkspaceButton() { public void clickOnFilesTab() { seleniumWebDriverHelper.waitNoExceptions( - () -> seleniumWebDriverHelper.waitAndClick(By.id(FILES_TAB_XPATH)), - WebDriverException.class); + () -> seleniumWebDriverHelper.waitAndClick(By.id(FILES_TAB_ID)), WebDriverException.class); } public void waitFilesTab() { - seleniumWebDriverHelper.waitVisibility(By.id(FILES_TAB_XPATH)); + seleniumWebDriverHelper.waitVisibility(By.id(FILES_TAB_ID)); } public void waitProjectAreaOpened() { diff --git a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java index dbc07f744f9..6f7759f73b5 100644 --- a/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java +++ b/selenium/che-selenium-test/src/test/java/org/eclipse/che/selenium/dashboard/CreateAndDeleteProjectsTest.java @@ -97,9 +97,7 @@ public void createProjectTest() { // switch to the IDE and wait for workspace is ready to use theiaIde.switchToIdeFrame(); theiaIde.waitTheiaIde(); - theiaIde.waitLoaderInvisibility(); - theiaIde.waitTheiaIdeTopPanel(); theiaProjectTree.waitFilesTab(); theiaProjectTree.clickOnFilesTab();