bug3529 Added selenium test for overall leaderboard

This commit is contained in:
Vladislav Chumak committed 2017-04-04 15:38:21 +02:00
1 parent 3d47e58f68
commit cdfa2140dc
5 files changed
+181 -158

No files matched your search

@@ -6,7 +6,7 @@ import org.openqa.selenium.WebElement;
import com.sap.sailing.selenium.core.BySeleniumId;
import com.sap.sailing.selenium.core.FindBy;
import com.sap.sailing.selenium.pages.common.SettingsDialogPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsDialogPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsPanelPO;
public class LeaderboardUrlConfigurationDialogPO extends SettingsDialogPO {
@@ -26,9 +26,9 @@ public class LeaderboardUrlConfigurationDialogPO extends SettingsDialogPO {
super(driver, element);
}
public LeaderboardSettingsDialogPO goToLeaderboardSettings() {
goToTab(tabbedSettingsDialogTabPanel, LEADERBOARD_SETTINGS_TAB_LABEL, LEADERBOARD_SETTINGS_TAB_IDENTIFIER, TabPanelType.TAB_PANEL);
return new LeaderboardSettingsDialogPO(this.driver, this.getWebElement());
public LeaderboardSettingsPanelPO goToLeaderboardSettings() {
WebElement element = goToTab(tabbedSettingsDialogTabPanel, LEADERBOARD_SETTINGS_TAB_LABEL, LEADERBOARD_SETTINGS_TAB_IDENTIFIER, TabPanelType.TAB_PANEL);
return new LeaderboardSettingsPanelPO(this.driver, element);
}
public LeaderboardPageConfigurationPanelPO goToLeaderboardPageSettings() {
@@ -36,10 +36,9 @@ public class LeaderboardUrlConfigurationDialogPO extends SettingsDialogPO {
return new LeaderboardPageConfigurationPanelPO(this.driver, this.getWebElement());
}
public LeaderboardSettingsDialogPO goToOverallLeaderboardSettings() {
goToTab(tabbedSettingsDialogTabPanel, OVERALL_LEADERBOARD_SETTINGS_TAB_LABEL, OVERALL_LEADERBOARD_SETTINGS_TAB_IDENTIFIER, TabPanelType.TAB_PANEL);
//FIXME this.getWebElement() gives the wrong html node to the po
return new LeaderboardSettingsDialogPO(this.driver, this.getWebElement());
public LeaderboardSettingsPanelPO goToOverallLeaderboardSettings() {
WebElement element = goToTab(tabbedSettingsDialogTabPanel, OVERALL_LEADERBOARD_SETTINGS_TAB_LABEL, OVERALL_LEADERBOARD_SETTINGS_TAB_IDENTIFIER, TabPanelType.TAB_PANEL);
return new LeaderboardSettingsPanelPO(this.driver, element);
}
}
@@ -1,154 +1,21 @@
package com.sap.sailing.selenium.pages.leaderboard;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import com.sap.sailing.selenium.core.BySeleniumId;
import com.sap.sailing.selenium.core.FindBy;
import com.sap.sailing.selenium.pages.common.CSSHelper;
import com.sap.sailing.selenium.pages.common.DataEntryDialogPO;
import com.sap.sailing.selenium.pages.gwt.CheckBoxPO;
import com.sap.sailing.selenium.pages.gwt.RadioButtonPO;
public class LeaderboardSettingsDialogPO extends DataEntryDialogPO {
@FindBy(how = BySeleniumId.class, using = "RaceSelectionSettingsPanel")
private WebElement raceSelectionSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "ExplicitRaceSelectionRadioButton")
private WebElement explicitRaceSelectionRadioButton;
@FindBy(how = BySeleniumId.class, using = "MostCurrentRacesSelectionRadioButton")
private WebElement mostCurrentRacesSelectionRadioButton;
@FindBy(how = BySeleniumId.class, using = "OverallDetailsSettingsPanel")
private WebElement overallDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "RaceDetailsSettingsPanel")
private WebElement raceDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "LegDetailsSettingsPanel")
private WebElement legDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "ManeuverSettingsPanel")
private WebElement maneuverSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "TimingSettingsPanel")
private WebElement timingSettingsPanel;
private LeaderboardSettingsPanelPO leaderboardSettingsPanelPO;
public LeaderboardSettingsDialogPO(WebDriver driver, WebElement element) {
super(driver, element);
leaderboardSettingsPanelPO = new LeaderboardSettingsPanelPO(this.driver, this.getWebElement());
}
public void setRacesToDisplay(List<String> races) {
RadioButtonPO button = new RadioButtonPO(this.driver, this.explicitRaceSelectionRadioButton);
if(!button.isSelected()) {
button.setSelected(true);
}
for(WebElement element : findAllCheckboxesForSettings(this.raceSelectionSettingsPanel)) {
CheckBoxPO checkbox = new CheckBoxPO(this.driver, element);
checkbox.setSelected(races.contains(checkbox.getLabel()));
}
}
public void setNumberOfRacesToDisplay(int numberOfRaces) {
RadioButtonPO button = new RadioButtonPO(this.driver, this.mostCurrentRacesSelectionRadioButton);
if(!button.isSelected()) {
button.setSelected(true);
}
WebElement textField = findElementBySeleniumId(this.raceSelectionSettingsPanel, "NumberOfMostCurrentRacesIntegerBox");
textField.clear();
textField.sendKeys(Integer.toString(numberOfRaces));
}
public boolean isNumberOfRacesToDisplaySelected() {
RadioButtonPO button = new RadioButtonPO(this.driver, this.mostCurrentRacesSelectionRadioButton);
return button.isSelected();
}
public int getNumberOfRacesToDisplaySelected() {
WebElement textField = findElementBySeleniumId(this.raceSelectionSettingsPanel, "NumberOfMostCurrentRacesIntegerBox");
return Integer.valueOf(textField.getAttribute("value"));
}
public void setRefreshInterval(int seconds) {
WebElement textField = findElementBySeleniumId(this.timingSettingsPanel, "RefreshIntervalLongBox");
textField.clear();
textField.sendKeys(Integer.toString(seconds));
}
public int getRefreshInterval() {
WebElement textField = findElementBySeleniumId(this.timingSettingsPanel, "RefreshIntervalLongBox");
return Integer.valueOf(textField.getAttribute("value"));
}
public void selectDetailsAndUnselectOthers(DetailCheckboxInfo...detailsToSelect) {
Arrays.sort(detailsToSelect);
for (DetailCheckboxInfo detail : DetailCheckboxInfo.values()) {
boolean selected = Arrays.binarySearch(detailsToSelect, detail) >= 0;
setCheckboxValue(detail.getId(), selected);
}
}
public DetailCheckboxInfo[] getSelectedDetails() {
List<DetailCheckboxInfo> selectedDetails = new ArrayList<>();
for (DetailCheckboxInfo detail : DetailCheckboxInfo.values()) {
String checkboxId = detail.getId();
if(getCheckboxValue(checkboxId)) {
selectedDetails.add(detail);
}
}
return selectedDetails.toArray(new DetailCheckboxInfo[selectedDetails.size()]);
}
public void showAllOverallDetails() {
setSelectionForAllSettings(this.overallDetailsSettingsPanel, true);
}
public void showAllRaceDetails() {
setSelectionForAllSettings(this.raceDetailsSettingsPanel, true);
}
public void showAllLegDetails() {
setSelectionForAllSettings(this.legDetailsSettingsPanel, true);
}
public void showAllManeuverDetails() {
setSelectionForAllSettings(this.maneuverSettingsPanel, true);
}
private void setSelectionForAllSettings(WebElement settingsPanel, boolean selected) {
for(WebElement element : findAllCheckboxesForSettings(settingsPanel)) {
CheckBoxPO checkbox = new CheckBoxPO(this.driver, element);
checkbox.setSelected(selected);
}
}
private List<WebElement> findAllCheckboxesForSettings(WebElement settingsPanel) {
List<WebElement> e = settingsPanel.findElements(By.xpath(".//span[" + CSSHelper.containsCSSClassPredicate("gwt-CheckBox") + "]"));
return e;
}
public void setCheckboxValue(String checkboxId, boolean selected) {
WebElement element = findElementBySeleniumId(checkboxId);
CheckBoxPO checkbox = new CheckBoxPO(driver, element);
checkbox.setSelected(selected);
}
public boolean getCheckboxValue(String checkboxId) {
WebElement element = findElementBySeleniumId(checkboxId);
CheckBoxPO checkbox = new CheckBoxPO(driver, element);
return checkbox.isSelected();
public LeaderboardSettingsPanelPO getLeaderboardSettingsPanelPO() {
return leaderboardSettingsPanelPO;
}
}
@@ -0,0 +1,155 @@
package com.sap.sailing.selenium.pages.leaderboard;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import com.sap.sailing.selenium.core.BySeleniumId;
import com.sap.sailing.selenium.core.FindBy;
import com.sap.sailing.selenium.pages.PageArea;
import com.sap.sailing.selenium.pages.common.CSSHelper;
import com.sap.sailing.selenium.pages.gwt.CheckBoxPO;
import com.sap.sailing.selenium.pages.gwt.RadioButtonPO;
public class LeaderboardSettingsPanelPO extends PageArea {
@FindBy(how = BySeleniumId.class, using = "RaceSelectionSettingsPanel")
private WebElement raceSelectionSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "ExplicitRaceSelectionRadioButton")
private WebElement explicitRaceSelectionRadioButton;
@FindBy(how = BySeleniumId.class, using = "MostCurrentRacesSelectionRadioButton")
private WebElement mostCurrentRacesSelectionRadioButton;
@FindBy(how = BySeleniumId.class, using = "OverallDetailsSettingsPanel")
private WebElement overallDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "RaceDetailsSettingsPanel")
private WebElement raceDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "LegDetailsSettingsPanel")
private WebElement legDetailsSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "ManeuverSettingsPanel")
private WebElement maneuverSettingsPanel;
@FindBy(how = BySeleniumId.class, using = "TimingSettingsPanel")
private WebElement timingSettingsPanel;
public LeaderboardSettingsPanelPO(WebDriver driver, WebElement element) {
super(driver, element);
}
public void setRacesToDisplay(List<String> races) {
RadioButtonPO button = new RadioButtonPO(this.driver, this.explicitRaceSelectionRadioButton);
if(!button.isSelected()) {
button.setSelected(true);
}
for(WebElement element : findAllCheckboxesForSettings(this.raceSelectionSettingsPanel)) {
CheckBoxPO checkbox = new CheckBoxPO(this.driver, element);
checkbox.setSelected(races.contains(checkbox.getLabel()));
}
}
public void setNumberOfRacesToDisplay(int numberOfRaces) {
RadioButtonPO button = new RadioButtonPO(this.driver, this.mostCurrentRacesSelectionRadioButton);
if(!button.isSelected()) {
button.setSelected(true);
}
WebElement textField = findElementBySeleniumId(this.raceSelectionSettingsPanel, "NumberOfMostCurrentRacesIntegerBox");
textField.clear();
textField.sendKeys(Integer.toString(numberOfRaces));
}
public boolean isNumberOfRacesToDisplaySelected() {
RadioButtonPO button = new RadioButtonPO(this.driver, this.mostCurrentRacesSelectionRadioButton);
return button.isSelected();
}
public int getNumberOfRacesToDisplaySelected() {
WebElement textField = findElementBySeleniumId(this.raceSelectionSettingsPanel, "NumberOfMostCurrentRacesIntegerBox");
return Integer.valueOf(textField.getAttribute("value"));
}
public void setRefreshInterval(int seconds) {
WebElement textField = findElementBySeleniumId(this.timingSettingsPanel, "RefreshIntervalLongBox");
textField.clear();
textField.sendKeys(Integer.toString(seconds));
}
public int getRefreshInterval() {
WebElement textField = findElementBySeleniumId(this.timingSettingsPanel, "RefreshIntervalLongBox");
return Integer.valueOf(textField.getAttribute("value"));
}
public void selectDetailsAndUnselectOthers(DetailCheckboxInfo...detailsToSelect) {
Arrays.sort(detailsToSelect);
for (DetailCheckboxInfo detail : DetailCheckboxInfo.values()) {
boolean selected = Arrays.binarySearch(detailsToSelect, detail) >= 0;
setCheckboxValue(detail.getId(), selected);
}
}
public DetailCheckboxInfo[] getSelectedDetails() {
List<DetailCheckboxInfo> selectedDetails = new ArrayList<>();
for (DetailCheckboxInfo detail : DetailCheckboxInfo.values()) {
String checkboxId = detail.getId();
if(getCheckboxValue(checkboxId)) {
selectedDetails.add(detail);
}
}
return selectedDetails.toArray(new DetailCheckboxInfo[selectedDetails.size()]);
}
public void showAllOverallDetails() {
setSelectionForAllSettings(this.overallDetailsSettingsPanel, true);
}
public void showAllRaceDetails() {
setSelectionForAllSettings(this.raceDetailsSettingsPanel, true);
}
public void showAllLegDetails() {
setSelectionForAllSettings(this.legDetailsSettingsPanel, true);
}
public void showAllManeuverDetails() {
setSelectionForAllSettings(this.maneuverSettingsPanel, true);
}
private void setSelectionForAllSettings(WebElement settingsPanel, boolean selected) {
for(WebElement element : findAllCheckboxesForSettings(settingsPanel)) {
CheckBoxPO checkbox = new CheckBoxPO(this.driver, element);
checkbox.setSelected(selected);
}
}
private List<WebElement> findAllCheckboxesForSettings(WebElement settingsPanel) {
List<WebElement> e = settingsPanel.findElements(By.xpath(".//span[" + CSSHelper.containsCSSClassPredicate("gwt-CheckBox") + "]"));
return e;
}
public void setCheckboxValue(String checkboxId, boolean selected) {
WebElement element = findElementBySeleniumId(checkboxId);
CheckBoxPO checkbox = new CheckBoxPO(driver, element);
checkbox.setSelected(selected);
}
public boolean getCheckboxValue(String checkboxId) {
WebElement element = findElementBySeleniumId(checkboxId);
CheckBoxPO checkbox = new CheckBoxPO(driver, element);
return checkbox.isSelected();
}
}
@@ -26,6 +26,7 @@ import com.sap.sailing.selenium.pages.adminconsole.tractrac.TracTracEventManagem
import com.sap.sailing.selenium.pages.adminconsole.tractrac.TracTracEventManagementPanelPO.TrackableRaceDescriptor;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardPage;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsDialogPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsPanelPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardTablePO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardTablePO.LeaderboardEntry;
import com.sap.sailing.selenium.test.AbstractSeleniumTest;
@@ -60,13 +61,14 @@ public class TestColumnsInLeaderboard extends AbstractSeleniumTest {
public void testCorrectDisplayOfAllColumns() {
LeaderboardPage leaderboard = LeaderboardPage.goToPage(getWebDriver(), getContextRoot(), LEADERBOARD, true);
LeaderboardTablePO leaderboardTable = leaderboard.getLeaderboardTable();
LeaderboardSettingsDialogPO settings = leaderboard.getLeaderboardSettings();
LeaderboardSettingsDialogPO settingsDialog = leaderboard.getLeaderboardSettings();
LeaderboardSettingsPanelPO settings = settingsDialog.getLeaderboardSettingsPanelPO();
settings.setRacesToDisplay(leaderboardTable.getRaceNames());
settings.showAllOverallDetails();
settings.showAllRaceDetails();
settings.showAllLegDetails();
settings.showAllManeuverDetails();
settings.pressOk();
settingsDialog.pressOk();
boolean stateHasChanged;
do {
List<String> headers = leaderboardTable.getColumnHeaders();
@@ -29,7 +29,7 @@ import com.sap.sailing.selenium.pages.adminconsole.tractrac.TracTracEventManagem
import com.sap.sailing.selenium.pages.adminconsole.tractrac.TracTracEventManagementPanelPO.TrackableRaceDescriptor;
import com.sap.sailing.selenium.pages.leaderboard.DetailCheckboxInfo;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardPage;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsDialogPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardSettingsPanelPO;
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardTablePO;
import com.sap.sailing.selenium.pages.raceboard.MapSettingsPO;
import com.sap.sailing.selenium.pages.raceboard.RaceBoardPage;
@@ -57,9 +57,9 @@ public class SettingsTest extends AbstractSeleniumTest {
@Override
@Before
public void setUp() {
// this.trackableRace = new TrackableRaceDescriptor(BMW_CUP_EVENT, String.format(RACE, 1), BMW_CUP_BOAT_CLASS);
// this.trackedRace = new TrackedRaceDescriptor(BMW_CUP_REGATTA, BMW_CUP_BOAT_CLASS, String.format(RACE, 1));
// clearState(getContextRoot());
this.trackableRace = new TrackableRaceDescriptor(BMW_CUP_EVENT, String.format(RACE, 1), BMW_CUP_BOAT_CLASS);
this.trackedRace = new TrackedRaceDescriptor(BMW_CUP_REGATTA, BMW_CUP_BOAT_CLASS, String.format(RACE, 1));
clearState(getContextRoot());
super.setUp();
}
@@ -121,7 +121,7 @@ public class SettingsTest extends AbstractSeleniumTest {
LeaderboardEntryPO leaderboardEntry = leaderboardConfiguration.getLeaderboardTable().getEntry(BMW_CUP_REGATTA);
LeaderboardUrlConfigurationDialogPO urlConfigurationDialog = leaderboardEntry
.getLeaderboardPageUrlConfigurationDialog();
LeaderboardSettingsDialogPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
LeaderboardSettingsPanelPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
leaderboardSettingsPanel.setCheckboxValue("R2CheckBox", false);
DetailCheckboxInfo[] detailsToSelect = {
@@ -170,7 +170,7 @@ public class SettingsTest extends AbstractSeleniumTest {
// open settings dialog of configurated leaderboard and match the set values with forwarded values
LeaderboardPage leaderboardPage = urlConfigurationDialog.openLeaderboard();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings().getLeaderboardSettingsPanelPO();
DetailCheckboxInfo[] selectedDetails = leaderboardSettingsPanel.getSelectedDetails();
@@ -194,7 +194,7 @@ public class SettingsTest extends AbstractSeleniumTest {
// open settings dialog of configurated leaderboard and match the set values with forwarded values
leaderboardPage = urlConfigurationDialog.openLeaderboard();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings().getLeaderboardSettingsPanelPO();
Assert.assertTrue(leaderboardSettingsPanel.isNumberOfRacesToDisplaySelected());
Assert.assertEquals(2, leaderboardSettingsPanel.getNumberOfRacesToDisplaySelected());
Assert.assertEquals(1, leaderboardSettingsPanel.getRefreshInterval());
@@ -227,7 +227,7 @@ public class SettingsTest extends AbstractSeleniumTest {
leaderboardPageSettings.setAllowForRaceDetails(true);
leaderboardPageSettings.setShowCharts(false);
LeaderboardSettingsDialogPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
LeaderboardSettingsPanelPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
leaderboardSettingsPanel.setCheckboxValue("R2CheckBox", false);
DetailCheckboxInfo[] detailsToSelect = new DetailCheckboxInfo[] {
@@ -300,7 +300,7 @@ public class SettingsTest extends AbstractSeleniumTest {
LeaderboardUrlConfigurationDialogPO urlConfigurationDialog = leaderboardEntry
.getLeaderboardPageUrlConfigurationDialog();
LeaderboardSettingsDialogPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
LeaderboardSettingsPanelPO leaderboardSettingsPanel = urlConfigurationDialog.goToLeaderboardSettings();
DetailCheckboxInfo[] detailsToSelect = {
// Overall details
@@ -350,7 +350,7 @@ public class SettingsTest extends AbstractSeleniumTest {
// open settings dialog of configurated leaderboard and match the set values with forwarded values
LeaderboardPage leaderboardPage = urlConfigurationDialog.openLeaderboard();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings();
leaderboardSettingsPanel = leaderboardPage.getLeaderboardSettings().getLeaderboardSettingsPanelPO();
DetailCheckboxInfo[] selectedDetails = leaderboardSettingsPanel.getSelectedDetails();
@@ -358,7 +358,7 @@ public class SettingsTest extends AbstractSeleniumTest {
Assert.assertEquals(2, leaderboardSettingsPanel.getRefreshInterval());
// open settings dialog of configurated OVERALL leaderboard and match the set values with forwarded values
leaderboardSettingsPanel = leaderboardPage.getOverallLeaderboardSettings();
leaderboardSettingsPanel = leaderboardPage.getOverallLeaderboardSettings().getLeaderboardSettingsPanelPO();
selectedDetails = leaderboardSettingsPanel.getSelectedDetails();