bug5905: fixed an obvious bug in selenium tests and moved link creation test to it's own test class because the origin location was not fitting to the test context.

This commit is contained in:
Wessels, Udo (PPN)
2023-10-27 09:53:33 +02:00
parent 0fb8228d99
commit 3636d0c321
10 changed files with 88 additions and 46 deletions
@@ -44,7 +44,7 @@ public class RegattaStructureManagementPanelPO extends PageArea {
*
* @param regatta
*/
public void createRegatta(RegattaDescriptor regatta) {
public void createRegatta(RegattaDescriptor regatta, boolean withDefaultLeaderboard) {
RegattaCreateDialogPO createRegattaDialog = startRegattaCreation();
createRegattaDialog.setRegattaName(regatta.getName()+" ("+regatta.getBoatClass()+")");
createRegattaDialog.setBoatClass(regatta.getBoatClass());
@@ -55,7 +55,12 @@ public class RegattaStructureManagementPanelPO extends PageArea {
// QUESTION: How do we handle an error (here or in the dialog)?
createRegattaDialog.pressOk();
DefaultRegattaLeaderboardCreateDialogPO createDefaultRegattaLeaderboardDialog = createDefaultRegattaLeaderboard();
createDefaultRegattaLeaderboardDialog.pressOk();
if (withDefaultLeaderboard) {
createDefaultRegattaLeaderboardDialog.pressOk();
} else {
createDefaultRegattaLeaderboardDialog.pressCancel();
}
}
public void createRegattaAndAddToEvent(RegattaDescriptor regatta, String event, String[] courseAreaNames) {
@@ -0,0 +1,71 @@
package com.sap.sailing.selenium.test.adminconsole;
import java.util.Date;
import javax.xml.bind.DatatypeConverter;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage;
import com.sap.sailing.selenium.pages.adminconsole.event.EventConfigurationPanelPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaDetailsCompositePO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaEditDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaStructureManagementPanelPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegistrationLinkWithQRCodeDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListCompositePO.RegattaDescriptor;
import com.sap.sailing.selenium.test.AbstractSeleniumTest;
/**
* There are various link creation logic in AdminConsole. This test is to cover them.
*/
public class TestLinkCreation extends AbstractSeleniumTest {
private static final String BMW_CUP_EVENT = "BMW Cup";
private static final String BMW_CUP_BOAT_CLASS = "J80";
private static final String AUDI_CUP_BOAT_CLASS = "J70";
private static final String BMW_CUP_REGATTA = "BMW Cup (J80)"; //$NON-NLS-1$
private static final String AUDI_CUP_REGATTA = "Audi Business Cup (J70)"; //$NON-NLS-1$
private static final String BMW_CUP_EVENTS_DESC = "BMW Cup Description";
private static final String BMW_VENUE = "Somewhere";
private static final Date BMW_START_EVENT_TIME = DatatypeConverter.parseDateTime("2012-04-08T10:09:00-05:00")
.getTime();
private static final Date BMW_STOP_EVENT_TIME = DatatypeConverter.parseDateTime("2017-04-08T10:50:00-05:00")
.getTime();
private static final String CUSTOM_COURSE_AREA = "Custom X";
private static final String INVITATION_URL_BASE = "https://sailinsight30-app.sapsailing.com/publicInvite?regatta_name=Audi+Business+Cup+(J70)+(J70)&secret=<secret>&server=http%3A%2F%2Flocalhost%3A8888&event_id=<event-id>";
@Override
@Before
public void setUp() {
clearState(getContextRoot());
super.setUp();
}
/**
* Test the creation of an invitation link.
*/
@Test
public void testRegattaOverviewInvitationLinkCreation() {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
EventConfigurationPanelPO events = adminConsole.goToEvents();
events.createEventWithDefaultLeaderboardGroupRegattaAndDefaultLeaderboard(BMW_CUP_EVENT, BMW_CUP_EVENTS_DESC,
BMW_VENUE, BMW_START_EVENT_TIME, BMW_STOP_EVENT_TIME, true, BMW_CUP_REGATTA, BMW_CUP_BOAT_CLASS,
BMW_START_EVENT_TIME, BMW_STOP_EVENT_TIME, false, CUSTOM_COURSE_AREA);
RegattaStructureManagementPanelPO regattas = adminConsole.goToRegattaStructure();
RegattaDescriptor regattaDescriptor = new RegattaDescriptor(AUDI_CUP_REGATTA, AUDI_CUP_BOAT_CLASS);
regattas.createRegattaAndAddToEvent(regattaDescriptor, BMW_CUP_EVENT, new String[] { CUSTOM_COURSE_AREA });
RegattaEditDialogPO editRegatta = regattas.getRegattaList().editRegatta(regattaDescriptor);
String secret = editRegatta.getSecret();
String selectedEventId = editRegatta.getSelectedEventId();
editRegatta.clickOkButtonOrThrow();
// regattas.getRegattaList().selectRegatta(regattaDescriptor);
RegattaDetailsCompositePO regattaDetails = regattas.getRegattaDetails();
RegistrationLinkWithQRCodeDialogPO registrationLinkWithQRCode = regattaDetails.configureRegistrationURL();
String invitationUrl = INVITATION_URL_BASE.replace("<secret>", secret).replace("<event-id>", selectedEventId);
Assert.assertEquals(invitationUrl, registrationLinkWithQRCode.getRegistrationLinkUrl());
registrationLinkWithQRCode.clickOkButtonOrThrow();
}
}
@@ -35,6 +35,6 @@ public class TestOpenRegattaCreation extends AbstractSeleniumTest {
private void configureRegattaAndLeaderboard() {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
}
}
@@ -175,7 +175,7 @@ public class TestRefreshableSelectionModel extends AbstractSeleniumTest {
// Create a regatta with 1 series and 5 races as well as a leaderborad
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
RegattaDetailsCompositePO regattaDetails = regattaStructure.getRegattaDetails(this.regatta);
SeriesEditDialogPO seriesDialog = regattaDetails.editSeries(RegattaStructureManagementPanelPO.DEFAULT_SERIES_NAME);
@@ -117,7 +117,7 @@ public class TestSmartphoneTrackingEventManagementPanel extends AbstractSelenium
// Create a regatta with 1 series and 5 races as well as a leaderborad
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
RegattaDetailsCompositePO regattaDetails = regattaStructure.getRegattaDetails(this.regatta);
SeriesEditDialogPO seriesDialog = regattaDetails.editSeries(RegattaStructureManagementPanelPO.DEFAULT_SERIES_NAME);
@@ -61,7 +61,7 @@ public class TestStartAndStopTrackingForTracTracEvents extends AbstractSeleniumT
RegattaDescriptor bmwCupDescriptor = new RegattaDescriptor(BMW_CUP_EVENT, BMW_CUP_BOAT_CLASS);
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(bmwCupDescriptor);
regattaStructure.createRegatta(bmwCupDescriptor, /* withDefaultLeaderboard */ false);
TracTracEventManagementPanelPO tracTracEvents = adminConsole.goToTracTracEvents();
tracTracEvents.addConnectionAndListTrackableRaces(BMW_CUP_JSON_URL);
tracTracEvents.setReggataForTracking(bmwCupDescriptor);
@@ -79,7 +79,7 @@ public class TestStartAndStopTrackingForTracTracEvents extends AbstractSeleniumT
public void testStartTrackingWithDefaultReggataWhileReggataForBoatClassExists() {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(new RegattaDescriptor(BMW_CUP_EVENT, BMW_CUP_BOAT_CLASS));
regattaStructure.createRegatta(new RegattaDescriptor(BMW_CUP_EVENT, BMW_CUP_BOAT_CLASS), /* withDefaultLeaderboard */ false);
TracTracEventManagementPanelPO tracTracEvents = adminConsole.goToTracTracEvents();
tracTracEvents.addConnectionAndListTrackableRaces(BMW_CUP_JSON_URL);
tracTracEvents.setReggataForTracking(DEFAULT_REGATTA);
@@ -93,8 +93,8 @@ public class TestStartAndStopTrackingForTracTracEvents extends AbstractSeleniumT
RegattaDescriptor idm2013Descriptor = new RegattaDescriptor(IDM_2013_EVENT, IDM_2013_BOAT_CLASS);
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(bmwCupDescriptor);
regattaStructure.createRegatta(idm2013Descriptor);
regattaStructure.createRegatta(bmwCupDescriptor, /* withDefaultLeaderboard */ false);
regattaStructure.createRegatta(idm2013Descriptor, /* withDefaultLeaderboard */ false);
TracTracEventManagementPanelPO tracTracEvents = adminConsole.goToTracTracEvents();
tracTracEvents.addConnectionAndListTrackableRaces(BMW_CUP_JSON_URL);
tracTracEvents.setReggataForTracking(idm2013Descriptor);
@@ -124,7 +124,7 @@ public class TestColumnsInLeaderboard extends AbstractSeleniumTest {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
// Create a regatta with 1 series and 5 races as well as a leaderboard
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
RegattaDetailsCompositePO regattaDetails = regattaStructure.getRegattaDetails(this.regatta);
SeriesEditDialogPO seriesDialog = regattaDetails.editSeries(RegattaStructureManagementPanelPO.DEFAULT_SERIES_NAME);
seriesDialog.addRaces(1, 1);
@@ -187,7 +187,7 @@ public class TestLeaderboardConfiguration extends AbstractSeleniumTest {
// Create a regatta with 1 series and 5 races as well as a leaderborad
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
RegattaDetailsCompositePO regattaDetails = regattaStructure.getRegattaDetails(this.regatta);
SeriesEditDialogPO seriesDialog = regattaDetails.editSeries(RegattaStructureManagementPanelPO.DEFAULT_SERIES_NAME);
@@ -96,7 +96,7 @@ public class TestSwitchingOffStartOfRaceInference extends AbstractSeleniumTest {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
// Create a regatta with 1 series and 5 races as well as a leaderboard
RegattaStructureManagementPanelPO regattaStructure = adminConsole.goToRegattaStructure();
regattaStructure.createRegatta(this.regatta);
regattaStructure.createRegatta(this.regatta, /* withDefaultLeaderboard */ false);
RegattaDetailsCompositePO regattaDetails = regattaStructure.getRegattaDetails(this.regatta);
SeriesEditDialogPO seriesDialog = regattaDetails.editSeries(RegattaStructureManagementPanelPO.DEFAULT_SERIES_NAME);
seriesDialog.addRaces(3, 3);
@@ -23,10 +23,7 @@ import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardDetail
import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardPageConfigurationPanelPO;
import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardUrlConfigurationDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListCompositePO.RegattaDescriptor;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaDetailsCompositePO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaEditDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaStructureManagementPanelPO;
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegistrationLinkWithQRCodeDialogPO;
import com.sap.sailing.selenium.pages.adminconsole.tracking.TrackedRacesListPO;
import com.sap.sailing.selenium.pages.adminconsole.tracking.TrackedRacesListPO.Status;
import com.sap.sailing.selenium.pages.adminconsole.tracking.TrackedRacesListPO.TrackedRaceDescriptor;
@@ -73,8 +70,6 @@ public class SettingsTest extends AbstractSeleniumTest {
private static final String CUSTOM_COURSE_AREA = "Custom X";
private static final String URL_PARAMETER_IGNORE_LOCAL_SETTINGS = "ignoreLocalSettings=true";
private static final String INVITATION_URL_BASE = "https://sailinsight30-app.sapsailing.com/publicInvite?regatta_name=Audi+Business+Cup+(J70)+(J70)&secret=<secret>&server=http%3A%2F%2Flocalhost%3A8888&event_id=<event-id>";
@Override
@Before
@@ -698,35 +693,6 @@ public class SettingsTest extends AbstractSeleniumTest {
Assert.assertArrayEquals(newDetails, leaderboardSettingsPanel.getSelectedDetails());
Assert.assertEquals(newRefreshInterval, leaderboardSettingsPanel.getRefreshInterval());
}
/**
* Test the creation of an invitation link.
*/
@Test
public void testRegattaOverviewInvitationLinkCreation() {
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
EventConfigurationPanelPO events = adminConsole.goToEvents();
events.createEventWithDefaultLeaderboardGroupRegattaAndDefaultLeaderboard(BMW_CUP_EVENT, BMW_CUP_EVENTS_DESC,
BMW_VENUE, BMW_START_EVENT_TIME, BMW_STOP_EVENT_TIME, true, BMW_CUP_REGATTA, BMW_CUP_BOAT_CLASS,
BMW_START_EVENT_TIME, BMW_STOP_EVENT_TIME, false, CUSTOM_COURSE_AREA);
RegattaStructureManagementPanelPO regattas = adminConsole.goToRegattaStructure();
RegattaDescriptor regattaDescriptor = new RegattaDescriptor(AUDI_CUP_REGATTA, AUDI_CUP_BOAT_CLASS);
regattas.createRegattaAndAddToEvent(regattaDescriptor, BMW_CUP_EVENT,
new String[] { CUSTOM_COURSE_AREA });
RegattaEditDialogPO editRegatta = regattas.getRegattaList().editRegatta(regattaDescriptor);
String secret = editRegatta.getSecret();
String selectedEventId = editRegatta.getSelectedEventId();
editRegatta.clickOkButtonOrThrow();
//regattas.getRegattaList().selectRegatta(regattaDescriptor);
RegattaDetailsCompositePO regattaDetails = regattas.getRegattaDetails();
RegistrationLinkWithQRCodeDialogPO registrationLinkWithQRCode = regattaDetails.configureRegistrationURL();
String invitationUrl = INVITATION_URL_BASE
.replace("<secret>", secret)
.replace("<event-id>", selectedEventId);
Assert.assertEquals(invitationUrl, registrationLinkWithQRCode.getRegistrationLinkUrl());
registrationLinkWithQRCode.clickOkButtonOrThrow();
}
/**
* Verifies settings storage support for regatta overview. Checks the precedences of context specific and global