Skip to content

Commit 12a4267

Browse files
committed
Merge remote-tracking branch 'origin/MC-4905' into mtf-eol
2 parents 1c88235 + 5890b10 commit 12a4267

15 files changed

+602
-0
lines changed

app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminCategoryActionGroup.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,4 +263,16 @@
263263
<click selector="{{AdminCategoryMainActionsSection.SaveButton}}" stepKey="saveCategory"/>
264264
<seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" stepKey="assertSuccessMessage"/>
265265
</actionGroup>
266+
<actionGroup name="OpenCategoryFromCategoryTree">
267+
<arguments>
268+
<argument name="category" type="string"/>
269+
</arguments>
270+
<amOnPage url="{{AdminCategoryPage.url}}" stepKey="openAdminCategoryIndexPage"/>
271+
<waitForPageLoad stepKey="waitForCategoryPageToLoad"/>
272+
<click selector="{{AdminCategorySidebarTreeSection.expandAll}}" stepKey="clickOnExpandTree"/>
273+
<waitForPageLoad stepKey="waitForCategoryToLoad"/>
274+
<click selector="{{AdminCategorySidebarTreeSection.categoryInTree(category)}}" stepKey="selectCategory"/>
275+
<waitForPageLoad stepKey="waitForPageToLoad"/>
276+
<waitForElementVisible selector="{{AdminCategoryContentSection.categoryPageTitle}}" stepKey="waitForCategoryTitle"/>
277+
</actionGroup>
266278
</actionGroups>

app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductGridActionGroup.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,20 @@
272272
<conditionalClick selector="{{AdminProductGridFilterSection.clearFilters}}" dependentSelector="{{AdminProductGridFilterSection.clearFilters}}" visible="true" stepKey="clickClearFilters"/>
273273
<waitForPageLoad stepKey="waitForGridLoad"/>
274274
</actionGroup>
275+
<!--Filter and select the the product -->
276+
<actionGroup name="filterAndSelectProduct">
277+
<arguments>
278+
<argument name="productSku" type="string"/>
279+
</arguments>
280+
<amOnPage url="{{AdminProductIndexPage.url}}" stepKey="visitAdminProductPage"/>
281+
<waitForPageLoad stepKey="waitForProductIndexPageToLoad"/>
282+
<conditionalClick selector="{{AdminProductGridFilterSection.clearFilters}}" dependentSelector="{{AdminProductGridFilterSection.clearFilters}}" visible="true" stepKey="clickClearFilters"/>
283+
<click selector="{{AdminProductGridFilterSection.filters}}" stepKey="openProductFilters"/>
284+
<fillField selector="{{AdminProductGridFilterSection.skuFilter}}" userInput="{{productSku}}" stepKey="fillProductSkuFilter"/>
285+
<click selector="{{AdminProductGridFilterSection.applyFilters}}" stepKey="clickApplyFilters"/>
286+
<waitForElementNotVisible selector="{{AdminProductGridSection.loadingMask}}" stepKey="waitForFilteredGridLoad" time="30"/>
287+
<click stepKey="openSelectedProduct" selector="{{AdminProductGridSection.productRowBySku(productSku)}}"/>
288+
<waitForPageLoad stepKey="waitForProductToLoad"/>
289+
<waitForElementVisible selector="{{AdminHeaderSection.pageTitle}}" stepKey="waitForProductTitle"/>
290+
</actionGroup>
275291
</actionGroups>

app/code/Magento/Cms/Test/Mftf/ActionGroup/AssertCMSPageContentActionGroup.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,14 @@
2323
<executeJS function="(el = document.querySelector('[name=\'identifier\']')) &amp;&amp; el['se' + 'tAt' + 'tribute']('data-value', el.value.split('-')[0]);" stepKey="setAttribute" />
2424
<seeElement selector="{{CmsNewPagePageBasicFieldsSection.duplicatedURLKey(_duplicatedCMSPage.title)}}" stepKey="see"/>
2525
</actionGroup>
26+
<actionGroup name="AssertStoreFrontCMSPage">
27+
<arguments>
28+
<argument name="cmsTitle" type="string"/>
29+
<argument name="cmsContent" type="string"/>
30+
<argument name="cmsContentHeading" type="string"/>
31+
</arguments>
32+
<see selector="{{StorefrontCMSPageSection.title}}" userInput="{{cmsTitle}}" stepKey="seeTitle"/>
33+
<see selector="{{StorefrontCMSPageSection.mainTitle}}" userInput="{{cmsContentHeading}}" stepKey="seeContentHeading"/>
34+
<see selector="{{StorefrontCMSPageSection.mainContent}}" userInput="{{cmsContent}}" stepKey="seeContent"/>
35+
</actionGroup>
2636
</actionGroups>

