From 76a4c589d564d0a08d01a2d42c60abcce24fb885 Mon Sep 17 00:00:00 2001 From: Donald Booth Date: Mon, 18 Mar 2019 11:09:55 -0500 Subject: [PATCH 1/2] Add files. --- docs/merge_points/introduction.md | 21 +++++++ docs/merge_points/merge-action-groups.md | 72 ++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 docs/merge_points/introduction.md create mode 100644 docs/merge_points/merge-action-groups.md diff --git a/docs/merge_points/introduction.md b/docs/merge_points/introduction.md new file mode 100644 index 000000000..b108ed908 --- /dev/null +++ b/docs/merge_points/introduction.md @@ -0,0 +1,21 @@ +# Merge Points for testing extensions in MFTF + +The Magento Functional Testing Framework (MFTF) allows great flexibility when writing XML tests for extensions. +All parts of tests can be used, reused, and merged to best suit your needs and cut down on needless duplication. + +Extension developers can utilitze these merge points to leverage existing tests and modify just the parts needed to test their extension. For instance, if your extension adds a form field to a Catalog admin page, you can modify the existing Catalog tests and add actions, data, etc as needed to test the custom field. +This topic shows how to merge and reuse test elements when testing extensions. + +Follow the links below for an example of how to merge: + +- Action Groups +- Data +- Pages +- Sections +- Tests + +and how to extend: + +- Action Groups +- Data +- Tests \ No newline at end of file diff --git a/docs/merge_points/merge-action-groups.md b/docs/merge_points/merge-action-groups.md new file mode 100644 index 000000000..385ba2bab --- /dev/null +++ b/docs/merge_points/merge-action-groups.md @@ -0,0 +1,72 @@ +# Merging Action Groups + +An action group is a set of individual actions working together as a group. +These action groups can be shared between tests and they also be modified to your needs. + +## Starting Test + +```xml + + + + + + + + + + + + + + + + + + + + + + + +``` + +## File to merge + +```xml + + + + +``` + +## Resultant file + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file From f901e4fc5eebb02451977e667ff5a25b61fece4f Mon Sep 17 00:00:00 2001 From: Donald Booth Date: Tue, 19 Mar 2019 14:40:11 -0500 Subject: [PATCH 2/2] Adding merge point docs. --- docs/merge_points/extend-action-groups.md | 98 +++++++++++++++ docs/merge_points/extend-data.md | 70 +++++++++++ docs/merge_points/extend-tests.md | 145 ++++++++++++++++++++++ docs/merge_points/introduction.md | 36 ++++-- docs/merge_points/merge-action-groups.md | 10 +- docs/merge_points/merge-data.md | 56 +++++++++ docs/merge_points/merge-pages.md | 50 ++++++++ docs/merge_points/merge-sections.md | 43 +++++++ docs/merge_points/merge-tests.md | 102 +++++++++++++++ 9 files changed, 597 insertions(+), 13 deletions(-) create mode 100644 docs/merge_points/extend-action-groups.md create mode 100644 docs/merge_points/extend-data.md create mode 100644 docs/merge_points/extend-tests.md create mode 100644 docs/merge_points/merge-data.md create mode 100644 docs/merge_points/merge-pages.md create mode 100644 docs/merge_points/merge-sections.md create mode 100644 docs/merge_points/merge-tests.md diff --git a/docs/merge_points/extend-action-groups.md b/docs/merge_points/extend-action-groups.md new file mode 100644 index 000000000..1f307e796 --- /dev/null +++ b/docs/merge_points/extend-action-groups.md @@ -0,0 +1,98 @@ +# Extend action groups + +Extending an action group doesn't affect the existing action group. + +In this example we add a `` command to check the checkbox that our extension added with a new action group for the simple product creation form. + +## Starting action group + +```xml + + + + + + + + + + + + + + + + + + + + + + + +``` + +## File to merge + +```xml + + + + +``` + +## Resultant action group + +Note that there are now two action groups below. + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/merge_points/extend-data.md b/docs/merge_points/extend-data.md new file mode 100644 index 000000000..344d11935 --- /dev/null +++ b/docs/merge_points/extend-data.md @@ -0,0 +1,70 @@ +# Extend data entities + +Extending an action group doesn't affect the existing action group. + +In this example we add a `` command to check the checkbox that our extension added with a new action group for the simple product creation form. + +## Starting entity + +```xml + + SimpleProduct + simple + 4 + SimpleProduct + 123.00 + 4 + 1 + 1000 + simpleproduct + 1 + EavStockItem + CustomAttributeCategoryIds + +``` + +## File to merge + +```xml + + + 1001 + dataHere + +``` + +## Resultant entity + +Note that there are now two data entities below. + +```xml + + SimpleProduct + simple + 4 + SimpleProduct + 123.00 + 4 + 1 + 1000 + simpleproduct + 1 + EavStockItem + CustomAttributeCategoryIds + + + SimpleProduct + simple + 4 + SimpleProduct + 123.00 + 4 + 1 + 1001 + simpleproduct + 1 + EavStockItem + CustomAttributeCategoryIds + dataHere + +``` \ No newline at end of file diff --git a/docs/merge_points/extend-tests.md b/docs/merge_points/extend-tests.md new file mode 100644 index 000000000..7398e273d --- /dev/null +++ b/docs/merge_points/extend-tests.md @@ -0,0 +1,145 @@ +# Extend tests + +Data objects can be merged to cover the needs of your extension. + +In this example, we add an action group to a new copy of the original test for our extension. + +## Starting test + +```xml + + + + + + <description value="Admin should be able to create a Simple Product"/> + <severity value="CRITICAL"/> + <testCaseId value="MAGETWO-23414"/> + <group value="product"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createPreReqCategory"/> + </before> + <after> + <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/> + <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/> + </after> + + <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/> + <actionGroup ref="FillAdminSimpleProductForm" stepKey="fillProductFieldsInAdmin"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="simpleProduct" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontProductPage" stepKey="assertProductInStorefront2"> + <argument name="product" value="_defaultProduct"/> + </actionGroup> +</test> +``` + +## File to merge + +```xml +<test name="AdminCreateSimpleProductExtensionTest" extends="AdminCreateSimpleProductTest"> + <!-- Since this is its own test you need the annotations block --> + <annotations> + <features value="Catalog"/> + <stories value="Create a Simple Product via Admin"/> <!-- you should leave this the same since it is part of the same group --> + <title value="Admin should be able to create a Simple Product with my extension"/> + <description value="Admin should be able to create a Simple Product with my extension via the product grid"/> + <severity value="CRITICAL"/> + <testCaseId value="Extension/Github Issue Number"/> + <group value="product"/> + </annotations> + <!-- This will be added after the step "fillProductFieldsInAdmin" on line 20 in the above test. --> + <actionGroup ref="AddMyExtensionData" stepKey="extensionField" after="fillProductFieldsInAdmin"> + <argument name="extensionData" value="_myData"/> + </actionGroup> + + <!-- This will be added after the step "assertProductInStorefront2" on line 28 in the above test. --> + <actionGroup ref="AssertMyExtensionDataExists" stepKey="assertExtensionInformation" after="assertProductInStorefront2"> + <argument name="extensionData" value="_myData"/> + </actionGroup> +</test> +``` + +## Resultant test + +Note that there are now two tests below. + +```xml +<test name="AdminCreateSimpleProductTest"> + <annotations> + <features value="Catalog"/> + <stories value="Create a Simple Product via Admin"/> + <title value="Admin should be able to create a Simple Product"/> + <description value="Admin should be able to create a Simple Product"/> + <severity value="CRITICAL"/> + <testCaseId value="MAGETWO-23414"/> + <group value="product"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createPreReqCategory"/> + </before> + <after> + <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/> + <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/> + </after> + + <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/> + <actionGroup ref="FillAdminSimpleProductForm" stepKey="fillProductFieldsInAdmin"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="simpleProduct" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontProductPage" stepKey="assertProductInStorefront2"> + <argument name="product" value="_defaultProduct"/> + </actionGroup> +</test> +<test name="AdminCreateSimpleProductExtensionTest"> + <annotations> + <features value="Catalog"/> + <stories value="Create a Simple Product via Admin"/> + <title value="Admin should be able to create a Simple Product with my extension"/> + <description value="Admin should be able to create a Simple Product with my extension via the product grid"/> + <severity value="CRITICAL"/> + <testCaseId value="Extension/Github Issue Number"/> + <group value="product"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createPreReqCategory"/> + </before> + <after> + <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/> + <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/> + </after> + + <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/> + <actionGroup ref="FillAdminSimpleProductForm" stepKey="fillProductFieldsInAdmin"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="simpleProduct" value="_defaultProduct"/> + </actionGroup> + + <actionGroup ref="AddMyExtensionData" stepKey="extensionField"> + <argument name="extensionData" value="_myData"/> + </actionGroup> + + <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontProductPage" stepKey="assertProductInStorefront2"> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + + <actionGroup ref="AssertMyExtensionDataExists" stepKey="assertExtensionInformation"> + <argument name="extensionData" value="_myData"/> + </actionGroup> +</test> +``` \ No newline at end of file diff --git a/docs/merge_points/introduction.md b/docs/merge_points/introduction.md index b108ed908..891f6e3fe 100644 --- a/docs/merge_points/introduction.md +++ b/docs/merge_points/introduction.md @@ -6,16 +6,34 @@ All parts of tests can be used, reused, and merged to best suit your needs and c Extension developers can utilitze these merge points to leverage existing tests and modify just the parts needed to test their extension. For instance, if your extension adds a form field to a Catalog admin page, you can modify the existing Catalog tests and add actions, data, etc as needed to test the custom field. This topic shows how to merge and reuse test elements when testing extensions. +## Merging + Follow the links below for an example of how to merge: -- Action Groups -- Data -- Pages -- Sections -- Tests +- [Merge Action Groups][] +- [Merge Data][] +- [Merge Pages][] +- [Merge Sections][] +- [Merge Tests][] + +## Extending + +Only Test, Action Group, and Data objects in the MFTF Framework can be extended. +Extending can be very useful for extension developers since it will not affect existing tests. + +Consult [when to use Extends][] to use extends when deciding whether to merge or extend. -and how to extend: +- [Extend Action Groups][] +- [Extend Data][] +- [Extend Tests][] -- Action Groups -- Data -- Tests \ No newline at end of file +<!-- Link definitions --> +[when to use Extends]: https://devdocs.magento.com/mftf/docs/best-practices.html#when-to-use-extends +[Merge Action Groups]: https://devdocs.magento.com/mftf/docs/merge_points/merge-action-groups.html +[Merge Data]: https://devdocs.magento.com/mftf/docs/merge_points/merge-data.html +[Merge Pages]: https://devdocs.magento.com/mftf/docs/merge_points/merge-pages.html +[Merge Sections]: https://devdocs.magento.com/mftf/docs/merge_points/merge-sections.html +[Merge Tests]: https://devdocs.magento.com/mftf/docs/merge_points/merge-tests.html +[Extend Action Groups]: https://devdocs.magento.com/mftf/docs/merge_points/extend-action-groups.html +[Extend Data]: https://devdocs.magento.com/mftf/docs/merge_points/extend-data.html +[Extend Tests]: https://devdocs.magento.com/mftf/docs/merge_points/extend-tests.html \ No newline at end of file diff --git a/docs/merge_points/merge-action-groups.md b/docs/merge_points/merge-action-groups.md index 385ba2bab..0485e7287 100644 --- a/docs/merge_points/merge-action-groups.md +++ b/docs/merge_points/merge-action-groups.md @@ -1,9 +1,11 @@ -# Merging Action Groups +# Merge action groups An action group is a set of individual actions working together as a group. These action groups can be shared between tests and they also be modified to your needs. -## Starting Test +In this example we add a `<click>` command to check the checkbox that our extension adds to the simple product creation form. + +## Starting test ```xml <actionGroup name="FillAdminSimpleProductForm"> @@ -40,7 +42,7 @@ These action groups can be shared between tests and they also be modified to you </actionGroup> ``` -## Resultant file +## Resultant test ```xml <actionGroup name="FillAdminSimpleProductForm"> @@ -57,7 +59,7 @@ These action groups can be shared between tests and they also be modified to you <fillField userInput="{{simpleProduct.quantity}}" selector="{{AdminProductFormSection.productQuantity}}" stepKey="fillQuantity"/> <!-- Merged line here --> <click selector="{{MyExtensionSection.myCheckbox}}" stepKey="clickMyCheckbox"/> - + <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[{{category.name}}]" stepKey="searchAndSelectCategory"/> <click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSection"/> <fillField userInput="{{simpleProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="fillUrlKey"/> diff --git a/docs/merge_points/merge-data.md b/docs/merge_points/merge-data.md new file mode 100644 index 000000000..b3342cc46 --- /dev/null +++ b/docs/merge_points/merge-data.md @@ -0,0 +1,56 @@ +# Merge data + +Data objects can be merged to cover the needs of your extension. + +In this example we update the `quantity` to `1001` and add a new piece of data relevant to our extension. This will affect all other tests that use this data. + +## Starting entity + +```xml +<entity name="SimpleProduct" type="product"> + <data key="sku" unique="suffix">SimpleProduct</data> + <data key="type_id">simple</data> + <data key="attribute_set_id">4</data> + <data key="name" unique="suffix">SimpleProduct</data> + <data key="price">123.00</data> + <data key="visibility">4</data> + <data key="status">1</data> + <data key="quantity">1000</data> + <data key="urlKey" unique="suffix">simpleproduct</data> + <data key="weight">1</data> + <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> + <requiredEntity type="custom_attribute_array">CustomAttributeCategoryIds</requiredEntity> +</entity> +``` + +## File to merge + +```xml +<entity name="SimpleProduct" type="product"> + <!-- myExtensionData will simply be added to the product and quantity will be changed to 1001. --> + <data key="quantity">1001</data> + <data key="myExtensionData">dataHere</data> +</entity> +``` + +## Resultant entity + +```xml +<entity name="SimpleProduct" type="product"> + <data key="sku" unique="suffix">SimpleProduct</data> + <data key="type_id">simple</data> + <data key="attribute_set_id">4</data> + <data key="name" unique="suffix">SimpleProduct</data> + <data key="price">123.00</data> + <data key="visibility">4</data> + <data key="status">1</data> + <!-- Quantity updated --> + <data key="quantity">1001</data> + <data key="urlKey" unique="suffix">simpleproduct</data> + <data key="weight">1</data> + <requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity> + <requiredEntity type="custom_attribute_array">CustomAttributeCategoryIds</requiredEntity> + <!-- Data key merged --> + <data key="myExtensionData">dataHere</data> +</entity> +``` \ No newline at end of file diff --git a/docs/merge_points/merge-pages.md b/docs/merge_points/merge-pages.md new file mode 100644 index 000000000..c7a3e8fa8 --- /dev/null +++ b/docs/merge_points/merge-pages.md @@ -0,0 +1,50 @@ +# Merge pages + +Sections can be merged into pages to cover your extension. + +In this example we add a section that may be relevant to our extension to the list of sections underneath one page. + +## Starting page + +```xml +<page name="AdminCategoryPage" url="catalog/category/" area="admin" module="Magento_Catalog"> + <section name="AdminCategorySidebarActionSection"/> + <section name="AdminCategoryMainActionsSection"/> + <section name="AdminCategorySidebarTreeSection"/> + <section name="AdminCategoryBasicFieldSection"/> + <section name="AdminCategorySEOSection"/> + <section name="AdminCategoryProductsSection"/> + <section name="AdminCategoryProductsGridSection"/> + <section name="AdminCategoryModalSection"/> + <section name="AdminCategoryMessagesSection"/> + <section name="AdminCategoryContentSection"/> +</page> +``` + +## File to merge + +```xml +<page name="AdminCategoryPage" url="catalog/category/" area="admin" module="Magento_Catalog"> + <!-- myExtensionSection will simply be added to the page --> + <section name="MyExtensionSection"/> +</page> +``` + +## Resultant page + +```xml +<page name="AdminCategoryPage"> + <section name="AdminCategorySidebarActionSection"/> + <section name="AdminCategoryMainActionsSection"/> + <section name="AdminCategorySidebarTreeSection"/> + <section name="AdminCategoryBasicFieldSection"/> + <section name="AdminCategorySEOSection"/> + <section name="AdminCategoryProductsSection"/> + <section name="AdminCategoryProductsGridSection"/> + <section name="AdminCategoryModalSection"/> + <section name="AdminCategoryMessagesSection"/> + <section name="AdminCategoryContentSection"/> + <!-- New section merged --> + <section name="MyExtensionSection"/> +</page> +``` \ No newline at end of file diff --git a/docs/merge_points/merge-sections.md b/docs/merge_points/merge-sections.md new file mode 100644 index 000000000..e9f5acb55 --- /dev/null +++ b/docs/merge_points/merge-sections.md @@ -0,0 +1,43 @@ +# Merge sections + +Sections can be merged together to cover your extension. + +In this example we add another selector to the section on the products page section. + +## Starting section + +```xml +<section name="ProductsPageSection"> + <element name="addProductButton" type="button" selector="//button[@id='add_new_product-button']"/> + <element name="checkboxForProduct" type="button" selector="//*[contains(text(),'{{args}}')]/parent::td/preceding-sibling::td/label[@class='data-grid-checkbox-cell-inner']" parameterized="true"/> + <element name="actions" type="button" selector="//div[@class='col-xs-2']/div[@class='action-select-wrap']/button[@class='action-select']"/> + <element name="delete" type="button" selector="//*[contains(@class,'admin__data-grid-header-row row row-gutter')]//*[text()='Delete']"/> + <element name="ok" type="button" selector="//button[@data-role='action']//span[text()='OK']"/> + <element name="deletedSuccessMessage" type="button" selector="//*[@class='message message-success success']"/> +</section> +``` + +## File to merge + +```xml +<section name="ProductsPageSection"> + <!-- myExtensionElement will simply be added to the page --> + <element name="myExtensionElement" type="button" selector="input.myExtension"/> +</section> +``` + +## Resultant section + +```xml +<section name="ProductsPageSection"> + <element name="addProductButton" type="button" selector="//button[@id='add_new_product-button']"/> + <element name="checkboxForProduct" type="button" selector="//*[contains(text(),'{{args}}')]/parent::td/preceding-sibling::td/label[@class='data-grid-checkbox-cell-inner']" parameterized="true"/> + <element name="actions" type="button" selector="//div[@class='col-xs-2']/div[@class='action-select-wrap']/button[@class='action-select']"/> + <element name="delete" type="button" selector="//*[contains(@class,'admin__data-grid-header-row row row-gutter')]//*[text()='Delete']"/> + <element name="ok" type="button" selector="//button[@data-role='action']//span[text()='OK']"/> + <element name="deletedSuccessMessage" type="button" selector="//*[@class='message message-success success']"/> + <!-- New element merged --> + <element name="myExtensionElement" type="button" selector="input.myExtension"/> +</section> +</page> +``` \ No newline at end of file diff --git a/docs/merge_points/merge-tests.md b/docs/merge_points/merge-tests.md new file mode 100644 index 000000000..3958410e9 --- /dev/null +++ b/docs/merge_points/merge-tests.md @@ -0,0 +1,102 @@ +# Merge tests + +Tests can be merged to create a new test that covers new extension capabilities. + +In this example we add an action group that modifies the original test to interact with our extension sending in data we created. + +## Starting test + +```xml +<test name="AdminCreateSimpleProductTest"> + <annotations> + <features value="Catalog"/> + <stories value="Create a Simple Product via Admin"/> + <title value="Admin should be able to create a Simple Product"/> + <description value="Admin should be able to create a Simple Product"/> + <severity value="CRITICAL"/> + <testCaseId value="MAGETWO-23414"/> + <group value="product"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createPreReqCategory"/> + </before> + <after> + <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/> + <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/> + </after> + + <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/> + <actionGroup ref="FillAdminSimpleProductForm" stepKey="fillProductFieldsInAdmin"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="simpleProduct" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontProductPage" stepKey="assertProductInStorefront2"> + <argument name="product" value="_defaultProduct"/> + </actionGroup> +</test> +``` + +## File to merge + +```xml +<test name="AdminCreateSimpleProductTest"> + <!-- This will be added after the step "fillProductFieldsInAdmin" in the above test. --> + <actionGroup ref="AddMyExtensionData" stepKey="extensionField" after="fillProductFieldsInAdmin"> + <argument name="extensionData" value="_myData"/> + </actionGroup> + + <!-- This will be added after the step "assertProductInStorefront2" in the above test. --> + <actionGroup ref="AssertMyExtensionDataExists" stepKey="assertExtensionInformation" after="assertProductInStorefront2"> + <argument name="extensionData" value="_myData"/> + </actionGroup> +</test> +``` + +## Resultant test + +```xml +<test name="AdminCreateSimpleProductTest"> + <annotations> + <features value="Catalog"/> + <stories value="Create a Simple Product via Admin"/> + <title value="Admin should be able to create a Simple Product"/> + <description value="Admin should be able to create a Simple Product"/> + <severity value="CRITICAL"/> + <testCaseId value="MAGETWO-23414"/> + <group value="product"/> + </annotations> + <before> + <createData entity="_defaultCategory" stepKey="createPreReqCategory"/> + </before> + <after> + <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/> + <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/> + </after> + + <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin1"/> + <actionGroup ref="FillAdminSimpleProductForm" stepKey="fillProductFieldsInAdmin"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="simpleProduct" value="_defaultProduct"/> + </actionGroup> + <!-- First merged action group --> + <actionGroup ref="AddMyExtensionData" stepKey="extensionField"> + <argument name="extensionData" value="_myData"/> + </actionGroup> + + <actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1"> + <argument name="category" value="$$createPreReqCategory$$"/> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <actionGroup ref="AssertProductInStorefrontProductPage" stepKey="assertProductInStorefront2"> + <argument name="product" value="_defaultProduct"/> + </actionGroup> + <!-- Second merged action group --> + <actionGroup ref="AssertMyExtensionDataExists" stepKey="assertExtensionInformation"> + <argument name="extensionData" value="_myData"/> + </actionGroup> +</test> +``` \ No newline at end of file