diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/CreatePageWizard.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/CreatePageWizard.java index c22a860c..e1082b5b 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/CreatePageWizard.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/CreatePageWizard.java @@ -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; @@ -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) { @@ -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)); + } } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/ReplicateLaterWindow.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/ReplicateLaterWindow.java index f1696704..9c16d4cf 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/ReplicateLaterWindow.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/ReplicateLaterWindow.java @@ -16,23 +16,26 @@ 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") @@ -40,7 +43,6 @@ public class ReplicateLaterWindow { @Global @FindBy(css = ".coral-Popover--datepicker") - @LoadableComponent(condClass = IsLoadedCondition.class) private GraniteCalendar calendar; public void selectDateAndTime(LocalDateTime dateTime) { @@ -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; + } } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/SiteadminPage.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/SiteadminPage.java index 08003743..b6c52a32 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/SiteadminPage.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/SiteadminPage.java @@ -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( @@ -168,7 +167,7 @@ public SiteadminActions deletePage(String title) { @Override public SiteadminActions deleteSubPages() { - if (childPageWindow.hasSubPages()) { + if (isLoadedCondition() && childPageWindow.hasSubPages()) { childPageWindow.pressSelectAllPages(); toolbar.deletePage(); } @@ -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); } @@ -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); } @@ -257,5 +260,4 @@ private void retryLoad() { private boolean isLoadedCondition() { return conditions.isConditionMet(ignored -> childPageWindow.isLoaded()); } - } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/calendar/YearMonthPicker.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/calendar/YearMonthPicker.java index a66525ae..075a670a 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/calendar/YearMonthPicker.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem61/calendar/YearMonthPicker.java @@ -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") @@ -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 dynamicRedrawFinishes(final WebElement element) { + return new ExpectedCondition() { + 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; + } + }; + } } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/MovePageWizard.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/MovePageWizard.java index edafde39..96d5ae94 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/MovePageWizard.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/MovePageWizard.java @@ -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 @@ -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") @@ -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');"); @@ -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; } - } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/ReplicatePageWizard.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/ReplicatePageWizard.java index 6c39ec55..68aa981d 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/ReplicatePageWizard.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/ReplicatePageWizard.java @@ -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; @@ -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) { @@ -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(); } - } diff --git a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/SiteadminPage.java b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/SiteadminPage.java index c59274af..d5d5c28a 100644 --- a/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/SiteadminPage.java +++ b/bb-aem-touch-ui/src/main/java/com/cognifide/qa/bb/aem/touch/siteadmin/aem62/SiteadminPage.java @@ -68,7 +68,6 @@ public class SiteadminPage implements SiteadminActions, Loadable { @Global @FindBy(css = ".cq-siteadmin-admin-childpages") - @LoadableComponent(condClass = IsLoadedCondition.class) private ChildPageWindow childPageWindow; @Inject @@ -128,6 +127,7 @@ public SiteadminActions createNewPage(String title, String name, String template @Override public SiteadminActions publishPage(String title) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.publishPageNow(); waitForExpectedStatus(title, ActivationStatus.PUBLISHED); @@ -136,6 +136,7 @@ public SiteadminActions publishPage(String title) { @Override public SiteadminActions unpublishPage(String title) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.unpublishPageNow(); waitForExpectedStatus(title, ActivationStatus.NOT_PUBLISHED); @@ -144,6 +145,7 @@ public SiteadminActions unpublishPage(String title) { @Override public SiteadminActions publishPageLater(String title, LocalDateTime scheduledDateTime) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.publishPageLater(scheduledDateTime); wait.withTimeout(Timeouts.SMALL).until(input -> isPagePresent(title)); @@ -153,6 +155,7 @@ public SiteadminActions publishPageLater(String title, LocalDateTime scheduledDa @Override public SiteadminActions unpublishPageLater(String title, LocalDateTime scheduledDateTime) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.unpublishPageLater(scheduledDateTime); wait.withTimeout(Timeouts.SMALL).until(input -> isPagePresent(title)); @@ -162,6 +165,7 @@ public SiteadminActions unpublishPageLater(String title, LocalDateTime scheduled @Override public SiteadminActions deletePage(String title) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); int pageCount = childPageWindow.getPageCount(); siteadminToolbar.deleteSelectedPages(); @@ -171,6 +175,7 @@ public SiteadminActions deletePage(String title) { @Override public SiteadminActions deleteSubPages() { + waitUntilChildPageWindowIsLoaded(); if (childPageWindow.hasSubPages()) { childPageWindow.pressSelectAllPages(); siteadminToolbar.deleteSelectedPages(); @@ -180,6 +185,7 @@ public SiteadminActions deleteSubPages() { @Override public SiteadminActions copyPage(String title, String destination) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.copyPage(); navigateInteractively(destination); @@ -191,6 +197,7 @@ public SiteadminActions copyPage(String title, String destination) { @Override public SiteadminActions movePage(String title, String destinationPath) { + waitUntilChildPageWindowIsLoaded(); childPageWindow.selectPage(title); siteadminToolbar.movePage(destinationPath); return this; @@ -198,16 +205,19 @@ public SiteadminActions movePage(String title, String destinationPath) { @Override public boolean isPagePresent(String title) { + waitUntilChildPageWindowIsLoaded(); return childPageWindow.containsPage(title); } @Override public boolean hasChildPages() { + waitUntilChildPageWindowIsLoaded(); return childPageWindow.hasSubPages(); } @Override public ChildPageRow getPageFromList(String title) { + waitUntilChildPageWindowIsLoaded(); return childPageWindow.getChildPageRow(title); } @@ -317,4 +327,8 @@ private void goBackUsingNavigator(String destination, String currentUrl) { .getKey(); navigatorDropdown.selectByPath(closestPath); } + + private void waitUntilChildPageWindowIsLoaded() { + wait.withTimeout(Timeouts.MINIMAL).until(ignored -> childPageWindow.isLoaded()); + } } diff --git a/bb-core/src/main/java/com/cognifide/qa/bb/loadable/package-info.java b/bb-core/src/main/java/com/cognifide/qa/bb/loadable/package-info.java new file mode 100644 index 00000000..1392c261 --- /dev/null +++ b/bb-core/src/main/java/com/cognifide/qa/bb/loadable/package-info.java @@ -0,0 +1,5 @@ +/** + * @deprecated The Loadable functionality was always treated as an ALPHA release. It will be removed from 2.0 version. + */ +@Deprecated +package com.cognifide.qa.bb.loadable; diff --git a/bb-core/src/main/java/com/cognifide/qa/bb/modules/LoadablesModule.java b/bb-core/src/main/java/com/cognifide/qa/bb/modules/LoadablesModule.java index 9590afb6..5a470092 100644 --- a/bb-core/src/main/java/com/cognifide/qa/bb/modules/LoadablesModule.java +++ b/bb-core/src/main/java/com/cognifide/qa/bb/modules/LoadablesModule.java @@ -15,32 +15,29 @@ */ package com.cognifide.qa.bb.modules; +import static com.google.inject.matcher.Matchers.annotatedWith; +import static com.google.inject.matcher.Matchers.any; import static com.google.inject.matcher.Matchers.not; import static com.google.inject.matcher.Matchers.only; import static com.google.inject.matcher.Matchers.returns; import static com.google.inject.matcher.Matchers.subclassesOf; -import static com.google.inject.matcher.Matchers.annotatedWith; -import static com.google.inject.matcher.Matchers.any; - -import com.cognifide.qa.bb.loadable.annotation.LoadableComponent; -import com.cognifide.qa.bb.loadable.hierarchy.WebElementInterceptor; -import com.cognifide.qa.bb.loadable.context.ConditionContext; -import com.google.inject.AbstractModule; -import com.google.inject.matcher.Matcher; -import com.cognifide.qa.bb.loadable.hierarchy.PageObjectInterceptor; -import com.cognifide.qa.bb.qualifier.PageObject; import java.lang.reflect.Method; import org.aopalliance.intercept.MethodInterceptor; import org.openqa.selenium.WebElement; - - +import com.cognifide.qa.bb.loadable.annotation.LoadableComponent; +import com.cognifide.qa.bb.loadable.context.ConditionContext; +import com.cognifide.qa.bb.loadable.hierarchy.PageObjectInterceptor; +import com.cognifide.qa.bb.loadable.hierarchy.WebElementInterceptor; +import com.cognifide.qa.bb.loadable.mapper.TestObjectTypeListener; +import com.cognifide.qa.bb.qualifier.PageObject; +import com.google.inject.AbstractModule; +import com.google.inject.matcher.Matcher; /** * Module that provides bindings for Loadable components. See {@link LoadableComponent} annotation. - * */ public class LoadablesModule extends AbstractModule { @@ -53,13 +50,13 @@ protected void configure() { bindInterceptor(subclassesOf(WebElement.class), not(returns(only(ConditionContext.class))), webElementInterceptor); bindInterceptor(annotatedWith(PageObject.class), any(), pageObjectInterceptor); + bindListener(any(), new TestObjectTypeListener()); } @Override protected void bindInterceptor(Matcher> classMatcher, - Matcher methodMatcher, MethodInterceptor... interceptors) { + Matcher methodMatcher, MethodInterceptor... interceptors) { super.bindInterceptor(classMatcher, NoSyntheticMethodMatcher.INSTANCE.and(methodMatcher), - interceptors); + interceptors); } - } diff --git a/bb-core/src/main/java/com/cognifide/qa/bb/modules/PageObjectsModule.java b/bb-core/src/main/java/com/cognifide/qa/bb/modules/PageObjectsModule.java index ca899901..0fc8fb74 100644 --- a/bb-core/src/main/java/com/cognifide/qa/bb/modules/PageObjectsModule.java +++ b/bb-core/src/main/java/com/cognifide/qa/bb/modules/PageObjectsModule.java @@ -26,13 +26,12 @@ import org.openqa.selenium.WebElement; import com.cognifide.qa.bb.mapper.PageObjectTypeListener; -import com.cognifide.qa.bb.mapper.field.PageObjectSelectorListProxyProvider; -import com.cognifide.qa.bb.loadable.mapper.TestObjectTypeListener; -import com.cognifide.qa.bb.mapper.field.SelectorPageObjectProvider; import com.cognifide.qa.bb.mapper.field.CurrentFrameProvider; import com.cognifide.qa.bb.mapper.field.FieldProvider; import com.cognifide.qa.bb.mapper.field.PageObjectListProxyProvider; +import com.cognifide.qa.bb.mapper.field.PageObjectSelectorListProxyProvider; import com.cognifide.qa.bb.mapper.field.ScopedPageObjectProvider; +import com.cognifide.qa.bb.mapper.field.SelectorPageObjectProvider; import com.cognifide.qa.bb.qualifier.CurrentScope; import com.cognifide.qa.bb.scope.current.CurrentScopeListProvider; import com.cognifide.qa.bb.scope.current.CurrentWebElementProvider; @@ -50,7 +49,6 @@ public class PageObjectsModule extends AbstractModule { protected void configure() { bindListener(any(), new PageObjectTypeListener()); - bindListener(any(), new TestObjectTypeListener()); Multibinder fieldProviders = Multibinder.newSetBinder(binder(), FieldProvider.class);