From 7e344ab1ffb4d4687c9572bd902de39a0c730710 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Thu, 9 Apr 2020 16:17:33 +0200 Subject: [PATCH] schrodinger improvements --- .../schrodinger/page/TaskPageTest.java | 2 +- tools/schrodinger/.gitignore | 3 ++ tools/schrodinger/pom.xml | 6 ++++ .../component/common/TabPanel.java | 7 +++- .../component/common/table/Table.java | 34 +++++++++++-------- .../component/common/table/TableRow.java | 15 ++++++++ .../component/task/TasksPageTable.java | 1 + .../page/AssignmentHolderDetailsPage.java | 29 ++++++++-------- .../midpoint/schrodinger/page/BasicPage.java | 11 +++--- .../schrodinger/page/cases/CasePage.java | 26 +++----------- .../schrodinger/page/org/NewOrgPage.java | 21 +----------- .../schrodinger/page/task/ListTasksPage.java | 2 +- .../schrodinger/page/task/TaskPage.java | 15 ++++---- .../schrodinger/page/user/UserPage.java | 33 ++++-------------- 14 files changed, 92 insertions(+), 113 deletions(-) create mode 100644 tools/schrodinger/.gitignore diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/page/TaskPageTest.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/page/TaskPageTest.java index a9778e5b890..de5e6612117 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/page/TaskPageTest.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/page/TaskPageTest.java @@ -45,7 +45,7 @@ public void test001createNewTask() { .clickSave(); ListTasksPage tasksPage = basicPage.listTasks(); - PrismForm> taskForm = tasksPage + PrismForm> taskForm = tasksPage .table() .search() .byName() diff --git a/tools/schrodinger/.gitignore b/tools/schrodinger/.gitignore new file mode 100644 index 00000000000..ea41d1e1eec --- /dev/null +++ b/tools/schrodinger/.gitignore @@ -0,0 +1,3 @@ +build + +chromedriver \ No newline at end of file diff --git a/tools/schrodinger/pom.xml b/tools/schrodinger/pom.xml index 066cd0c03cf..2f8c07682bf 100644 --- a/tools/schrodinger/pom.xml +++ b/tools/schrodinger/pom.xml @@ -64,5 +64,11 @@ testng test + + + com.google.guava + guava + test + diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/TabPanel.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/TabPanel.java index 02dbf359b18..87c978b4923 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/TabPanel.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/TabPanel.java @@ -9,9 +9,10 @@ import com.codeborne.selenide.Condition; import com.codeborne.selenide.SelenideElement; +import org.openqa.selenium.By; + import com.evolveum.midpoint.schrodinger.component.Component; import com.evolveum.midpoint.schrodinger.util.Schrodinger; -import org.openqa.selenium.By; /** * Created by Viliam Repan (lazyman). @@ -54,4 +55,8 @@ private SelenideElement verifyAndFetchActiveTab(SelenideElement link) { return li.parent().parent().$(By.cssSelector(".tab-pane.active")); } + + public SelenideElement getActiveTab() { + return getParentElement().$(By.cssSelector(".tab-pane.active")); + } } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/Table.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/Table.java index cf7fb130cd1..6d4b206f085 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/Table.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/Table.java @@ -34,20 +34,7 @@ public Table(T parent, SelenideElement parentElement) { } public TableRow rowByColumnLabel(String label, String rowValue) { - ElementsCollection headers = getParentElement().findAll("thead th div span[data-s-id=label]"); - int index = 1; - for (SelenideElement header : headers) { - String value = header.text(); - if (value == null) { - index++; - continue; - } - - if (Objects.equals(label, value)) { - break; - } - index++; - } + int index = findColumnByLabel(label); ElementsCollection rows = getParentElement().findAll("tbody tr"); for (SelenideElement row : rows) { @@ -65,6 +52,25 @@ public TableRow rowByColumnLabel(String label, String rowValue) { return null; } + public int findColumnByLabel(String label) { + ElementsCollection headers = getParentElement().findAll("thead th div span[data-s-id=label]"); + int index = 1; + for (SelenideElement header : headers) { + String value = header.text(); + if (value == null) { + index++; + continue; + } + + if (Objects.equals(label, value)) { + break; + } + index++; + } + + return index; + } + public TableRow rowByColumnResourceKey(String key, String rowValue) { // todo implement return null; diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/TableRow.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/TableRow.java index 8b600c1dec3..4a0208bf44f 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/TableRow.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/table/TableRow.java @@ -17,6 +17,7 @@ package com.evolveum.midpoint.schrodinger.component.common.table; import com.codeborne.selenide.SelenideElement; +import org.openqa.selenium.By; import com.evolveum.midpoint.schrodinger.component.Component; import com.evolveum.midpoint.schrodinger.component.common.InlineMenu; @@ -36,6 +37,20 @@ public TableRow clickCheckBox() { return this; } + public TableRow clickColumnByName(String name) { + int index = getParent().findColumnByLabel(name); + + SelenideElement a = getParentElement().$(By.cssSelector("td:nth-child(" + index + ") a")); + a.click(); + // todo implement + return this; + } + + public TableRow clickColumnByKey(String key) { + // todo implement + return this; + } + public InlineMenu getInlineMenu() { SelenideElement element = getParentElement().find("td:last-child div.btn-group"); if (element == null) { diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/task/TasksPageTable.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/task/TasksPageTable.java index a2828b62e7e..9d82e8aeb26 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/task/TasksPageTable.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/task/TasksPageTable.java @@ -25,6 +25,7 @@ public TasksPageTable(ListTasksPage parent, SelenideElement parentElement) { @Override public TaskPage clickByName(String name) { + getParentElement().$(Schrodinger.byElementValue("span", "data-s-id", "label", name)) .waitUntil(Condition.appears, MidPoint.TIMEOUT_DEFAULT_2_S).click(); diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/AssignmentHolderDetailsPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/AssignmentHolderDetailsPage.java index 9e9f5e9644a..85513612e6f 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/AssignmentHolderDetailsPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/AssignmentHolderDetailsPage.java @@ -6,6 +6,8 @@ */ package com.evolveum.midpoint.schrodinger.page; +import static com.codeborne.selenide.Selenide.$; + import com.codeborne.selenide.Condition; import com.codeborne.selenide.SelenideElement; @@ -16,12 +18,10 @@ import com.evolveum.midpoint.schrodinger.page.user.ProgressPage; import com.evolveum.midpoint.schrodinger.util.Schrodinger; -import static com.codeborne.selenide.Selenide.$; - /** * Created by honchar */ -public abstract class AssignmentHolderDetailsPage extends BasicPage { +public abstract class AssignmentHolderDetailsPage

extends BasicPage { public BasicPage clickBack() { $(Schrodinger.byDataResourceKey("pageAdminFocus.button.back")) @@ -48,23 +48,22 @@ private SelenideElement getPreviewButton() { return $(Schrodinger.byDataId("previewChanges")); } - protected TabPanel findTabPanel() { + public TabPanel getTabPanel() { SelenideElement tabPanelElement = $(Schrodinger.byDataId("div", "tabPanel")) .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); return new TabPanel<>(this, tabPanelElement); } - public abstract

AssignmentHolderBasicTab

selectTabBasic(); -// SelenideElement element = findTabPanel().clickTab("pageAdminFocus.basic") -// .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); -// -// return new AssignmentHolderBasicTab<>(getParentComponent(), element); -// } + public AssignmentHolderBasicTab

selectTabBasic() { + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.basic") + .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); + + return new AssignmentHolderBasicTab<>((P) this, element); + } - public abstract

AssignmentsTab

selectTabAssignments(); -// SelenideElement element = findTabPanel().clickTab("pageAdminFocus.assignments"); -// -// return new AssignmentsTab<>(getParentComponent(), element); -// } + public AssignmentsTab

selectTabAssignments() { + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.assignments"); + return new AssignmentsTab<>((P) this, element); + } } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java index a737f106e94..a69b043caf8 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/BasicPage.java @@ -6,13 +6,19 @@ */ package com.evolveum.midpoint.schrodinger.page; +import static com.codeborne.selenide.Selenide.$; + import com.codeborne.selenide.Condition; import com.codeborne.selenide.SelenideElement; import com.codeborne.selenide.WebDriverRunner; +import org.apache.commons.lang3.StringUtils; +import org.openqa.selenium.By; + import com.evolveum.midpoint.schrodinger.MidPoint; import com.evolveum.midpoint.schrodinger.component.LoggedUser; import com.evolveum.midpoint.schrodinger.component.common.FeedbackBox; import com.evolveum.midpoint.schrodinger.component.configuration.*; +import com.evolveum.midpoint.schrodinger.page.cases.*; import com.evolveum.midpoint.schrodinger.page.certification.*; import com.evolveum.midpoint.schrodinger.page.configuration.*; import com.evolveum.midpoint.schrodinger.page.org.NewOrgPage; @@ -38,13 +44,8 @@ import com.evolveum.midpoint.schrodinger.page.user.FormSubmittablePage; import com.evolveum.midpoint.schrodinger.page.user.ListUsersPage; import com.evolveum.midpoint.schrodinger.page.user.UserPage; -import com.evolveum.midpoint.schrodinger.page.cases.*; import com.evolveum.midpoint.schrodinger.util.ConstantsUtil; import com.evolveum.midpoint.schrodinger.util.Schrodinger; -import org.apache.commons.lang3.StringUtils; -import org.openqa.selenium.By; - -import static com.codeborne.selenide.Selenide.$; /** * Created by Viliam Repan (lazyman). diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/CasePage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/CasePage.java index 98a71060dbf..d154fe7a7b1 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/CasePage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/cases/CasePage.java @@ -6,11 +6,8 @@ */ package com.evolveum.midpoint.schrodinger.page.cases; -import com.codeborne.selenide.Condition; import com.codeborne.selenide.SelenideElement; -import com.evolveum.midpoint.schrodinger.MidPoint; -import com.evolveum.midpoint.schrodinger.component.AssignmentHolderBasicTab; -import com.evolveum.midpoint.schrodinger.component.AssignmentsTab; + import com.evolveum.midpoint.schrodinger.page.AssignmentHolderDetailsPage; /** @@ -18,35 +15,20 @@ */ public class CasePage extends AssignmentHolderDetailsPage { - @Override - public AssignmentHolderBasicTab selectTabBasic(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.basic") - .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); - - return new AssignmentHolderBasicTab(this, element); - } - - @Override - public AssignmentsTab selectTabAssignments(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.assignments"); - - return new AssignmentsTab(this, element); - } - public ChildrenCasesTab selectTabChildren(){ - SelenideElement element = findTabPanel().clickTab("PageCase.childCasesTab"); + SelenideElement element = getTabPanel().clickTab("PageCase.childCasesTab"); return new ChildrenCasesTab(this, element); } public OperationRequestTab selectTabOperationRequest(){ - SelenideElement element = findTabPanel().clickTab("PageCase.operationRequestTab"); + SelenideElement element = getTabPanel().clickTab("PageCase.operationRequestTab"); return new OperationRequestTab(this, element); } public WorkitemsTab selectTabWorkitems(){ - SelenideElement element = findTabPanel().clickTab("PageCase.workitemsTab"); + SelenideElement element = getTabPanel().clickTab("PageCase.workitemsTab"); return new WorkitemsTab(this, element); } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/org/NewOrgPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/org/NewOrgPage.java index af99ce36b98..c45cac4012e 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/org/NewOrgPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/org/NewOrgPage.java @@ -6,30 +6,11 @@ */ package com.evolveum.midpoint.schrodinger.page.org; -import com.codeborne.selenide.Condition; -import com.codeborne.selenide.SelenideElement; -import com.evolveum.midpoint.schrodinger.MidPoint; -import com.evolveum.midpoint.schrodinger.component.AssignmentHolderBasicTab; -import com.evolveum.midpoint.schrodinger.component.AssignmentsTab; import com.evolveum.midpoint.schrodinger.page.AssignmentHolderDetailsPage; /** * Created by Viliam Repan (lazyman). */ -public class NewOrgPage extends AssignmentHolderDetailsPage { - - @Override - public AssignmentHolderBasicTab selectTabBasic(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.basic") - .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); - - return new AssignmentHolderBasicTab(this, element); - } - - public AssignmentsTab selectTabAssignments(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.assignments"); - - return new AssignmentsTab(this, element); - } +public class NewOrgPage extends AssignmentHolderDetailsPage { } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/ListTasksPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/ListTasksPage.java index 8d6c7e49838..464bb1e09bc 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/ListTasksPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/ListTasksPage.java @@ -20,7 +20,7 @@ public class ListTasksPage extends AssignmentHolderObjectListPage { public TasksPageTable table() { - SelenideElement box = $(Schrodinger.byDataId("div", "table")); + SelenideElement box = $(Schrodinger.byDataId("div", "taskTable")); return new TasksPageTable(this, box); } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/TaskPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/TaskPage.java index 596b7126240..3f2aff91558 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/TaskPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/task/TaskPage.java @@ -29,7 +29,7 @@ /** * Created by Viliam Repan (lazyman). */ -public class TaskPage extends AssignmentHolderDetailsPage { +public class TaskPage extends AssignmentHolderDetailsPage { public PreviewPage clickPreviewChanges() { $(Schrodinger.byDataId("previewChanges")).click(); @@ -63,8 +63,7 @@ public TaskPage resumeStopRefreshing() { } public TaskPage clickRunNow() { - - $(Schrodinger.byDataResourceKey("span", "pageTaskEdit.button.runNow")).waitUntil(Condition.visible, MidPoint.TIMEOUT_DEFAULT_2_S).click(); + $(Schrodinger.byDataResourceKey("a", "pageTaskEdit.button.runNow")).waitUntil(Condition.visible, MidPoint.TIMEOUT_DEFAULT_2_S).click(); return this; } @@ -79,20 +78,20 @@ public boolean isRunNowVisible(){ } @Override - public

AssignmentHolderBasicTab

selectTabBasic() { - SelenideElement element = findTabPanel().clickTab("pageTask.basic.title") + public AssignmentHolderBasicTab selectTabBasic() { + SelenideElement element = getTabPanel().clickTab("pageTask.basic.title") .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); - return (AssignmentHolderBasicTab

) new TaskBasicTab(this, element); + return new TaskBasicTab(this, element); } @Override - public

AssignmentsTab

selectTabAssignments() { + public AssignmentsTab selectTabAssignments() { return null; } public AssignmentHolderBasicTab selectScheduleTab(){ - SelenideElement element = findTabPanel().clickTab("pageTask.schedule.title") + SelenideElement element = getTabPanel().clickTab("pageTask.schedule.title") .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); return new AssignmentHolderBasicTab(this, element); diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/user/UserPage.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/user/UserPage.java index d2cb59ec01a..05b97f2d85f 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/user/UserPage.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/page/user/UserPage.java @@ -10,13 +10,10 @@ import com.codeborne.selenide.Selenide; import com.codeborne.selenide.SelenideElement; import com.evolveum.midpoint.schrodinger.MidPoint; -import com.evolveum.midpoint.schrodinger.component.AssignmentHolderBasicTab; -import com.evolveum.midpoint.schrodinger.component.AssignmentsTab; import com.evolveum.midpoint.schrodinger.component.ProjectionsTab; import com.evolveum.midpoint.schrodinger.component.common.SummaryPanel; import com.evolveum.midpoint.schrodinger.component.user.*; import com.evolveum.midpoint.schrodinger.page.AssignmentHolderDetailsPage; -import com.evolveum.midpoint.schrodinger.page.PreviewPage; import com.evolveum.midpoint.schrodinger.util.Schrodinger; import org.openqa.selenium.By; @@ -26,7 +23,7 @@ /** * Created by Viliam Repan (lazyman). */ -public class UserPage extends AssignmentHolderDetailsPage { +public class UserPage extends AssignmentHolderDetailsPage { public UserPage checkForce() { setOptionChecked("executeOptions:force", true); @@ -69,37 +66,37 @@ public UserPage uncheckKeepDisplayingResults() { } public ProjectionsTab selectTabProjections() { - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.projections"); + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.projections"); Selenide.sleep(2000); return new ProjectionsTab(this, element); } public UserPersonasTab selectTabPersonas() { - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.personas"); + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.personas"); return new UserPersonasTab(this, element); } public UserTasksTab selectTabTasks() { - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.tasks"); + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.tasks"); return new UserTasksTab(this, element); } public UserHistoryTab selectTabHistory() { - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.objectHistory"); + SelenideElement element = getTabPanel().clickTab("pageAdminFocus.objectHistory"); return new UserHistoryTab(this, element); } public UserDelegationsTab selectTabDelegations() { - SelenideElement element = findTabPanel().clickTab("FocusType.delegations"); + SelenideElement element = getTabPanel().clickTab("FocusType.delegations"); return new UserDelegationsTab(this, element); } public UserDelegatedToMeTab selectTabDelegatedToMe() { - SelenideElement element = findTabPanel().clickTab("FocusType.delegatedToMe"); + SelenideElement element = getTabPanel().clickTab("FocusType.delegatedToMe"); return new UserDelegatedToMeTab(this, element); } @@ -121,20 +118,4 @@ public boolean isActivationState(String state) { return "".equals(summaryPanel.getText()); } } - - @Override - public AssignmentHolderBasicTab selectTabBasic(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.basic") - .waitUntil(Condition.appear, MidPoint.TIMEOUT_DEFAULT_2_S); - - return new AssignmentHolderBasicTab(this, element); - } - - @Override - public AssignmentsTab selectTabAssignments(){ - SelenideElement element = findTabPanel().clickTab("pageAdminFocus.assignments"); - - return new AssignmentsTab(this, element); - } - }