mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-19 04:05:36 +00:00
bug5905: Added a first test to create a public invitation link. This can be used later also to check branch.io forwarding to QR-Code page.
This commit is contained in:
+1
@@ -171,6 +171,7 @@ public class RegattaDetailsComposite extends Composite {
|
||||
});
|
||||
}
|
||||
});
|
||||
button.ensureDebugId("registrationLinkWithQRCodeOpenButton");
|
||||
grid.setWidget(row , 1, button);
|
||||
return button;
|
||||
}
|
||||
|
||||
+9
@@ -34,6 +34,9 @@ public class RegattaDetailsCompositePO extends PageArea {
|
||||
@FindBy(how = BySeleniumId.class, using = "SeriesCellTable")
|
||||
private WebElement seriesTable;
|
||||
|
||||
@FindBy(how = BySeleniumId.class, using = "registrationLinkWithQRCodeOpenButton")
|
||||
private WebElement registrationLinkWithQRCodeOpenButton;
|
||||
|
||||
public RegattaDetailsCompositePO(WebDriver driver, WebElement element) {
|
||||
super(driver, element);
|
||||
}
|
||||
@@ -107,4 +110,10 @@ public class RegattaDetailsCompositePO extends PageArea {
|
||||
waitForAjaxRequests();
|
||||
waitUntil(() -> Objects.equal(getRaceNames(series), races));
|
||||
}
|
||||
|
||||
public RegistrationLinkWithQRCodeDialogPO configureRegistrationURL() {
|
||||
registrationLinkWithQRCodeOpenButton.click();
|
||||
WebElement dialog = findElementBySeleniumId(this.driver, "RegistrationLinkWithQRCodeDialog");
|
||||
return new RegistrationLinkWithQRCodeDialogPO(this.driver, dialog);
|
||||
}
|
||||
}
|
||||
|
||||
+13
-8
@@ -7,6 +7,8 @@ import com.sap.sailing.selenium.core.BySeleniumId;
|
||||
import com.sap.sailing.selenium.core.FindBy;
|
||||
import com.sap.sailing.selenium.pages.common.DataEntryDialogPO;
|
||||
import com.sap.sailing.selenium.pages.gwt.CheckBoxPO;
|
||||
import com.sap.sailing.selenium.pages.gwt.ListBoxPO;
|
||||
import com.sap.sailing.selenium.pages.gwt.TextBoxPO;
|
||||
|
||||
public class RegattaEditDialogPO extends DataEntryDialogPO {
|
||||
@FindBy(how = BySeleniumId.class, using = "RacingProcedureConfigurationCheckBox")
|
||||
@@ -30,8 +32,8 @@ public class RegattaEditDialogPO extends DataEntryDialogPO {
|
||||
@FindBy(how = BySeleniumId.class, using = "AddSeriesButton")
|
||||
private WebElement addSeriesButton;
|
||||
|
||||
@FindBy(how = BySeleniumId.class, using = "registrationLinkWithQRCodeOpenButton")
|
||||
private WebElement registrationLinkWithQRCodeOpenButton;
|
||||
@FindBy(how = BySeleniumId.class, using = "SecretTextBox")
|
||||
private WebElement secretTextBox;
|
||||
|
||||
public RegattaEditDialogPO(WebDriver driver, WebElement element) {
|
||||
super(driver, element);
|
||||
@@ -53,15 +55,18 @@ public class RegattaEditDialogPO extends DataEntryDialogPO {
|
||||
return new SeriesCreateDialogPO(this.driver, dialog);
|
||||
}
|
||||
|
||||
public RegistrationLinkWithQRCodeDialogPO configureRegistrationURL() {
|
||||
registrationLinkWithQRCodeOpenButton.click();
|
||||
WebElement dialog = findElementBySeleniumId(this.driver, "RegistrationLinkWithQRCodeDialog");
|
||||
return new RegistrationLinkWithQRCodeDialogPO(this.driver, dialog);
|
||||
}
|
||||
|
||||
public void addSeries(String seriesName) {
|
||||
SeriesCreateDialogPO seriesCreateDialog = addSeries();
|
||||
seriesCreateDialog.setSeriesName(seriesName);
|
||||
seriesCreateDialog.pressOk();
|
||||
}
|
||||
|
||||
public String getSecret() {
|
||||
return TextBoxPO.create(driver, secretTextBox).getValue();
|
||||
}
|
||||
|
||||
public String getSelectedEventId() {
|
||||
return ListBoxPO.create(driver, eventListBox).getSelectedOptionValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -6,6 +6,7 @@ import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.ui.WebDriverWait;
|
||||
|
||||
import com.sap.sailing.domain.common.CompetitorRegistrationType;
|
||||
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||
import com.sap.sailing.selenium.core.FindBy;
|
||||
import com.sap.sailing.selenium.pages.PageArea;
|
||||
@@ -54,7 +55,7 @@ public class RegattaStructureManagementPanelPO extends PageArea {
|
||||
// QUESTION: How do we handle an error (here or in the dialog)?
|
||||
createRegattaDialog.pressOk();
|
||||
DefaultRegattaLeaderboardCreateDialogPO createDefaultRegattaLeaderboardDialog = createDefaultRegattaLeaderboard();
|
||||
createDefaultRegattaLeaderboardDialog.pressCancel();
|
||||
createDefaultRegattaLeaderboardDialog.pressOk();
|
||||
}
|
||||
|
||||
public void createRegattaAndAddToEvent(RegattaDescriptor regatta, String event, String[] courseAreaNames) {
|
||||
@@ -63,6 +64,7 @@ public class RegattaStructureManagementPanelPO extends PageArea {
|
||||
createRegattaDialog.setBoatClass(regatta.getBoatClass());
|
||||
createRegattaDialog.setCompetitorRegistrationType(regatta.getCompetitorRegistrationType());
|
||||
createRegattaDialog.setEventAndCourseArea(event, courseAreaNames);
|
||||
createRegattaDialog.setCompetitorRegistrationType(CompetitorRegistrationType.OPEN_UNMODERATED);
|
||||
createRegattaDialog.pressOk();
|
||||
createDefaultRegattaLeaderboard().pressOk();
|
||||
waitForPO(ConfirmDialogPO::new, EventConfigurationPanelPO.ID_LINK_LEADERBORAD_TO_GROUP_DIALOG, 5).pressOk();
|
||||
|
||||
+8
@@ -6,6 +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.DataEntryDialogPO;
|
||||
import com.sap.sailing.selenium.pages.gwt.TextBoxPO;
|
||||
|
||||
public class RegistrationLinkWithQRCodeDialogPO extends DataEntryDialogPO {
|
||||
|
||||
@@ -15,8 +16,15 @@ public class RegistrationLinkWithQRCodeDialogPO extends DataEntryDialogPO {
|
||||
@FindBy(how = BySeleniumId.class, using = "GenerateSecretButton")
|
||||
private WebElement generateSecretButton;
|
||||
|
||||
@FindBy(how = BySeleniumId.class, using = "RegistrationLinkUrl")
|
||||
private WebElement registrationLinkUrl;
|
||||
|
||||
protected RegistrationLinkWithQRCodeDialogPO(WebDriver driver, WebElement element) {
|
||||
super(driver, element);
|
||||
}
|
||||
|
||||
public String getRegistrationLinkUrl() {
|
||||
return TextBoxPO.create(driver, registrationLinkUrl).getValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+34
@@ -23,7 +23,10 @@ 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;
|
||||
@@ -70,6 +73,8 @@ 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
|
||||
@@ -692,6 +697,35 @@ public class SettingsTest extends AbstractSeleniumTest {
|
||||
leaderboardSettingsPanel = leaderboardSettingsDialog.getLeaderboardSettingsPanelPO();
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user