Skip to content
This repository has been archived by the owner on Nov 23, 2021. It is now read-only.

Commit

Permalink
Merge pull request #266 from Cognifide/deprecation-loadable
Browse files Browse the repository at this point in the history
#228 Loadable package and module deprecated
  • Loading branch information
mkrzyzanowski committed Sep 18, 2018
2 parents cec38d0 + e390a83 commit 21fd72b
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,27 @@
*/
package com.cognifide.qa.bb.aem.touch.siteadmin.aem61;

import java.util.Objects;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;

import com.cognifide.qa.bb.aem.touch.siteadmin.aem61.conditions.NotDisabledCondition;
import com.cognifide.qa.bb.constants.Timeouts;
import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.loadable.condition.impl.VisibilityCondition;
import com.cognifide.qa.bb.provider.selenium.BobcatWait;
import com.cognifide.qa.bb.qualifier.FindPageObject;
import com.cognifide.qa.bb.qualifier.Global;
import com.cognifide.qa.bb.qualifier.PageObject;
import com.cognifide.qa.bb.aem.touch.siteadmin.aem61.conditions.NotDisabledCondition;
import com.google.inject.Inject;

@PageObject
public class CreatePageWizard {

@Inject
private BobcatWait bobcatWait;

@FindPageObject
private TemplateList templateList;

Expand All @@ -41,12 +49,10 @@ public class CreatePageWizard {

@Global
@FindBy(css = "button.coral-Wizard-nextButton[type='submit']")
@LoadableComponent(condClass = NotDisabledCondition.class)
private WebElement createButton;

@Global
@FindBy(xpath = "//button[contains(text(), 'Done')]")
@LoadableComponent(condClass = VisibilityCondition.class)
private WebElement doneButtonOnModal;

public CreatePageWizard selectTemplate(String templateName) {
Expand All @@ -66,8 +72,16 @@ public CreatePageWizard provideTitle(String title) {
}

public void submit() {
createButton.click();
doneButtonOnModal.click();
getCreateButton().click();
getDoneButtonOnModal().click();
}

public WebElement getCreateButton() {
bobcatWait.withTimeout(Timeouts.SMALL).until(input -> Objects.isNull(createButton.getAttribute("disabled")));
return createButton;
}

public WebElement getDoneButtonOnModal() {
return bobcatWait.withTimeout(Timeouts.SMALL).until(ExpectedConditions.visibilityOf(doneButtonOnModal));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,33 @@
package com.cognifide.qa.bb.aem.touch.siteadmin.aem61;

import java.time.LocalDateTime;
import java.util.Objects;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import com.cognifide.qa.bb.aem.touch.siteadmin.aem61.calendar.GraniteCalendar;
import com.cognifide.qa.bb.aem.touch.siteadmin.aem61.conditions.NotDisabledCondition;
import com.cognifide.qa.bb.aem.touch.siteadmin.common.IsLoadedCondition;
import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.constants.Timeouts;
import com.cognifide.qa.bb.provider.selenium.BobcatWait;
import com.cognifide.qa.bb.qualifier.Global;
import com.cognifide.qa.bb.qualifier.PageObject;
import com.google.inject.Inject;

@PageObject
public class ReplicateLaterWindow {

@Inject
private BobcatWait bobcatWait;

@Global
@FindBy(css = "button.coral-Wizard-nextButton[type='submit']")
@LoadableComponent(condClass = NotDisabledCondition.class)
private WebElement submitButton;

@FindBy(css = "button.coral-Button.coral-Button--square")
private WebElement calendarButton;

@Global
@FindBy(css = ".coral-Popover--datepicker")
@LoadableComponent(condClass = IsLoadedCondition.class)
private GraniteCalendar calendar;

public void selectDateAndTime(LocalDateTime dateTime) {
Expand All @@ -49,12 +51,21 @@ public void selectDateAndTime(LocalDateTime dateTime) {
}

calendarButton.click();
calendar.selectDateAndTime(dateTime);
calendar.closeCalendar();
getCalendar().selectDateAndTime(dateTime);
getCalendar().closeCalendar();
}

public void submit() {
submitButton.click();
getSubmitButton().click();
}

public WebElement getSubmitButton() {
bobcatWait.withTimeout(Timeouts.SMALL).until(input -> Objects.isNull(submitButton.getAttribute("disabled")));
return submitButton;
}

public GraniteCalendar getCalendar() {
bobcatWait.withTimeout(Timeouts.SMALL).until(ignored -> calendar.isLoaded());
return calendar;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ public class SiteadminPage implements Loadable, SiteadminActions {

@Global
@FindBy(css = ".cq-siteadmin-admin-childpages")
@LoadableComponent(condClass = IsLoadedCondition.class)
private ChildPageWindow childPageWindow;

@FindBy(
Expand Down Expand Up @@ -168,7 +167,7 @@ public SiteadminActions deletePage(String title) {

@Override
public SiteadminActions deleteSubPages() {
if (childPageWindow.hasSubPages()) {
if (isLoadedCondition() && childPageWindow.hasSubPages()) {
childPageWindow.pressSelectAllPages();
toolbar.deletePage();
}
Expand All @@ -177,6 +176,7 @@ public SiteadminActions deleteSubPages() {

@Override
public boolean isPagePresent(String title) {
wait.withTimeout(Timeouts.SMALL).until(ignored -> childPageWindow.isLoaded());
return childPageWindow.containsPage(title);
}

Expand Down Expand Up @@ -208,15 +208,18 @@ public SiteadminActions open() {

@Override
public boolean hasChildPages() {
wait.withTimeout(Timeouts.SMALL).until(ignored -> childPageWindow.isLoaded());
return childPageWindow.hasSubPages();
}

@Override
public ChildPageRow getPageFromList(String title) {
wait.withTimeout(Timeouts.SMALL).until(ignored -> childPageWindow.isLoaded());
return childPageWindow.getChildPageRow(title);
}

private void selectPage(String title) {
wait.withTimeout(Timeouts.SMALL).until(ignored -> childPageWindow.isLoaded());
childPageWindow.selectPage(title);
}

Expand Down Expand Up @@ -257,5 +260,4 @@ private void retryLoad() {
private boolean isLoadedCondition() {
return conditions.isConditionMet(ignored -> childPageWindow.isLoaded());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,27 @@
*/
package com.cognifide.qa.bb.aem.touch.siteadmin.aem61.calendar;

import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import java.time.Month;

import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedCondition;

import com.cognifide.qa.bb.constants.Timeouts;
import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.provider.selenium.BobcatWait;
import com.cognifide.qa.bb.qualifier.PageObject;
import com.google.inject.Inject;

@PageObject
public class YearMonthPicker {

@Inject
private BobcatWait wait;

@FindBy(css = ".coral-Heading")
@LoadableComponent(condClass = WaitForDynamicRedraw.class)
private WebElement yearMonthHeader;

@FindBy(css = ".coral-DatePicker-nextMonth")
Expand All @@ -40,9 +48,35 @@ public void selectDate(int year, Month month) {
}

private boolean isDesiredDateSelected(int year, Month month) {
String[] headerParts = yearMonthHeader.getText().toUpperCase().split(" ");
String[] headerParts = getYearMonthHeader().getText().toUpperCase().split(" ");
Month selectedMonth = Month.valueOf(headerParts[0]);
int selectedYear = Integer.parseInt(headerParts[1].toUpperCase());
return year == selectedYear && selectedMonth == month;
}

public WebElement getYearMonthHeader() {
wait.withTimeout(Timeouts.SMALL).until(dynamicRedrawFinishes(yearMonthHeader));
return yearMonthHeader;
}

private ExpectedCondition<Boolean> dynamicRedrawFinishes(final WebElement element) {
return new ExpectedCondition<Boolean>() {
int retries = 3;

@Override
public Boolean apply(WebDriver ignored) {
try {
element.isEnabled();
} catch (StaleElementReferenceException expected) {
if (retries > 0) {
retries--;
dynamicRedrawFinishes(element);
} else {
throw expected;
}
}
return true;
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,19 @@
*/
package com.cognifide.qa.bb.aem.touch.siteadmin.aem62;

import java.util.Objects;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.qualifier.PageObject;
import com.cognifide.qa.bb.aem.touch.siteadmin.aem61.conditions.NotDisabledCondition;
import com.cognifide.qa.bb.constants.Timeouts;
import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.provider.selenium.BobcatWait;
import com.cognifide.qa.bb.qualifier.PageObject;
import com.google.inject.Inject;

@PageObject
Expand All @@ -45,7 +47,6 @@ public class MovePageWizard {
private WebElement nextButton;

@FindBy(css = "coral-panel.is-selected button.coral-Button--primary[data-foundation-wizard-control-action='next']")
@LoadableComponent(condClass = NotDisabledCondition.class)
private WebElement moveButton;

@FindBy(css = "coral-columnview-item-thumbnail")
Expand All @@ -59,6 +60,7 @@ public MovePageWizard next() {
public MovePageWizard overrideDestinationPage(String destination) {
anyPage.click();
JavascriptExecutor jse = (JavascriptExecutor) driver;
wait.withTimeout(Timeouts.SMALL).until(input -> Objects.isNull(moveButton.getAttribute("disabled")));
wait.withTimeout(Timeouts.SMALL).until(input -> moveButton.isEnabled(), Timeouts.MINIMAL);
jse.executeScript(
"document.getElementsByClassName('foundation-advancedselect-values')[0].removeAttribute('hidden');");
Expand All @@ -69,8 +71,8 @@ public MovePageWizard overrideDestinationPage(String destination) {
}

public MovePageWizard move() {
wait.withTimeout(Timeouts.SMALL).until(input -> Objects.isNull(moveButton.getAttribute("disabled")));
moveButton.click();
return this;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,24 @@

import java.time.LocalDateTime;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import com.cognifide.qa.bb.aem.touch.siteadmin.aem62.calendar.CoralCalendar;
import com.cognifide.qa.bb.aem.touch.siteadmin.common.IsLoadedCondition;
import com.cognifide.qa.bb.constants.Timeouts;
import com.cognifide.qa.bb.loadable.annotation.LoadableComponent;
import com.cognifide.qa.bb.provider.selenium.BobcatWait;
import com.cognifide.qa.bb.qualifier.Global;
import com.cognifide.qa.bb.qualifier.PageObject;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import com.google.inject.Inject;

@PageObject
public class ReplicatePageWizard {

@Inject
private BobcatWait wait;

@Global
@FindBy(css = "button.foundation-wizard-control[type='submit']")
private WebElement submitBtn;
Expand All @@ -38,7 +44,6 @@ public class ReplicatePageWizard {

@Global
@FindBy(css = "coral-popover.coral3-Popover")
@LoadableComponent(condClass = IsLoadedCondition.class)
private CoralCalendar calendar;

public void selectDateAndTime(LocalDateTime dateTime) {
Expand All @@ -47,11 +52,11 @@ public void selectDateAndTime(LocalDateTime dateTime) {
}

calendarButton.click();
wait.withTimeout(Timeouts.MINIMAL).until(ignored -> calendar.isLoaded());
calendar.selectDateAndTime(dateTime);
}

public void submit() {
submitBtn.click();
}

}
Loading

0 comments on commit 21fd72b

Please sign in to comment.