diff --git a/all/pom.xml b/all/pom.xml index a4d43b86..30798c13 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -137,6 +137,21 @@ + + com.adobe.aem + aemanalyser-maven-plugin + 1.4.10 + true + + + analyse-project + verify + + project-analyse + + + + @@ -202,6 +217,11 @@ + + aem-cif-sdk-api + com.adobe.aem + ${aem.cif.sdk.api} + com.adobe.aem.guides aem-cif-guides-venia.ui.apps diff --git a/classic/all/pom.xml b/classic/all/pom.xml index 1c8042d3..ac337dad 100644 --- a/classic/all/pom.xml +++ b/classic/all/pom.xml @@ -123,11 +123,6 @@ magento-graphql /apps/venia-vendor-packages/application/install - - com.adobe.commerce.cif - graphql-client - /apps/venia-vendor-packages/application/install - com.adobe.cq core.wcm.components.content @@ -310,10 +305,6 @@ com.adobe.commerce.cif core-cif-components-extensions-product-recs-bundle - - com.adobe.commerce.cif - graphql-client - com.adobe.commerce.cif magento-graphql diff --git a/classic/ui.config/src/main/content/jcr_root/apps/venia/osgiconfig-classic/config.author/com.adobe.granite.resourcestatus.impl.CompositeStatusType~editor.config.cfg.json b/classic/ui.config/src/main/content/jcr_root/apps/venia/osgiconfig-classic/config.author/com.adobe.granite.resourcestatus.impl.CompositeStatusType~editor.config.cfg.json new file mode 100644 index 00000000..b85624ec --- /dev/null +++ b/classic/ui.config/src/main/content/jcr_root/apps/venia/osgiconfig-classic/config.author/com.adobe.granite.resourcestatus.impl.CompositeStatusType~editor.config.cfg.json @@ -0,0 +1,8 @@ +{ + "name": "editor", + "types": [ + "catalog-page", + "workflow", + "launches" + ] +} \ No newline at end of file diff --git a/core/src/main/java/com/venia/core/models/commerce/MyProductTeaserImpl.java b/core/src/main/java/com/venia/core/models/commerce/MyProductTeaserImpl.java index c6f77a17..3a26e5a3 100644 --- a/core/src/main/java/com/venia/core/models/commerce/MyProductTeaserImpl.java +++ b/core/src/main/java/com/venia/core/models/commerce/MyProductTeaserImpl.java @@ -20,11 +20,14 @@ import javax.annotation.PostConstruct; import com.adobe.cq.commerce.core.components.datalayer.ProductData; +import com.adobe.cq.commerce.core.components.models.common.CombinedSku; import com.adobe.cq.commerce.core.components.models.common.CommerceIdentifier; import com.adobe.cq.commerce.core.components.models.common.Price; import com.adobe.cq.commerce.core.components.models.productteaser.ProductTeaser; import com.adobe.cq.commerce.core.components.models.retriever.AbstractProductRetriever; +import com.adobe.cq.commerce.magento.graphql.FilterRangeTypeInput; + import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.models.annotations.Model; @@ -58,6 +61,14 @@ public void initModel() { // automatically take care of executing your query as soon // as you try to access any product property. productRetriever.extendProductQueryWith(p -> p.createdAt()); + + // Extend the product attribute query by passing a partial filter to the ProductRetriever. + // Alternatively you can also return your own instance of ProductAttributeFilterInput to + // completely replace the filter. + productRetriever.extendProductFilterWith(f -> f + .setPrice(new FilterRangeTypeInput() + .setFrom("0") + .setTo("50000"))); } } @@ -150,4 +161,10 @@ public boolean getAddToWishListEnabled() { public String getLinkTarget() { return productTeaser.getLinkTarget(); } + + @Override + public CombinedSku getCombinedSku() { + return productTeaser.getCombinedSku(); + } + } diff --git a/core/src/test/java/com/venia/core/models/commerce/MyProductTeaserImplTest.java b/core/src/test/java/com/venia/core/models/commerce/MyProductTeaserImplTest.java index 946edbb3..7a42319b 100644 --- a/core/src/test/java/com/venia/core/models/commerce/MyProductTeaserImplTest.java +++ b/core/src/test/java/com/venia/core/models/commerce/MyProductTeaserImplTest.java @@ -14,6 +14,7 @@ package com.venia.core.models.commerce; import com.adobe.cq.commerce.core.components.datalayer.ProductData; +import com.adobe.cq.commerce.core.components.models.common.CombinedSku; import com.adobe.cq.commerce.core.components.models.common.CommerceIdentifier; import com.adobe.cq.commerce.core.components.models.common.Price; import com.adobe.cq.commerce.core.components.models.productteaser.ProductTeaser; @@ -221,6 +222,15 @@ void testIsVirtualProduct() throws Exception { Assertions.assertFalse(underTest.isVirtualProduct()); } + @Test + public void testGetCombinedSku() throws Exception { + setup(PRODUCTTEASER_NO_BADGE); + Mockito.doReturn(new CombinedSku("foo", "bar")).when(productTeaser).getCombinedSku(); + Assertions.assertNotNull(underTest.getCombinedSku()); + Assertions.assertEquals("foo", underTest.getCombinedSku().getBaseSku()); + Assertions.assertEquals("bar", underTest.getCombinedSku().getVariantSku()); + } + @Test void testGetCommerceIdentifier() throws Exception { diff --git a/pom.xml b/pom.xml index 52cce4e1..5662880f 100644 --- a/pom.xml +++ b/pom.xml @@ -87,15 +87,16 @@ admin admin 2.18.6 - 2.10.0 + 2.11.0 1.7.10 - 9.0.0-magento242ee + 9.1.0-magento242ee 5.1.2 UTF-8 UTF-8 6.5.0 0.8.7 2020.9.4277.20200929T030741Z-200924 + 2022.08.02.00 Venia diff --git a/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-base/.content.xml b/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-base/.content.xml index ba196c8f..db07bb44 100644 --- a/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-base/.content.xml +++ b/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-base/.content.xml @@ -3,4 +3,4 @@ jcr:primaryType="cq:ClientLibraryFolder" allowProxy="{Boolean}true" categories="[venia.base]" - embed="[core.wcm.components.accordion.v1,core.wcm.components.tabs.v1,core.wcm.components.carousel.v1,core.wcm.components.image.v2,core.wcm.components.breadcrumb.v2,core.wcm.components.search.v1,core.wcm.components.form.text.v2,core.wcm.components.pdfviewer.v1,core.wcm.components.commons.datalayer.v1,venia.grid]"/> + embed="[core.wcm.components.accordion.v1,core.wcm.components.tabs.v1,core.wcm.components.carousel.v1,core.wcm.components.image.v2,core.wcm.components.breadcrumb.v2,core.wcm.components.search.v1,core.wcm.components.form.text.v2,core.wcm.components.pdfviewer.v1,venia.grid]"/> diff --git a/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-cif/.content.xml b/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-cif/.content.xml index fd434376..3e27f46d 100644 --- a/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-cif/.content.xml +++ b/ui.apps/src/main/content/jcr_root/apps/venia/clientlibs/clientlib-cif/.content.xml @@ -5,4 +5,4 @@ cssProcessor="[default:none,min:none]" jsProcessor="[default:none,min:none]" categories="[venia.cif]" - embed="[core.cif.components.common,core.cif.components.product.v3,core.cif.components.productcarousel.v1,core.cif.components.productcollection.v2,core.cif.components.productteaser.v1,core.cif.components.searchbar.v2,core.cif.components.header.v1,core.cif.components.carousel.v1,core.cif.components.categorycarousel.v1,core.cif.components.featuredcategorylist.v1,core.cif.components.storefront-events.v1,core.cif.components.extensions.product-recs.storefront-events-collector.v1]" /> + embed="[core.cif.components.common,core.cif.components.product.v3,core.cif.components.productcarousel.v1,core.cif.components.productcollection.v2,core.cif.components.productteaser.v1,core.cif.components.searchbar.v2,core.cif.components.header.v1,core.cif.components.carousel.v1,core.cif.components.categorycarousel.v1,core.cif.components.featuredcategorylist.v1,core.cif.components.storefront-events.v1,core.cif.components.extensions.product-recs.storefront-events-collector.v1,core.wcm.components.commons.site.link]" /> diff --git a/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productteaser/productteaser.html b/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productteaser/productteaser.html index f73ef420..1a7ba700 100644 --- a/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productteaser/productteaser.html +++ b/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productteaser/productteaser.html @@ -23,6 +23,7 @@
diff --git a/ui.content/src/main/content/jcr_root/conf/venia/settings/cloudconfigs/commerce/.content.xml b/ui.content/src/main/content/jcr_root/conf/venia/settings/cloudconfigs/commerce/.content.xml index 38b14b13..ff6c2b97 100644 --- a/ui.content/src/main/content/jcr_root/conf/venia/settings/cloudconfigs/commerce/.content.xml +++ b/ui.content/src/main/content/jcr_root/conf/venia/settings/cloudconfigs/commerce/.content.xml @@ -10,5 +10,6 @@ cq:graphqlClient="default" magentoRootCategoryId="Mg==" magentoStore="default" - enableUIDSupport="true"/> + enableUIDSupport="true" + enableClientSidePriceLoadin="{Boolean}true"/> diff --git a/ui.content/src/main/content/jcr_root/conf/venia/settings/wcm/policies/.content.xml b/ui.content/src/main/content/jcr_root/conf/venia/settings/wcm/policies/.content.xml index d1e9873b..52c00c52 100644 --- a/ui.content/src/main/content/jcr_root/conf/venia/settings/wcm/policies/.content.xml +++ b/ui.content/src/main/content/jcr_root/conf/venia/settings/wcm/policies/.content.xml @@ -362,6 +362,12 @@ showTitle="true" showImage="true"> + + + + sling:resourceType="venia/components/page" + navRoot="{Boolean}true"> + + + + diff --git a/ui.content/src/main/content/jcr_root/content/experience-fragments/venia/us/en/site/products/productlist-content/master/.content.xml b/ui.content/src/main/content/jcr_root/content/experience-fragments/venia/us/en/site/products/productlist-content/master/.content.xml new file mode 100755 index 00000000..c217ee40 --- /dev/null +++ b/ui.content/src/main/content/jcr_root/content/experience-fragments/venia/us/en/site/products/productlist-content/master/.content.xml @@ -0,0 +1,61 @@ + + + + + An elegant dress for dinner. + + + + + + + + + + + + + diff --git a/ui.content/src/main/content/jcr_root/content/venia/language-masters/en/products/category-page/.content.xml b/ui.content/src/main/content/jcr_root/content/venia/language-masters/en/products/category-page/.content.xml index b2bf45c7..f1fd1ea2 100644 --- a/ui.content/src/main/content/jcr_root/content/venia/language-masters/en/products/category-page/.content.xml +++ b/ui.content/src/main/content/jcr_root/content/venia/language-masters/en/products/category-page/.content.xml @@ -20,7 +20,14 @@ layout="responsiveGrid"> + sling:resourceType="venia/components/commerce/productlist"> + + + + diff --git a/ui.content/src/main/content/jcr_root/content/venia/us/en/products/category-page/.content.xml b/ui.content/src/main/content/jcr_root/content/venia/us/en/products/category-page/.content.xml index c014be69..a6118009 100755 --- a/ui.content/src/main/content/jcr_root/content/venia/us/en/products/category-page/.content.xml +++ b/ui.content/src/main/content/jcr_root/content/venia/us/en/products/category-page/.content.xml @@ -25,9 +25,15 @@ sling:resourceType="venia/components/container" layout="responsiveGrid"> + jcr:primaryType="nt:unstructured" + sling:resourceType="venia/components/commerce/productlist"> + + + + diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json index 0a6e36f0..935f529e 100644 --- a/ui.frontend/package-lock.json +++ b/ui.frontend/package-lock.json @@ -5,14 +5,14 @@ "requires": true, "dependencies": { "@adobe/aem-core-cif-product-recs-extension": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@adobe/aem-core-cif-product-recs-extension/-/aem-core-cif-product-recs-extension-2.9.0.tgz", - "integrity": "sha512-Qbab587LGpku/ShEFfUeU8gPERqRDZFqEUiNoS5Pingo7ZgcaU4S2ct0FMpimha7wu+sjKrU9/JElyXSbJhtuQ==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@adobe/aem-core-cif-product-recs-extension/-/aem-core-cif-product-recs-extension-2.11.0.tgz", + "integrity": "sha512-u2bWXzhzYW6SlVP6XnCd6nGJStf9bGscmXZl4Rlb1Y1YQxFAHtaOd1LAHEvfZW9gMUA/xYbS7YprnC6TzNFyDw==" }, "@adobe/aem-core-cif-react-components": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@adobe/aem-core-cif-react-components/-/aem-core-cif-react-components-2.9.0.tgz", - "integrity": "sha512-zcCufsgCR4vq3eOsWxRXnIBeFLjsl6XzoI0IiYrVn+nUhYux2LNoTr584YtEUNV5329d6oVGlO+PLl8pyz3r8Q==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@adobe/aem-core-cif-react-components/-/aem-core-cif-react-components-2.11.0.tgz", + "integrity": "sha512-loGp11TrUeFpjjwcMqp7B70xQe1kJxbIlE23JiVJX/E3AWGsXYAc1pbMaJEv8wFJqhNjYL1UrKSYjCrvDPdVBA==" }, "@apollo/client": { "version": "3.5.6", diff --git a/ui.frontend/package.json b/ui.frontend/package.json index b54c7c32..71c8a2fc 100644 --- a/ui.frontend/package.json +++ b/ui.frontend/package.json @@ -87,8 +87,8 @@ "webpack-merge": "^4.2.1" }, "dependencies": { - "@adobe/aem-core-cif-product-recs-extension": "2.9.0", - "@adobe/aem-core-cif-react-components": "2.9.0", + "@adobe/aem-core-cif-product-recs-extension": "2.11.0", + "@adobe/aem-core-cif-react-components": "2.11.0", "@apollo/client": "^3.5.5", "@babel/runtime": "^7.4.5", "@magento/peregrine": "11.0.0", diff --git a/ui.frontend/src/main/site/_base.scss b/ui.frontend/src/main/site/_base.scss index 8f136ee7..3abdc61f 100644 --- a/ui.frontend/src/main/site/_base.scss +++ b/ui.frontend/src/main/site/_base.scss @@ -88,3 +88,11 @@ button:disabled { cursor: default; touch-action: none; } + +.cmp-link__screen-reader-only { + position: absolute; + width: 1px; + clip: rect(0 0 0 0); + overflow: hidden; + white-space: nowrap; +} \ No newline at end of file diff --git a/ui.frontend/src/main/styles/commerce/_productlist.scss b/ui.frontend/src/main/styles/commerce/_productlist.scss index 96425723..3f03a48d 100644 --- a/ui.frontend/src/main/styles/commerce/_productlist.scss +++ b/ui.frontend/src/main/styles/commerce/_productlist.scss @@ -42,3 +42,7 @@ text-align: center; width: 150px; } + +.marketing-content__row-2 { + grid-row: 2; +} diff --git a/ui.tests/test-module/specs/venia/commerce-page-dialogs.js b/ui.tests/test-module/specs/venia/commerce-page-dialogs.js index d8dceb17..d5645aa4 100644 --- a/ui.tests/test-module/specs/venia/commerce-page-dialogs.js +++ b/ui.tests/test-module/specs/venia/commerce-page-dialogs.js @@ -22,6 +22,7 @@ describe('Commerce Page Component Dialog', function () { const landing_page = '/content/venia/us/en'; const category_page = '/content/venia/us/en/products/category-page'; const product_page = '/content/venia/us/en/products/product-page'; + const content_page = '/content/venia/us/en/cart-details'; let onboardingHdler; @@ -46,7 +47,7 @@ describe('Commerce Page Component Dialog', function () { onboardingHdler.disable(); }); - it('Landing page dialog extensions are displayed', () => { + it('shows dialog extensions on landing page', () => { // Landing page properties browser.url(`${page_properties}?item=${encodeURIComponent(`${landing_page}`)}`); @@ -59,11 +60,12 @@ describe('Commerce Page Component Dialog', function () { expect(commercePanel).toBeDisplayed(); expect(commercePanel.$('.coral-Form-fieldset-legend=Commerce Pages')).toBeDisplayed(); + expect(commercePanel.$('.coral-Form-fieldset-legend=Associated Content')).not.toBeDisplayed(); let fields = commercePanel.$$('.coral-Form-fieldwrapper'); // check fields - expect(fields.length).toEqual(5); + expect(fields.length).toEqual(6); expect(fields[0].$('label')).toHaveText('Product Page'); expect(fields[0].$('foundation-autocomplete[name="./cq:cifProductPage"]')).toExist(); expect(fields[1].$('label')).toHaveText('Category Page'); @@ -74,9 +76,12 @@ describe('Commerce Page Component Dialog', function () { expect(fields[3].$('foundation-autocomplete[name="./cq:cifAddressBookPage"]')).toExist(); expect(fields[4].$('label')).toHaveText('My Account Page'); expect(fields[4].$('foundation-autocomplete[name="./cq:cifMyAccountPage"]')).toExist(); + expect(fields[5].$('coral-checkbox')).toExist(); + expect(fields[5].$('label')).toHaveText('Landing Page'); + expect(fields[5].$('input[name="./navRoot"]')).toExist(); }); - it('Category page dialog extensions are displayed', () => { + it('shows dialog extensions on category page', () => { // Category page properties browser.url(`${page_properties}?item=${encodeURIComponent(`${category_page}`)}`); @@ -89,6 +94,7 @@ describe('Commerce Page Component Dialog', function () { expect(commercePanel).toBeDisplayed(); expect(commercePanel.$('.coral-Form-fieldset-legend=Commerce Settings')).toBeDisplayed(); + expect(commercePanel.$('.coral-Form-fieldset-legend=Associated Content')).not.toBeDisplayed(); let fields = commercePanel.$$('.coral-Form-fieldwrapper'); @@ -103,7 +109,7 @@ describe('Commerce Page Component Dialog', function () { expect(fields[1].$('input[name="./includesSubCategories"]')).toExist(); }); - it('Product page dialog extensions are displayed', () => { + it('shows dialog extensions on product page', () => { // Product page properties browser.url(`${page_properties}?item=${encodeURIComponent(`${product_page}`)}`); @@ -116,6 +122,7 @@ describe('Commerce Page Component Dialog', function () { expect(commercePanel).toBeDisplayed(); expect(commercePanel.$('.coral-Form-fieldset-legend=Commerce Settings')).toBeDisplayed(); + expect(commercePanel.$('.coral-Form-fieldset-legend=Associated Content')).not.toBeDisplayed(); let fields = commercePanel.$$('.coral-Form-fieldwrapper'); @@ -136,4 +143,33 @@ describe('Commerce Page Component Dialog', function () { expect(fields[2].$('coral-checkbox')).toExist(); expect(fields[2].$('input[name="./includesSubCategories"]')).toExist(); }); + + it('shows dialog extensions on content page', () => { + // Content page properties + browser.url(`${page_properties}?item=${encodeURIComponent(`${content_page}`)}`); + + // Open Commerce tab + let commerceTab = $('coral-tab-label=Commerce'); + expect(commerceTab).toBeClickable(); + commerceTab.click(); + + let commercePanel = $('coral-panelstack > coral-panel[selected]'); + expect(commercePanel).toBeDisplayed(); + + // Verify associated content fields + expect(commercePanel.$('.coral-Form-fieldset-legend=Associated Content')).toBeDisplayed(); + + let fieldset = commercePanel.$('.coral-Form-fieldset'); + expect(fieldset).toBeDisplayed(); + + const productField = fieldset.$('product-field'); + expect(productField).toBeDisplayed(); + expect(productField).toHaveAttribute('trackingElement', 'associated product'); + expect(productField).toHaveAttribute('trackingFeature', 'aem:cif:associatedcontentpage'); + + const categoryField = fieldset.$('category-field'); + expect(categoryField).toBeDisplayed(); + expect(categoryField).toHaveAttribute('trackingElement', 'associated category'); + expect(categoryField).toHaveAttribute('trackingFeature', 'aem:cif:associatedcontentpage'); + }); }); diff --git a/ui.tests/test-module/specs/venia/component-dialogs.js b/ui.tests/test-module/specs/venia/component-dialogs.js index c5641416..e9a66bdf 100644 --- a/ui.tests/test-module/specs/venia/component-dialogs.js +++ b/ui.tests/test-module/specs/venia/component-dialogs.js @@ -211,4 +211,43 @@ describe('Component Dialogs', function () { expect(fields[2].$('label')).toHaveText('ID'); expect(fields[2].$('input[name="./id"]')).toExist(); }); + + it('opens the commerce list dialog', () => { + addComponentToPage('List', 'Venia - Content'); + openComponentDialog('list', 'aem:sites:components:dialogs:cif-core-components:list:v1'); + + let fields = $$('.cq-dialog-content .coral-Form-fieldwrapper'); + + expect(fields[9].$('product-field')).toExist(); + expect(fields[9].$('product-field')).not.toBeDisplayed(); + expect(fields[10].$('category-field')).toExist(); + expect(fields[10].$('category-field')).not.toBeDisplayed(); + + // check fields + expect(fields[0].$('coral-select')).toHaveAttribute('name', './listFrom'); + let selectItems = fields[0].$$('coral-select coral-select-item'); + + expect(selectItems.length).toEqual(6); + expect(selectItems[4]).toHaveValue('productAssociation'); + expect(selectItems[5]).toHaveValue('categoryAssociation'); + + fields[0].$('coral-select').click(); + + let itemsSelector = + config.aem.type === 'classic' + ? 'coral-overlay.is-open coral-selectlist-item[value="productAssociation"]' + : 'coral-popover-content coral-selectlist-item[value="productAssociation"]'; + $(itemsSelector).click(); + expect(fields[9].$('product-field')).toBeDisplayed(); + expect(fields[10].$('category-field')).not.toBeDisplayed(); + + fields[0].$('coral-select').click(); + itemsSelector = + config.aem.type === 'classic' + ? 'coral-overlay.is-open coral-selectlist-item[value="categoryAssociation"]' + : 'coral-popover-content coral-selectlist-item[value="categoryAssociation"]'; + $(itemsSelector).click(); + expect(fields[9].$('product-field')).not.toBeDisplayed(); + expect(fields[10].$('category-field')).toBeDisplayed(); + }); }); diff --git a/ui.tests/test-module/specs/venia/productlist-dialog.js b/ui.tests/test-module/specs/venia/productlist-dialog.js index 27f0c842..13582d13 100644 --- a/ui.tests/test-module/specs/venia/productlist-dialog.js +++ b/ui.tests/test-module/specs/venia/productlist-dialog.js @@ -37,15 +37,18 @@ describe('Product List Component Dialog', function () { onboardingHdler.enable(); const pageName = `testing-${randomString()}`; - testing_page = `/content/venia/us/en/${pageName}`; + testing_page = `/content/venia/us/en/products/category-page/${pageName}`; browser.AEMCreatePage({ title: 'Testing Page', name: pageName, - parent: '/content/venia/us/en', - template: '/conf/venia/settings/wcm/templates/page-content' + parent: '/content/venia/us/en/products/category-page', + template: '/conf/venia/settings/wcm/templates/category-page' }); browser.pause(1000); - addComponentToPage(); + + browser.url(`${editor_page}${testing_page}.html`); + browser.AEMEditorLoaded(); + browser.EditorOpenSidePanel(); }); after(function () { @@ -58,27 +61,6 @@ describe('Product List Component Dialog', function () { } }); - const addComponentToPage = (name = 'Product List', group = 'Venia - Commerce') => { - browser.url(`${editor_page}${testing_page}.html`); - browser.AEMEditorLoaded(); - browser.EditorOpenSidePanel(); - - // Open the Components tab - $('coral-tab[title="Components"]').waitAndClick({ x: 1, y: 1 }); - - // Filter for Commerce components - $('#components-filter coral-select button').waitAndClick(); - browser.pause(200); - $(`coral-selectlist-item[value="${group}"]`).waitAndClick(); - expect($('#components-filter coral-select [handle=label]')).toHaveText(group); - - // Drag and drop component on the page - const carouselCmp = $(`div[data-title="${name}"]`); - expect(carouselCmp).toBeDisplayed(); - const dropTarget = $(`div[data-path="${testing_page}/jcr:content/root/container/container/*"]`); - carouselCmp.dragAndDrop(dropTarget, 1000); - }; - const openComponentDialog = ( node = 'productlist', trackingId = 'aem:sites:components:dialogs:cif-core-components:productlist:v2' @@ -104,7 +86,7 @@ describe('Product List Component Dialog', function () { let fields = dialog.$$('.cq-dialog-content .coral-Form-fieldwrapper'); // check fields - expect(fields.length).toEqual(6); + expect(fields.length).toEqual(7); expect(fields[0].$('label')).toHaveText('Manual Category Selection'); expect(fields[0].$('category-field')).toExist(); expect(fields[0].$('input[name="./category"]')).toExist(); @@ -120,6 +102,8 @@ describe('Product List Component Dialog', function () { expect(fields[4].$('input[name="./showImage"]')).toExist(); expect(fields[5].$('label')).toHaveText('ID'); expect(fields[5].$('input[name="./id"]')).toExist(); + expect(fields[6].$('label')).toHaveText('Experince Fragment placeholders'); + expect(fields[6].$('coral-multifield[data-granite-coral-multifield-name="./fragments"]')).toExist(); // close the dialog dialog.$('button[title="Cancel"]').click();