app/code/Magento/Cms/Test/Mftf/Section/StorefrontCMSPageSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@
1414
<element name="mainTitle" type="text" selector="#maincontent .page-title"/>
1515
<element name="mainContent" type="text" selector="#maincontent"/>
1616
<element name="footerTop" type="text" selector="footer.page-footer"/>
17+
<element name="title" type="text" selector="//div[@class='breadcrumbs']//ul/li[@class='item cms_page']"/>
1718
</section>
1819
</sections>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminAddUrlRewrite">
12+
<arguments>
13+
<argument name="category" type="string"/>
14+
<argument name="customUrlRewriteValue" type="string"/>
15+
<argument name="storeValue" type="string"/>
16+
<argument name="requestPath" type="string"/>
17+
<argument name="redirectTypeValue" type="string"/>
18+
<argument name="description" type="string"/>
19+
</arguments>
20+
<amOnPage url="{{AdminUrlRewriteEditPage.url}}" stepKey="openUrlRewriteEditPage"/>
21+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad"/>
22+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewrite}}" stepKey="clickOnCustonUrlRewrite"/>
23+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewriteValue('customUrlRewriteValue')}}" stepKey="selectForCategory"/>
24+
<waitForPageLoad stepKey="waitForCategoryEditSectionToLoad"/>
25+
<click selector="{{AdminUrlRewriteEditSection.categoryInTree($$category.name$$)}}" stepKey="selectCategoryInTree"/>
26+
<waitForPageLoad stepKey="waitForPageToLoad"/>
27+
<click selector="{{AdminUrlRewriteEditSection.store}}" stepKey="clickOnStore"/>
28+
<click selector="{{AdminUrlRewriteEditSection.storeValue('storeValue')}}" stepKey="clickOnStoreValue"/>
29+
<fillField selector="{{AdminUrlRewriteEditSection.requestPath}}" userInput="{{requestPath}}" stepKey="fillRequestPath"/>
30+
<click selector="{{AdminUrlRewriteEditSection.redirectType}}" stepKey="selectRedirectType"/>
31+
<click selector="{{AdminUrlRewriteEditSection.redirectTypeValue('redirectTypeValue')}}" stepKey="clickOnRedirectTypeValue"/>
32+
<fillField selector="{{AdminUrlRewriteEditSection.description}}" userInput="{{description}}" stepKey="fillDescription"/>
33+
<click selector="{{AdminUrlRewriteEditSection.saveButton}}" stepKey="clickOnSaveButton"/>
34+
<seeElement selector="{{AdminUrlRewriteIndexSection.successMessage}}" stepKey="seeSuccessSaveMessage"/>
35+
</actionGroup>
36+
<actionGroup name="AdminAddUrlRewriteForProduct">
37+
<arguments>
38+
<argument name="storeValue" type="string"/>
39+
<argument name="requestPath" type="string"/>
40+
<argument name="redirectTypeValue" type="string"/>
41+
<argument name="description" type="string"/>
42+
</arguments>
43+
<waitForElementVisible selector="{{AdminUrlRewriteProductSection.skipCategoryButton}}" stepKey="waitForSkipCategoryButton"/>
44+
<click selector="{{AdminUrlRewriteProductSection.skipCategoryButton}}" stepKey="clickOnSkipCategoryButton"/>
45+
<waitForPageLoad stepKey="waitForProductPageToLoad"/>
46+
<click selector="{{AdminUrlRewriteEditSection.store}}" stepKey="clickOnStore"/>
47+
<click selector="{{AdminUrlRewriteEditSection.storeValue('storeValue')}}" stepKey="clickOnStoreValue"/>
48+
<fillField selector="{{AdminUrlRewriteEditSection.requestPath}}" userInput="{{requestPath}}" stepKey="fillRequestPath"/>
49+
<click selector="{{AdminUrlRewriteEditSection.redirectType}}" stepKey="selectRedirectType"/>
50+
<click selector="{{AdminUrlRewriteEditSection.redirectTypeValue('redirectTypeValue')}}" stepKey="clickOnRedirectTypeValue"/>
51+
<fillField selector="{{AdminUrlRewriteEditSection.description}}" userInput="{{description}}" stepKey="fillDescription"/>
52+
<click selector="{{AdminUrlRewriteEditSection.saveButton}}" stepKey="clickOnSaveButton"/>
53+
<seeElement selector="{{AdminUrlRewriteIndexSection.successMessage}}" stepKey="seeSuccessSaveMessage"/>
54+
</actionGroup>
55+
<actionGroup name="AdminAddCustomUrlRewrite">
56+
<arguments>
57+
<argument name="customUrlRewriteValue" type="string"/>
58+
<argument name="storeValue" type="string"/>
59+
<argument name="requestPath" type="string"/>
60+
<argument name="targetPath" type="string"/>
61+
<argument name="redirectTypeValue" type="string"/>
62+
<argument name="description" type="string"/>
63+
</arguments>
64+
<amOnPage url="{{AdminUrlRewriteEditPage.url}}" stepKey="openUrlRewriteEditPage"/>
65+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad" after="openUrlRewriteEditPage"/>
66+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewrite}}" stepKey="clickOnCustonUrlRewrite"/>
67+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewriteValue('customUrlRewriteValue')}}" stepKey="selectCustom"/>
68+
<click selector="{{AdminUrlRewriteEditSection.store}}" stepKey="clickOnStore"/>
69+
<click selector="{{AdminUrlRewriteEditSection.storeValue('storeValue')}}" stepKey="clickOnStoreValue"/>
70+
<fillField selector="{{AdminUrlRewriteEditSection.requestPath}}" userInput="{{requestPath}}" stepKey="fillRequestPath"/>
71+
<fillField selector="{{AdminUrlRewriteEditSection.targetPath}}" userInput="{{targetPath}}" stepKey="fillTargetPath"/>
72+
<click selector="{{AdminUrlRewriteEditSection.redirectType}}" stepKey="selectRedirectType"/>
73+
<click selector="{{AdminUrlRewriteEditSection.redirectTypeValue('redirectTypeValue')}}" stepKey="selectRedirectTypeValue"/>
74+
<fillField selector="{{AdminUrlRewriteEditSection.description}}" userInput="{{description}}" stepKey="fillDescription"/>
75+
<click selector="{{AdminUrlRewriteEditSection.saveButton}}" stepKey="clickOnSaveButton"/>
76+
<seeElement selector="{{AdminUrlRewriteIndexSection.successMessage}}" stepKey="seeSuccessSaveMessage"/>
77+
</actionGroup>
78+
</actionGroups>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminSearchByRequestPath">
12+
<arguments>
13+
<argument name="redirectPath" type="string"/>
14+
<argument name="redirectType" type="string"/>
15+
<argument name="targetPath" type="string"/>
16+
</arguments>
17+
<amOnPage url="{{AdminUrlRewriteIndexPage.url}}" stepKey="openUrlRewriteEditPage"/>
18+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad"/>
19+
<click selector="{{AdminUrlRewriteIndexSection.resetButton}}" stepKey="clickOnResetButton"/>
20+
<waitForPageLoad stepKey="waitForPageToLoad"/>
21+
<fillField selector="{{AdminUrlRewriteIndexSection.requestPathFilter}}" userInput="{{redirectPath}}" stepKey="fillRedirectPathFilter"/>
22+
<click selector="{{AdminUrlRewriteIndexSection.searchButton}}" stepKey="clickOnSearchButton"/>
23+
<waitForPageLoad stepKey="waitForPageToLoad1"/>
24+
<see selector="{{AdminUrlRewriteIndexSection.requestPathColumn('1')}}" userInput="{{redirectPath}}" stepKey="seeTheRedirectPathForOldUrl"/>
25+
<see selector="{{AdminUrlRewriteIndexSection.targetPathColumn('1')}}" userInput="{{targetPath}}" stepKey="seeTheTargetPath" />
26+
<see selector="{{AdminUrlRewriteIndexSection.redirectTypeColumn('1')}}" userInput="{{redirectType}}" stepKey="seeTheRedirectTypeForOldUrl" />
27+
</actionGroup>
28+
<actionGroup name="AdminSearchProductBySku">
29+
<arguments>
30+
<argument name="productSku" type="string"/>
31+
</arguments>
32+
<amOnPage url="{{AdminUrlRewriteProductPage.url}}" stepKey="openUrlRewriteProductPage"/>
33+
<waitForPageLoad stepKey="waitForUrlRewriteProductPageToLoad"/>
34+
<click selector="{{AdminUrlRewriteProductSection.resetFilter}}" stepKey="clickOnResetFilter"/>
35+
<waitForPageLoad stepKey="waitForPageToLoad"/>
36+
<fillField selector="{{AdminUrlRewriteProductSection.skuFilter}}" userInput="{{productSku}}" stepKey="fillProductSkuFilter"/>
37+
<click selector="{{AdminUrlRewriteProductSection.searchFilter}}" stepKey="clickOnSearchFilter"/>
38+
<waitForPageLoad stepKey="waitForProductToLoad"/>
39+
<click selector="{{AdminUrlRewriteProductSection.productRow}}" stepKey="clickOnFirstRow"/>
40+
<waitForPageLoad stepKey="waitForProductCategoryPageToLoad"/>
41+
</actionGroup>
42+
<actionGroup name="AdminSearchDeletedUrlRewrite">
43+
<arguments>
44+
<argument name="requestPath" type="string"/>
45+
</arguments>
46+
<amOnPage url="{{AdminUrlRewriteIndexPage.url}}" stepKey="openUrlRewriteEditPage"/>
47+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad"/>
48+
<click selector="{{AdminUrlRewriteIndexSection.resetButton}}" stepKey="clickOnResetButton"/>
49+
<waitForPageLoad stepKey="waitForPageToLoad"/>
50+
<fillField selector="{{AdminUrlRewriteIndexSection.requestPathFilter}}" userInput="{{requestPath}}" stepKey="fillRedirectPathFilter"/>
51+
<click selector="{{AdminUrlRewriteIndexSection.searchButton}}" stepKey="clickOnSearchButton"/>
52+
<waitForPageLoad stepKey="waitForPageToLoad1"/>
53+
<see selector="{{AdminUrlRewriteIndexSection.emptyRecords}}" userInput="We couldn't find any records." stepKey="seeEmptyRecordMessage"/>
54+
</actionGroup>
55+
<actionGroup name="AdminDeleteUrlRewrite">
56+
<arguments>
57+
<argument name="requestPath" type="string"/>
58+
</arguments>
59+
<amOnPage url="{{AdminUrlRewriteIndexPage.url}}" stepKey="openUrlRewriteEditPage"/>
60+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad"/>
61+
<click selector="{{AdminUrlRewriteIndexSection.resetButton}}" stepKey="clickOnResetButton"/>
62+
<waitForPageLoad stepKey="waitForPageToLoad"/>
63+
<fillField selector="{{AdminUrlRewriteIndexSection.requestPathFilter}}" userInput="{{requestPath}}" stepKey="fillRedirectPathFilter"/>
64+
<click selector="{{AdminUrlRewriteIndexSection.searchButton}}" stepKey="clickOnSearchButton"/>
65+
<waitForPageLoad stepKey="waitForPageToLoad1"/>
66+
<click selector="{{AdminUrlRewriteIndexSection.editButton('1')}}" stepKey="clickOnEditButton"/>
67+
<waitForPageLoad stepKey="waitForEditPageToLoad"/>
68+
<click selector="{{AdminUrlRewriteEditSection.deleteButton}}" stepKey="clickOnDeleteButton"/>
69+
<waitForPageLoad stepKey="waitForPageToLoad2"/>
70+
<waitForElementVisible selector="{{AdminUrlRewriteEditSection.okButton}}" stepKey="waitForOkButtonToVisible"/>
71+
<click selector="{{AdminUrlRewriteEditSection.okButton}}" stepKey="clickOnOkButton"/>
72+
<waitForPageLoad stepKey="waitForPageToLoad3"/>
73+
<see selector="{{AdminUrlRewriteIndexSection.successMessage}}" userInput="You deleted the URL rewrite." stepKey="seeSuccessMessage"/>
74+
</actionGroup>
75+
</actionGroups>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AssertStorefrontUrlRewriteRedirect">
12+
<arguments>
13+
<argument name="category" type="string"/>
14+
<argument name="newRequestPath" type="string"/>
15+
</arguments>
16+
<amOnPage url="{{newRequestPath}}" stepKey="openCategoryInStorefront"/>
17+
<waitForPageLoad stepKey="waitForCategoryPageToLoad"/>
18+
<seeElement selector="{{StorefrontHeaderSection.NavigationCategoryByName(category)}}" stepKey="seeCategoryOnStoreNavigationBar"/>
19+
<seeElement selector="{{StorefrontCategoryMainSection.CategoryTitle(category)}}" stepKey="seeCategoryInTitle"/>
20+
</actionGroup>
21+
<actionGroup name="AssertStorefrontProductRedirect">
22+
<arguments>
23+
<argument name="productName" type="string"/>
24+
<argument name="productSku" type="string"/>
25+
<argument name="productRequestPath" type="string"/>
26+
</arguments>
27+
<amOnPage url="{{productRequestPath}}" stepKey="openCategoryInStorefront"/>
28+
<waitForPageLoad stepKey="waitForCategoryPageToLoad"/>
29+
<see selector="{{StorefrontProductInfoMainSection.productName}}" userInput="{{productName}}" stepKey="seeProductNameInStoreFrontPage"/>
30+
<see selector="{{StorefrontProductInfoMainSection.productSku}}" userInput="{{productSku}}" stepKey="seeProductSkuInStoreFrontPage"/>
31+
</actionGroup>
32+
</actionGroups>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
11+
<page name="AdminUrlRewriteEditPage" url="admin/url_rewrite/edit/id" area="admin" module="Magento_UrlRewrite">
12+
<section name="AdminUrlRewriteEditSection"/>
13+
</page>
14+
</pages>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
11+
<page name="AdminUrlRewriteProductPage" url="admin/url_rewrite/edit/product" area="admin" module="Magento_UrlRewrite">
12+
<section name="AdminUrlRewriteProductSection"/>
13+
</page>
14+
</pages>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
11+
<section name="AdminUrlRewriteEditSection">
12+
<element name="createCustomUrlRewrite" type="select" selector="//select[@id='entity-type-selector']" />
13+
<element name="createCustomUrlRewriteValue" type="text" selector="//select[@id='entity-type-selector']/option[contains(.,'{{var}}')]" parameterized="true"/>
14+
<element name="store" type="select" selector="//select[@id='store_id']"/>
15+
<element name="storeValue" type="select" selector="//select[@id='store_id']//option[contains(., '{{var}}')]" parameterized="true" />
16+
<element name="requestPath" type="input" selector="//input[@id='request_path']"/>
17+
<element name="targetPath" type="input" selector="//input[@id='target_path']"/>
18+
<element name="redirectType" type="select" selector="//select[@id='redirect_type']"/>
19+
<element name="redirectTypeValue" type="select" selector="//select[@id='redirect_type']//option[contains(., '{{Var}}')]" parameterized="true"/>
20+
<element name="description" type="input" selector="#description"/>
21+
<element name="categoryInTree" type="text" selector="//li[contains(@class,'active-category jstree-open')]/a[contains(., '{{categoryName}}')]" parameterized="true"/>
22+
<element name="saveButton" type="button" selector="#save" timeout="30"/>
23+
<element name="deleteButton" type="button" selector="#delete" timeout="30"/>
24+
<element name="okButton" type="button" selector="//button[@class='action-primary action-accept']" timeout="30"/>
25+
</section>
26+
</sections>

0 commit comments

Comments
 (0)