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:
Wessels, Udo (PPN)
2023-10-23 17:43:28 +02:00
parent 699ba9b70a
commit 6909dbd033
6 changed files with 68 additions and 9 deletions
@@ -171,6 +171,7 @@ public class RegattaDetailsComposite extends Composite {
});
}
});
button.ensureDebugId("registrationLinkWithQRCodeOpenButton");
grid.setWidget(row , 1, button);
return button;
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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();
@@ -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();
}
}
@@ -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();
}
/**