From f65d045fa484de676f9846e47ad3b5bafbc5bbab Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Thu, 10 Oct 2019 13:59:37 +0200 Subject: [PATCH 1/7] Fix handling of Textfield to enable configuration for the Content Fragment component --- .../component/dialog/dialogfields/DefaultTextfield.java | 9 ++++++--- .../aem/core/component/dialog/dialogfields/Locators.java | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java index 3446548a..d82ef90b 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java @@ -24,18 +24,21 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; +import com.cognifide.qa.bb.qualifier.CurrentScope; import com.cognifide.qa.bb.qualifier.PageObject; +import com.google.inject.Inject; /** * Default implementation of {@link Textfield} */ -@PageObject(css = Locators.FIELD_WRAPPER_CSS) +@PageObject(css = Locators.TEXTFIELD_CSS) public class DefaultTextfield implements Textfield { - @FindBy(css = ".coral3-Textfield:not([type='hidden']") + @Inject + @CurrentScope private WebElement input; - @FindBy(css = Locators.LABEL_CSS) + @FindBy(css = Locators.ALTERNATE_LABEL_XPATH) private List label; @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index cdf0185e..7fa22df1 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -33,4 +33,5 @@ private Locators() { public static final String MULTIFIELD_CSS = "coral-multifield"; public static final String AUTOCOMPLETE_CSS = "foundation-autocomplete"; public static final String ALTERNATE_LABEL_XPATH = "../label"; + public static final String TEXTFIELD_CSS = ".coral3-Textfield:not([type='hidden'])"; } From 1a594fb7a7600d10a792c7676dd1041037764e68 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Thu, 10 Oct 2019 18:43:52 +0200 Subject: [PATCH 2/7] Fix an error in the DefaultTextfield Fix DefaultSelect to enable BB the configuration of the Content Fragment component --- .../dialog/dialogfields/DefaultSelect.java | 13 ++++++++++--- .../dialog/dialogfields/DefaultTextfield.java | 2 +- .../component/dialog/dialogfields/Locators.java | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java index 13095689..a0448ebd 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java @@ -26,22 +26,29 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; +import com.cognifide.qa.bb.qualifier.CurrentScope; import com.cognifide.qa.bb.qualifier.PageObject; +import com.cognifide.qa.bb.wait.BobcatWait; +import com.google.inject.Inject; /** * Default implementation of {@link Select} */ -@PageObject(xpath = "//coral-select/..") +@PageObject(css = Locators.SELECT_CSS) public class DefaultSelect implements Select { private static final String SELECT_OPTIONS_CSS = ".coral3-SelectList-item"; - @FindBy(css = ".coral3-Select") + @Inject + @CurrentScope private WebElement selectField; - @FindBy(css = Locators.LABEL_CSS) + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) private List label; + @Inject + private BobcatWait wait; + @Override public void setValue(Object value) { selectField.click(); diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java index d82ef90b..69d28ae2 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java @@ -38,7 +38,7 @@ public class DefaultTextfield implements Textfield { @CurrentScope private WebElement input; - @FindBy(css = Locators.ALTERNATE_LABEL_XPATH) + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) private List label; @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index 7fa22df1..115edfb4 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -34,4 +34,5 @@ private Locators() { public static final String AUTOCOMPLETE_CSS = "foundation-autocomplete"; public static final String ALTERNATE_LABEL_XPATH = "../label"; public static final String TEXTFIELD_CSS = ".coral3-Textfield:not([type='hidden'])"; + public static final String SELECT_CSS = ".coral3-Select"; } From 2f0ea6a76785456fddb04708aac253c74036b7cc Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Mon, 14 Oct 2019 09:39:23 +0200 Subject: [PATCH 3/7] Add NumberInput dialog field Add ContentFragmentPathBrowser dialog field --- .../ContentFragmentPathBrowserImpl.java | 70 +++++++++++++++++++ .../dialogfields/DefaultNumberInput.java | 51 ++++++++++++++ .../dialogfields/DefaultPathBrowser.java | 5 +- .../component/dialog/dialogfields/Fields.java | 2 + .../dialog/dialogfields/Locators.java | 1 + .../modules/fields/DialogFieldsModule.java | 6 ++ .../modules/fields/FieldsRegistryModule.java | 6 ++ .../ContentFragmentPathBrowser.java | 29 ++++++++ .../dialog/dialogfields/NumberInput.java | 29 ++++++++ 9 files changed, 197 insertions(+), 2 deletions(-) create mode 100644 bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java create mode 100644 bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java create mode 100644 bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowser.java create mode 100644 bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/NumberInput.java diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java new file mode 100644 index 00000000..a111f332 --- /dev/null +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java @@ -0,0 +1,70 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2016 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; + +import java.util.List; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import com.cognifide.qa.bb.qualifier.Global; +import com.cognifide.qa.bb.qualifier.PageObject; +import com.cognifide.qa.bb.wait.BobcatWait; +import com.google.inject.Inject; + +/** + * Default implementation of {@link PathBrowser} + */ +@PageObject(css = Locators.AUTOCOMPLETE_CSS) +public class ContentFragmentPathBrowserImpl implements ContentFragmentPathBrowser { + + @FindBy(css = ".coral3-Textfield") + private WebElement input; + + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) + private List label; + + @FindBy(css = ".foundation-picker-buttonlist.coral3-Overlay.is-open") + private WebElement firstResult; + + @Global + @FindBy(css = "coral3-Dialog--warning is-open .coral3-Button--primary") + private WebElement warningConfirmation; + + @Inject + private BobcatWait bobcatWait; + + @Override + public void setValue(Object value) { + input.clear(); + input.sendKeys(String.valueOf(value)); + bobcatWait.until(elementToBeClickable(firstResult)); + input.sendKeys(Keys.ENTER); + bobcatWait.until(elementToBeClickable(warningConfirmation)).click(); + } + + @Override + public String getLabel() { + return label.isEmpty() ? "" : label.get(0).getText(); + } +} diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java new file mode 100644 index 00000000..d2f040c2 --- /dev/null +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java @@ -0,0 +1,51 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2016 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import java.util.List; + +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import com.cognifide.qa.bb.qualifier.PageObject; + +/** + * Default implementation of {@link NumberInput} + */ +@PageObject(css = Locators.NUMBERINPUT_CSS) +public class DefaultNumberInput implements NumberInput { + + @FindBy(css = "input") + private WebElement input; + + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) + private List label; + + @Override + public void setValue(Object value) { + input.clear(); + input.sendKeys(String.valueOf(value)); + } + + @Override + public String getLabel() { + return label.isEmpty() ? "" : label.get(0).getText(); + } +} diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java index 114f6b21..4299f11a 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java @@ -23,6 +23,7 @@ import java.util.List; +import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -52,8 +53,8 @@ public class DefaultPathBrowser implements PathBrowser { public void setValue(Object value) { input.clear(); input.sendKeys(String.valueOf(value)); - - bobcatWait.until(elementToBeClickable(firstResult)).click(); + bobcatWait.until(elementToBeClickable(firstResult)); + input.sendKeys(Keys.ENTER); } @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java index 6733678c..425984ec 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java @@ -34,6 +34,8 @@ public class Fields { public static final String RADIO_GROUP = "RADIO_GROUP"; public static final String RICHTEXT = "RICHTEXT"; public static final String TAGBROWSER = "TAGBROWSER"; + public static final String NUMBER_INPUT = "NUMBER_INPUT"; + public static final String CONTENT_FRAGMENT_PATHBROWSER = "CONTENT_FRAGMENT_PATHBROWSER"; private Fields() { //empty diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index 115edfb4..0da6d33a 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -35,4 +35,5 @@ private Locators() { public static final String ALTERNATE_LABEL_XPATH = "../label"; public static final String TEXTFIELD_CSS = ".coral3-Textfield:not([type='hidden'])"; public static final String SELECT_CSS = ".coral3-Select"; + public static final String NUMBERINPUT_CSS = "coral-numberinput"; } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java index a5327686..fbb9425b 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java @@ -23,10 +23,13 @@ import org.slf4j.LoggerFactory; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.Checkbox; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowser; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowserImpl; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultCheckbox; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultImage; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifield; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifieldItem; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultNumberInput; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultPathBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRadioGroup; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRichText; @@ -35,6 +38,7 @@ import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.Image; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.Multifield; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.MultifieldItem; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.NumberInput; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.PathBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.RadioGroup; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.RichText; @@ -62,6 +66,8 @@ protected void configure() { bind(RichText.class).to(DefaultRichText.class); bind(Select.class).to(DefaultSelect.class); bind(Textfield.class).to(DefaultTextfield.class); + bind(NumberInput.class).to(DefaultNumberInput.class); + bind(ContentFragmentPathBrowser.class).to(ContentFragmentPathBrowserImpl.class); install(new FieldsRegistryModule()); } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java index 15c7d12b..40867b37 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java @@ -22,10 +22,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowserImpl; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultCheckbox; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultImage; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifield; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifieldItem; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultNumberInput; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultPathBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRadioGroup; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRichText; @@ -62,12 +64,16 @@ protected void configure() { registerField(fieldsBinder, Fields.MULTIFIELD_ITEM, DefaultMultifieldItem.class); registerField(fieldsBinder, Fields.RADIO_GROUP, DefaultRadioGroup.class); registerField(fieldsBinder, Fields.TAGBROWSER, DefaultTagBrowser.class); + registerField(fieldsBinder, Fields.NUMBER_INPUT, DefaultNumberInput.class); registerField(fieldsBinder, Fields.RICHTEXT, DefaultRichText.class); registerField(fieldsBinder, Options.RTE_OPTIONS, RteOption.class); registerField(fieldsBinder, Options.RTE_OPTIONS_HYPERLINK, Hyperlink.class); registerField(fieldsBinder, Options.RTE_OPTIONS_LISTS, Lists.class); registerField(fieldsBinder, Options.RTE_OPTIONS_PARAGRAPH_FORMATS, ParagraphFormats.class); + + registerField(fieldsBinder, Fields.CONTENT_FRAGMENT_PATHBROWSER, + ContentFragmentPathBrowserImpl.class); } private void registerField(MapBinder binder, String name, diff --git a/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowser.java b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowser.java new file mode 100644 index 00000000..ca347521 --- /dev/null +++ b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowser.java @@ -0,0 +1,29 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2019 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import com.cognifide.qa.bb.qualifier.PageObjectInterface; + +/** + * This class represents path browser dialog field. + */ +@PageObjectInterface +public interface ContentFragmentPathBrowser extends DialogField { +} diff --git a/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/NumberInput.java b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/NumberInput.java new file mode 100644 index 00000000..57dd58b1 --- /dev/null +++ b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/NumberInput.java @@ -0,0 +1,29 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2019 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import com.cognifide.qa.bb.qualifier.PageObjectInterface; + +/** + * This class represents single line number input dialog field. + */ +@PageObjectInterface +public interface NumberInput extends DialogField { +} From a0a8c3d8a4934a8de3abdc2c09b42f652b51f837 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Mon, 14 Oct 2019 12:49:43 +0200 Subject: [PATCH 4/7] Fix handling the content fragment warning dialog --- .../ContentFragmentPathBrowserImpl.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java index a111f332..2d26b62f 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java @@ -19,9 +19,12 @@ */ package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; -import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; +import static org.openqa.selenium.support.ui.ExpectedConditions.*; import java.util.List; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; @@ -30,6 +33,7 @@ import com.cognifide.qa.bb.qualifier.Global; import com.cognifide.qa.bb.qualifier.PageObject; import com.cognifide.qa.bb.wait.BobcatWait; +import com.cognifide.qa.bb.wait.TimingsBuilder; import com.google.inject.Inject; /** @@ -48,7 +52,7 @@ public class ContentFragmentPathBrowserImpl implements ContentFragmentPathBrowse private WebElement firstResult; @Global - @FindBy(css = "coral3-Dialog--warning is-open .coral3-Button--primary") + @FindBy(css = ".coral3-Dialog--warning.is-open .coral3-Button--primary") private WebElement warningConfirmation; @Inject @@ -60,7 +64,17 @@ public void setValue(Object value) { input.sendKeys(String.valueOf(value)); bobcatWait.until(elementToBeClickable(firstResult)); input.sendKeys(Keys.ENTER); - bobcatWait.until(elementToBeClickable(warningConfirmation)).click(); + + // Branching logic in tests is not OK, it's true. But this part handles an unpredictable part of + // the application. Sometimes a warning dialog appears and it needs to be handled. + if (bobcatWait + .tweak(new TimingsBuilder().explicitTimeout(1).build()) + .ignoring(Stream.of(NoSuchElementException.class).collect(Collectors.toList())) + .isConditionMet(elementToBeClickable(warningConfirmation))) { + warningConfirmation.click(); + bobcatWait.tweak(new TimingsBuilder().explicitTimeout(1).build()) + .isConditionMet(not(elementToBeClickable(warningConfirmation))); + } } @Override From 0f9e02e5864f73d4288e1384553b62bbdcc0b8fa Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Tue, 15 Oct 2019 11:28:03 +0200 Subject: [PATCH 5/7] Fix most issues mentioned in CR --- ...pl.java => DefaultContentFragmentPathBrowser.java} | 11 +++++------ .../dialog/dialogfields/DefaultMultifield.java | 2 +- .../dialog/dialogfields/DefaultNumberInput.java | 2 +- .../component/dialog/dialogfields/DefaultSelect.java | 6 +----- .../dialog/dialogfields/DefaultTextfield.java | 2 +- .../core/component/dialog/dialogfields/Locators.java | 4 ---- .../aem/core/modules/fields/DialogFieldsModule.java | 4 ++-- .../aem/core/modules/fields/FieldsRegistryModule.java | 4 ++-- 8 files changed, 13 insertions(+), 22 deletions(-) rename bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/{ContentFragmentPathBrowserImpl.java => DefaultContentFragmentPathBrowser.java} (89%) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java similarity index 89% rename from bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java rename to bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java index 2d26b62f..2bab5327 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/ContentFragmentPathBrowserImpl.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java @@ -19,12 +19,11 @@ */ package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; -import static org.openqa.selenium.support.ui.ExpectedConditions.*; +import static org.openqa.selenium.support.ui.ExpectedConditions.not; +import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; import java.util.List; import java.util.NoSuchElementException; -import java.util.stream.Collectors; -import java.util.stream.Stream; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; @@ -37,10 +36,10 @@ import com.google.inject.Inject; /** - * Default implementation of {@link PathBrowser} + * Default implementation of {@link ContentFragmentPathBrowser} */ @PageObject(css = Locators.AUTOCOMPLETE_CSS) -public class ContentFragmentPathBrowserImpl implements ContentFragmentPathBrowser { +public class DefaultContentFragmentPathBrowser implements ContentFragmentPathBrowser { @FindBy(css = ".coral3-Textfield") private WebElement input; @@ -69,7 +68,7 @@ public void setValue(Object value) { // the application. Sometimes a warning dialog appears and it needs to be handled. if (bobcatWait .tweak(new TimingsBuilder().explicitTimeout(1).build()) - .ignoring(Stream.of(NoSuchElementException.class).collect(Collectors.toList())) + .ignoring(NoSuchElementException.class) .isConditionMet(elementToBeClickable(warningConfirmation))) { warningConfirmation.click(); bobcatWait.tweak(new TimingsBuilder().explicitTimeout(1).build()) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java index ab34e781..1378e52a 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java @@ -36,7 +36,7 @@ /** * Default implementation of {@link Multifield} */ -@PageObject(css = Locators.MULTIFIELD_CSS) +@PageObject(css = "coral-multifield") public class DefaultMultifield implements Multifield { @FindBy(css = "button[coral-multifield-add]") diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java index d2f040c2..2992e064 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java @@ -29,7 +29,7 @@ /** * Default implementation of {@link NumberInput} */ -@PageObject(css = Locators.NUMBERINPUT_CSS) +@PageObject(css = "coral-numberinput") public class DefaultNumberInput implements NumberInput { @FindBy(css = "input") diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java index a0448ebd..adfa7c54 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultSelect.java @@ -28,13 +28,12 @@ import com.cognifide.qa.bb.qualifier.CurrentScope; import com.cognifide.qa.bb.qualifier.PageObject; -import com.cognifide.qa.bb.wait.BobcatWait; import com.google.inject.Inject; /** * Default implementation of {@link Select} */ -@PageObject(css = Locators.SELECT_CSS) +@PageObject(css = ".coral3-Select") public class DefaultSelect implements Select { private static final String SELECT_OPTIONS_CSS = ".coral3-SelectList-item"; @@ -46,9 +45,6 @@ public class DefaultSelect implements Select { @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) private List label; - @Inject - private BobcatWait wait; - @Override public void setValue(Object value) { selectField.click(); diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java index 69d28ae2..ca081274 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTextfield.java @@ -31,7 +31,7 @@ /** * Default implementation of {@link Textfield} */ -@PageObject(css = Locators.TEXTFIELD_CSS) +@PageObject(css = ".coral3-Textfield:not([type='hidden'])") public class DefaultTextfield implements Textfield { @Inject diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index 0da6d33a..95ddac8a 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -30,10 +30,6 @@ private Locators() { public static final String FIELD_WRAPPER_CSS = ".coral-Form-fieldwrapper"; public static final String LABEL_CSS = ".coral-Form-fieldlabel"; - public static final String MULTIFIELD_CSS = "coral-multifield"; public static final String AUTOCOMPLETE_CSS = "foundation-autocomplete"; public static final String ALTERNATE_LABEL_XPATH = "../label"; - public static final String TEXTFIELD_CSS = ".coral3-Textfield:not([type='hidden'])"; - public static final String SELECT_CSS = ".coral3-Select"; - public static final String NUMBERINPUT_CSS = "coral-numberinput"; } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java index fbb9425b..a4ef88e1 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/DialogFieldsModule.java @@ -24,7 +24,7 @@ import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.Checkbox; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowser; -import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowserImpl; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultContentFragmentPathBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultCheckbox; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultImage; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifield; @@ -67,7 +67,7 @@ protected void configure() { bind(Select.class).to(DefaultSelect.class); bind(Textfield.class).to(DefaultTextfield.class); bind(NumberInput.class).to(DefaultNumberInput.class); - bind(ContentFragmentPathBrowser.class).to(ContentFragmentPathBrowserImpl.class); + bind(ContentFragmentPathBrowser.class).to(DefaultContentFragmentPathBrowser.class); install(new FieldsRegistryModule()); } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java index 40867b37..af4bff69 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java @@ -22,7 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.ContentFragmentPathBrowserImpl; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultContentFragmentPathBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultCheckbox; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultImage; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultMultifield; @@ -73,7 +73,7 @@ protected void configure() { registerField(fieldsBinder, Options.RTE_OPTIONS_PARAGRAPH_FORMATS, ParagraphFormats.class); registerField(fieldsBinder, Fields.CONTENT_FRAGMENT_PATHBROWSER, - ContentFragmentPathBrowserImpl.class); + DefaultContentFragmentPathBrowser.class); } private void registerField(MapBinder binder, String name, From a09cf0573c9a82af616398451a2d5dce0c09116d Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Tue, 15 Oct 2019 11:49:18 +0200 Subject: [PATCH 6/7] Fix the last of the issues mentioned in the CR --- .../dialog/DefaultDialogFieldRetriever.java | 2 +- .../DefaultContentFragmentPathBrowser.java | 16 +++++++++------- .../component/dialog/dialogfields/Locators.java | 1 - 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/DefaultDialogFieldRetriever.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/DefaultDialogFieldRetriever.java index a834c61b..2ba7d70f 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/DefaultDialogFieldRetriever.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/DefaultDialogFieldRetriever.java @@ -82,7 +82,7 @@ public DialogField getDialogField(WebElement parentElement, String type) { private List getFieldElements(WebElement parentElement, String type) { By selector = getSelectorFromClass(getClassForType(type), pageObjectInjector.getOriginalInjector()) - .orElse(By.cssSelector(Locators.FIELD_WRAPPER_CSS)); + .orElse(By.cssSelector(".coral-Form-fieldwrapper")); return parentElement.findElements(selector); } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java index 2bab5327..81745a91 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java @@ -63,9 +63,16 @@ public void setValue(Object value) { input.sendKeys(String.valueOf(value)); bobcatWait.until(elementToBeClickable(firstResult)); input.sendKeys(Keys.ENTER); + closeWarningDialogIfRequired(); + } + + @Override + public String getLabel() { + return label.isEmpty() ? "" : label.get(0).getText(); + } - // Branching logic in tests is not OK, it's true. But this part handles an unpredictable part of - // the application. Sometimes a warning dialog appears and it needs to be handled. + // The warning dialog doesn't always appear, so it's handled within an if-clause + private void closeWarningDialogIfRequired() { if (bobcatWait .tweak(new TimingsBuilder().explicitTimeout(1).build()) .ignoring(NoSuchElementException.class) @@ -75,9 +82,4 @@ public void setValue(Object value) { .isConditionMet(not(elementToBeClickable(warningConfirmation))); } } - - @Override - public String getLabel() { - return label.isEmpty() ? "" : label.get(0).getText(); - } } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index 95ddac8a..0743d4e2 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -28,7 +28,6 @@ private Locators() { //util } - public static final String FIELD_WRAPPER_CSS = ".coral-Form-fieldwrapper"; public static final String LABEL_CSS = ".coral-Form-fieldlabel"; public static final String AUTOCOMPLETE_CSS = "foundation-autocomplete"; public static final String ALTERNATE_LABEL_XPATH = "../label"; From 2d9b0c397c3ea839b4e9fa6597966ddf149028d9 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Tue, 22 Oct 2019 14:57:38 +0200 Subject: [PATCH 7/7] Fix the current year in copyright comments --- .../dialog/dialogfields/DefaultContentFragmentPathBrowser.java | 2 +- .../core/component/dialog/dialogfields/DefaultNumberInput.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java index 81745a91..d0c62c89 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultContentFragmentPathBrowser.java @@ -2,7 +2,7 @@ * #%L * Bobcat * %% - * Copyright (C) 2016 Cognifide Ltd. + * Copyright (C) 2019 Cognifide Ltd. * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java index 2992e064..ff388c61 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultNumberInput.java @@ -2,7 +2,7 @@ * #%L * Bobcat * %% - * Copyright (C) 2016 Cognifide Ltd. + * Copyright (C) 2019 Cognifide Ltd. * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.