{"id":136835,"date":"2018-08-09T11:11:42","date_gmt":"2018-08-09T11:11:42","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=136835"},"modified":"2021-08-10T05:09:04","modified_gmt":"2021-08-10T05:09:04","slug":"magento-functional-testing-framework-mftf-custom-signup","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/","title":{"rendered":"MFTF (Magento 2 Functional Testing Framework) for Custom Signup Form"},"content":{"rendered":"\r\n<h1>Introduction:Magento 2 functional Testing<\/h1>\r\n<p>Magento 2 functional Testing Framework is the best practice for\u00a0 QA and developers to test their module functionalities.<\/p>\r\n<p>Here, I&#8217;ll explain how you can register in your Magento store if there are some extra fields on it.<\/p>\r\n<p>I have tried it with Webkul&#8217;s best Magento add-on <a href=\"https:\/\/store.webkul.com\/magento2-multi-vendor-marketplace.html\">Multi-Vendor Marketplace<\/a>. Which creates some custom attributes in the Magento default customer registration form.<\/p>\r\n\r\n\r\n\r\n<p>Magento already provides Magento 2 functional Testing test cases for some basic functionalities like new customer creation, customer login, product creation, etc.<\/p>\r\n<p>Here, I have written MFTF test cases for the Magento registration page which have 2 new fields one is text type and the other one is radio.<\/p>\r\n<h3>Create New Customer Account Page<\/h3>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\"><img decoding=\"async\" width=\"548\" height=\"645\" class=\"wp-image-136850\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\" alt=\"Mp Customer Signup\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png 548w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2-212x249.png 212w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2-255x300.png 255w\" sizes=\"(max-width: 548px) 100vw, 548px\" loading=\"lazy\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p>For testing please set up all the required things as explained <a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/getting-started.html\">here<\/a>. Magento has already provided a very well-explained User Guide for MFTF.<\/p>\r\n<p>So, to learn MFTF please read <a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/introduction.html\">Magento Functional Testing Framework Guide<\/a>.<\/p>\r\n\r\n\r\n\r\n<p><strong>Note <\/strong>Please check the blog <a href=\"https:\/\/webkul.com\/blog\/prerequisite-custom-module-magento-functional-testing-framework\/\">Prerequisite for Custom Modules with Magento Functional Testing Framework<\/a> to learn the basic configurations you need to do before writing your custom module tests.<\/p>\r\n\r\n\r\n\r\n<p>Here, I have written tests in multiple parts. It will be easy to write a test in this sequence.<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/page.html\">Page <\/a>\u00a0The Magento 2 functional Testing uses a modified concept of [PageObjects], which models the testing areas of your page as objects within the code.<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/section.html\">Section: <\/a>Section is a standard file for defining UI elements on a page used in a test.<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/devdocs.magento.com\/mftf\/2.2\/data.html\">Data<\/a>&#8211; Data entities are required for the user inputs for your HTML fields.<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/test\/action-groups.html\">Action Group:<\/a>It is used when you need to perform the same sequence of actions multiple times<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/test.html\">Test:<\/a>\u00a0It is a <a href=\"https:\/\/codeception.com\/docs\/07-AdvancedUsage\">Codeception test container<\/a> that contains multiple individual tests.<\/p>\r\n\r\n\r\n\r\n<p>I have created my test MFTF folder at the given path <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace<\/strong><\/p>\r\n\r\n\r\n\r\n<p>Inside Magento 2 functional Testing folder there are 4 folders <strong>ActionGroup, Data, Section, <\/strong>and<strong> Test. <\/strong><\/p>\r\n<p>I am using an existing Magento page so, I have not created a Page folder and files related to that.<\/p>\r\n<p>if you have any new pages to test then you must create a page folder as well.<\/p>\r\n\r\n\r\n\r\n<p>Let&#8217;s start with the code<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Page<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>First I need to create a page.\u00a0 I am using the Magento default registration page.<\/p>\r\n<p>I do not need to create it again as Magento already provides it <strong>StorefrontCustomerCreatePage.xml<\/strong> in <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/Page<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p><em>Let&#8217;s see the code<\/em><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n  * Copyright \u00a9 Magento, Inc. All rights reserved.\r\n  * See COPYING.txt for license details.\r\n  *\/\r\n--&gt;\r\n\r\n&lt;pages xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/Page\/etc\/PageObject.xsd\"&gt;\r\n    &lt;page name=\"StorefrontCustomerCreatePage\" url=\"\/customer\/account\/create\/\" area=\"storefront\" module=\"Magento_Customer\"&gt;\r\n    &lt;section name=\"StorefrontCustomerCreateFormSection\"\/&gt;\r\n    &lt;\/page&gt;\r\n&lt;\/pages&gt;<\/pre>\r\n\r\n\r\n\r\n<p>The corresponding web page is generated by the Magento Customer module and is called by the baseUrl + backendName + customer\/account\/create\/ URL.<\/p>\r\n\r\n\r\n\r\n<p>The Storefront Customer Create Page declares only one [section]:<\/p>\r\n\r\n\r\n\r\n<p><strong>StorefrontCustomerCreateFormSection<\/strong> located in the<br \/><strong>Customer\/Section\/StorefrontCustomerCreateFormSection.xml<\/strong> file<\/p>\r\n\r\n\r\n\r\n<p><strong>&lt;section&gt;<\/strong> contains the sequence of UI elements. Will explain the &lt;section&gt; in the next step.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Section<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>A section is a reusable part of a page. So, I have used the same section name and the same file name for my module section.<\/p>\r\n\r\n\r\n\r\n<p>You&#8217;ll get the Magento default customer &lt;section&gt; file inside the <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/Section\/StorefrontCustomerCreateFormSection.xml<\/strong><\/p>\r\n\r\n\r\n\r\n<h3>Let&#8217;s see the code<\/h3>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n  * Copyright \u00a9 Magento, Inc. All rights reserved.\r\n  * See COPYING.txt for license details.\r\n  *\/\r\n--&gt;\r\n\r\n&lt;sections xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/Page\/etc\/SectionObject.xsd\"&gt;\r\n    &lt;section name=\"StorefrontCustomerCreateFormSection\"&gt;\r\n        &lt;element name=\"firstnameField\" type=\"input\" selector=\"#firstname\"\/&gt;\r\n        &lt;element name=\"lastnameField\" type=\"input\" selector=\"#lastname\"\/&gt;\r\n        &lt;element name=\"emailField\" type=\"input\" selector=\"#email_address\"\/&gt;\r\n        &lt;element name=\"passwordField\" type=\"input\" selector=\"#password\"\/&gt;\r\n        &lt;element name=\"confirmPasswordField\" type=\"input\" selector=\"#password-confirmation\"\/&gt;\r\n        &lt;element name=\"createAccountButton\" type=\"button\" selector=\"button.action.submit.primary\" timeout=\"30\"\/&gt;\r\n    &lt;\/section&gt;\r\n&lt;\/sections&gt;<\/pre>\r\n\r\n\r\n\r\n<p>A &lt;section&gt; name is a Unique section name identifier.<br \/>This &lt;section&gt; contains the sequence of UI elements in a section of the page <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/Page\/StorefrontCustomerCreatePage.xml<\/strong>.<br \/>&lt;element&gt; is a UI element used in an action. Each element consists of a name, type, and selector.<br \/>&lt;element&gt; type is your HTML field type.<br \/>&lt;element&gt; selector is a CSS selector of your HTML field.<\/p>\r\n\r\n\r\n\r\n<p>All the Signup fields selectors are here but my custom module&#8217;s fields are missing. So, I have created a file with the same name StorefrontCustomerCreateFormSection.xml inside.<\/p>\r\n<p><strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/Section\/StorefrontCustomerCreateFormSection.xml<\/strong><\/p>\r\n\r\n\r\n\r\n<h4><em>Let&#8217;s see the code<\/em><\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n * Webkul Software.\r\n * @category  Webkul\r\n * @package   Webkul_MarketplaceMFTF\r\n * @author    Webkul\r\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\r\n * @license   https:\/\/store.webkul.com\/license.html\r\n *\/\r\n--&gt;\r\n\r\n&lt;sections xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/Page\/etc\/SectionObject.xsd\"&gt;\r\n    &lt;section name=\"StorefrontCustomerCreateFormSection\"&gt;\r\n        &lt;element name=\"becomeSellerRadioButton\" type=\"radio\" selector=\"#wantpartner\" timeout=\"30\"\/&gt;\r\n        &lt;element name=\"shopUrlField\" type=\"input\" selector=\"#profileurl\"\/&gt;\r\n    &lt;\/section&gt;\r\n&lt;\/sections&gt;<\/pre>\r\n\r\n\r\n\r\n<p>Here you can see that I have created 2 new elements required for my custom fields with the name &#8220;<strong>becomeSellerRadioButton<\/strong>&#8221; and &#8220;<strong>shopUrlField<\/strong>&#8220;.&gt;<\/p>\r\n\r\n\r\n\r\n<p>I have used Magento default customer user data to create a customer. You can create your own customer data or can do changes in the existing Magento customer data in (<strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/Data\/CustomerData.xml<\/strong>).<\/p>\r\n<p>if you are using Magento provided Magento 2 functional Testing code then you don&#8217;t need to write the same code again. You can write only additional data in your code.<\/p>\r\n\r\n\r\n\r\n<p>Here are the Magento MFTF code files available:<br \/><strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer<\/strong><\/p>\r\n\r\n\r\n\r\n<p>I have used some of the customer information from:<br \/><strong>\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/Data\/CustomerData.xml<\/strong><\/p>\r\n\r\n\r\n\r\n<h4>Let&#8217;s see the code<\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n  * Copyright \u00a9 Magento, Inc. All rights reserved.\r\n  * See COPYING.txt for license details.\r\n  *\/\r\n--&gt;\r\n\r\n&lt;entities xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/DataGenerator\/etc\/dataProfileSchema.xsd\"&gt;\r\n    &lt;entity name=\"CustomerEntityOne\" type=\"customer\"&gt;\r\n        &lt;data key=\"group_id\"&gt;0&lt;\/data&gt;\r\n        &lt;data key=\"default_billing\"&gt;defaultBillingValue&lt;\/data&gt;\r\n        &lt;data key=\"default_shipping\"&gt;defaultShippingValue&lt;\/data&gt;\r\n        &lt;data key=\"confirmation\"&gt;confirmationData&lt;\/data&gt;\r\n        &lt;data key=\"created_at\"&gt;12:00&lt;\/data&gt;\r\n        &lt;data key=\"updated_at\"&gt;12:00&lt;\/data&gt;\r\n        &lt;data key=\"created_in\"&gt;createdInData&lt;\/data&gt;\r\n        &lt;data key=\"dob\"&gt;01-01-1970&lt;\/data&gt;\r\n        &lt;data key=\"email\" unique=\"prefix\"&gt;test@webkul.com&lt;\/data&gt;\r\n        &lt;data key=\"firstname\"&gt;John&lt;\/data&gt;\r\n        &lt;data key=\"lastname\"&gt;Doe&lt;\/data&gt;\r\n        &lt;data key=\"middlename\"&gt;S&lt;\/data&gt;\r\n        &lt;data key=\"password\"&gt;Admin123&lt;\/data&gt;\r\n        &lt;data key=\"prefix\"&gt;Mr&lt;\/data&gt;\r\n        &lt;data key=\"suffix\"&gt;Sr&lt;\/data&gt;\r\n        &lt;data key=\"gender\"&gt;0&lt;\/data&gt;\r\n        &lt;data key=\"store_id\"&gt;0&lt;\/data&gt;\r\n        &lt;data key=\"taxvat\"&gt;taxValue&lt;\/data&gt;\r\n        &lt;data key=\"website_id\"&gt;0&lt;\/data&gt;\r\n        &lt;requiredEntity type=\"address\"&gt;CustomerAddressSimple&lt;\/requiredEntity&gt;\r\n        &lt;data key=\"disable_auto_group_change\"&gt;0&lt;\/data&gt;\r\n        &lt;!--requiredEntity type=\"extension_attribute\"&gt;ExtensionAttributeSimple&lt;\/requiredEntity--&gt;\r\n    &lt;\/entity&gt;\r\n    &lt;entity name=\"Simple_US_Customer\" type=\"customer\"&gt;\r\n        &lt;data key=\"group_id\"&gt;0&lt;\/data&gt;\r\n        &lt;data key=\"default_billing\"&gt;true&lt;\/data&gt;\r\n        &lt;data key=\"default_shipping\"&gt;true&lt;\/data&gt;\r\n        &lt;data key=\"email\" unique=\"prefix\"&gt;John.Doe@example.com&lt;\/data&gt;\r\n        &lt;data key=\"firstname\"&gt;John&lt;\/data&gt;\r\n        &lt;data key=\"lastname\"&gt;Doe&lt;\/data&gt;\r\n        &lt;data key=\"password\"&gt;pwdTest123!&lt;\/data&gt;\r\n        &lt;data key=\"store_id\"&gt;0&lt;\/data&gt;\r\n        &lt;data key=\"website_id\"&gt;0&lt;\/data&gt;\r\n        &lt;requiredEntity type=\"address\"&gt;US_Address_TX&lt;\/requiredEntity&gt;\r\n    &lt;\/entity&gt;\r\n    &lt;entity name=\"Simple_US_Customer_For_Update\" type=\"customer\"&gt;\r\n        &lt;var key=\"id\" entityKey=\"id\" entityType=\"customer\"\/&gt;\r\n        &lt;data key=\"firstname\"&gt;Jane&lt;\/data&gt;\r\n    &lt;\/entity&gt;\r\n&lt;\/entities&gt;<\/pre>\r\n\r\n\r\n\r\n<p>Magento has provided all the default customer information in the &#8220;<strong>CustomerData.xml<\/strong>&#8221; file.<\/p>\r\n<p>Now here I have used only some of them like first name, last name, email, and password.<\/p>\r\n<h3>You can change these data according to your need.<\/h3>\r\n\r\n\r\n\r\n<p><strong>&lt;data key=&#8221;email&#8221; unique=&#8221;prefix&#8221;&gt;test@webkul.com&lt;\/data&gt;<\/strong><br \/>email defines the customer email address <em>test@webkul.com<\/em> with a unique prefix. <strong>Example:<\/strong> 598123365test@webkul.com.<\/p>\r\n\r\n\r\n\r\n<p>I have created a separate data file with the name <strong>&#8220;SellerData.xml&#8221;<\/strong> in<\/p>\r\n<p><strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/Data<\/strong> to put the remaining data for my custom fields<\/p>\r\n\r\n\r\n\r\n<h4><em>Let&#8217;s see the code-<\/em><\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n * Webkul Software.\r\n * @category  Webkul\r\n * @package   Webkul_MarketplaceMFTF\r\n * @author    Webkul\r\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\r\n * @license   https:\/\/store.webkul.com\/license.html\r\n *\/\r\n--&gt;\r\n\r\n&lt;entities xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/DataGenerator\/etc\/dataProfileSchema.xsd\"&gt;\r\n    &lt;entity name=\"SellerEntityOne\" type=\"seller\"&gt;\r\n        &lt;data key=\"shopurl\" unique=\"prefix\"&gt;garment&lt;\/data&gt;\r\n    &lt;\/entity&gt;\r\n&lt;\/entities&gt;<\/pre>\r\n\r\n\r\n\r\n<p>In the customized signup form, I have 2 new input types radio and text. In input type &#8220;radio&#8221;\u00a0<\/p>\r\n<p>I need to fill the new text field &#8220;profileurl&#8221; in the signup form. So, I need to create separate data for it and I have created &lt;data&gt; key &#8220;shopurl&#8221;.<\/p>\r\n<p>&#8220;SellerEntityOne&#8221; is the name of the element &lt;entity&gt;. &lt;entity&gt; &#8220;type&#8221; is used later to find specific persistence.<br \/>&lt;data&gt; key &#8220;shopurl&#8221; defines the seller&#8217;s shopurl code garment with a unique prefix. <strong>Example<\/strong>: 598123365garment.<\/p>\r\n\r\n\r\n\r\n<h3><strong>Action Group<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>I have created an &lt;actionGroup&gt; file <strong>&#8220;StorefrontCreateSellerActionGroup.xml&#8221;<\/strong> inside <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/ActionGroup<\/strong><\/p>\r\n<p>As I need to create sellers frequently for testing. I can reuse this group of action.<\/p>\r\n\r\n\r\n\r\n<h4><em>Let&#8217;s see the code<\/em><\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n * Webkul Software.\r\n * @category  Webkul\r\n * @package   Webkul_MarketplaceMFTF\r\n * @author    Webkul\r\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\r\n * @license   https:\/\/store.webkul.com\/license.html\r\n *\/\r\n--&gt;\r\n\r\n&lt;actionGroups xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/Test\/etc\/actionGroupSchema.xsd\"&gt;\r\n    &lt;actionGroup name=\"StorefrontCreateSeller\"&gt;\r\n        &lt;arguments&gt;\r\n            &lt;argument name=\"customer\" defaultValue=\"customer\"\/&gt;\r\n            &lt;argument name=\"seller\" defaultValue=\"seller\"\/&gt;\r\n        &lt;\/arguments&gt;\r\n        &lt;amOnPage stepKey=\"signupPage\" url=\"customer\/account\/create\/\"\/&gt;\r\n        &lt;waitForPageLoad stepKey=\"pageLoadBeforeLogin\"\/&gt;\r\n        &lt;fillField stepKey=\"fillFirstName\" userInput=\"{{customer.firstname}}\" selector=\"{{StorefrontCustomerCreateFormSection.firstnameField}}\"\/&gt;\r\n        &lt;fillField stepKey=\"fillLastName\" userInput=\"{{customer.lastname}}\" selector=\"{{StorefrontCustomerCreateFormSection.lastnameField}}\"\/&gt;\r\n        &lt;fillField stepKey=\"fillEmail\" userInput=\"{{customer.email}}\" selector=\"{{StorefrontCustomerCreateFormSection.emailField}}\"\/&gt;\r\n        &lt;click stepKey=\"clickBecomSellerRadioButton\" selector=\"{{StorefrontCustomerCreateFormSection.becomeSellerRadioButton}}\"\/&gt;\r\n        &lt;waitForAjaxLoad time=\"3\" stepKey=\"waitForAjaxResponse\" after=\"clickBecomSellerRadioButton\"\/&gt;\r\n        &lt;fillField stepKey=\"shopUrl\" userInput=\"{{seller.shopurl}}\" selector=\"{{StorefrontCustomerCreateFormSection.shopUrlField}}\"\/&gt;\r\n        &lt;fillField stepKey=\"fillPassword\" userInput=\"{{customer.password}}\" selector=\"{{StorefrontCustomerCreateFormSection.passwordField}}\"\/&gt;\r\n        &lt;fillField stepKey=\"fillConfirmPassword\" userInput=\"{{customer.password}}\" selector=\"{{StorefrontCustomerCreateFormSection.confirmPasswordField}}\"\/&gt;\r\n        &lt;click stepKey=\"clickCreateAccountButton\" selector=\"{{StorefrontCustomerCreateFormSection.createAccountButton}}\"\/&gt;\r\n        &lt;wait time=\"3\" stepKey=\"waitForPageLoad\" after=\"clickCreateAccountButton\"\/&gt;\r\n        &lt;waitForPageLoad stepKey=\"pageLoadAfterLogin\"\/&gt;\r\n        &lt;see stepKey=\"seeWelcomeMessage\" userInput=\"Thank you for registering with Main Website Store.\"\/&gt;\r\n    &lt;\/actionGroup&gt;\r\n&lt;\/actionGroups&gt;<\/pre>\r\n\r\n\r\n\r\n<p><strong>name<\/strong> &#8220;StorefrontCreateSeller&#8221; is the identifier of the action group.<br \/>The <strong>&lt;arguments&gt;<\/strong> element is a wrapper for an array of &lt;argument&gt; elements.<br \/><strong>&lt;argument&gt; name<\/strong> is identifier of an argument in the scope of the corresponding action group.<br \/><strong>&lt;argument&gt; defaultValue<\/strong> provides a default data value. Here, I have used 2 defaultValue-<br \/><strong>&#8220;customer&#8221;<\/strong> from <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Customer\/DataCustomerData.xml<\/strong>. Its defined as type=<strong>&#8220;customer&#8221;<\/strong><br \/><strong>&lt;entity name=&#8221;CustomerEntityOne&#8221; type=&#8221;customer&#8221;&gt;<\/strong><br \/><strong>&#8220;seller&#8221;<\/strong> from <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/SellerData.xml<\/strong>. Its defined as <strong>type=&#8221;seller&#8221;<\/strong><br \/><strong>&lt;entity name=&#8221;SellerEntityOne&#8221; type=&#8221;seller&#8221;&gt;<\/strong><br \/>The rest of the elements are action elements that are predefined.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Test<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>I have created test file <strong>&#8220;StorefrontSellerCreateTest.xml&#8221;<\/strong> inside <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/Test<\/strong><\/p>\r\n\r\n\r\n\r\n<h4><em>Let&#8217;s see the code<\/em><\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted brush:xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!--\r\n \/**\r\n * Webkul Software.\r\n * @category  Webkul\r\n * @package   Webkul_MarketplaceMFTF\r\n * @author    Webkul\r\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\r\n * @license   https:\/\/store.webkul.com\/license.html\r\n *\/\r\n--&gt;\r\n\r\n&lt;tests xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n        xsi:noNamespaceSchemaLocation=\"..\/..\/..\/..\/..\/..\/vendor\/magento\/magento2-functional-testing-framework\/src\/Magento\/FunctionalTestingFramework\/Test\/etc\/testSchema.xsd\"&gt;\r\n    &lt;test name=\"StorefrontSellerCreateTest\"&gt;\r\n        &lt;annotations&gt;\r\n            &lt;features value=\"Seller Creation\"\/&gt;\r\n            &lt;stories value=\"Create a Seller via the Storefront\"\/&gt;\r\n            &lt;title value=\"You should be able to create a seller via the storefront\"\/&gt;\r\n            &lt;description value=\"You should be able to create a seller via the storefront.\"\/&gt;\r\n            &lt;severity value=\"CRITICAL\"\/&gt;\r\n            &lt;testCaseId value=\"WEBKULMP-00001\"\/&gt;\r\n            &lt;group value=\"sellercreate\"\/&gt;\r\n        &lt;\/annotations&gt;\r\n        &lt;actionGroup stepKey=\"FrontCreateSeller\" ref=\"StorefrontCreateSeller\"&gt;\r\n        &lt;argument name=\"customer\" value=\"CustomerEntityOne\"\/&gt;\r\n        &lt;argument name=\"seller\" value=\"SellerEntityOne\"\/&gt;\r\n        &lt;\/actionGroup&gt;\r\n    &lt;\/test&gt;\r\n&lt;\/tests&gt;<\/pre>\r\n\r\n\r\n\r\n<p>The <strong>&lt;test&gt;<\/strong> <strong>name<\/strong> is a unique identifier of your test.<\/p>\r\n\r\n\r\n\r\n<p><strong>&lt;annotations&gt;<\/strong> are essentially comments in the code. For more details please <a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/test\/annotations.html\">click here<\/a>.<br \/>Here, I have used my <strong>&lt;actionGroup&gt;<\/strong> and reference to <strong>&#8220;StorefrontCreateSeller&#8221;<\/strong> name from<\/p>\r\n<p><strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest\/Marketplace\/ActionGroup\/StorefrontCreateSellerActionGroup.xml<\/strong><\/p>\r\n\r\n\r\n\r\n<p><strong>&lt;group value=&#8221;sellercreate&#8221;\/&gt;<\/strong> is used to run the particular test for this action group only.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Configuration<\/h3>\r\n\r\n\r\n\r\n<p>Now, you need to configure .env file under <strong>MagentoRoot\/dev\/tests\/acceptance. <\/strong>For the configuration, and for getting started please refer <a href=\"https:\/\/devdocs.magento.com\/mftf\/docs\/getting-started.html\">MFTF getting started<\/a> guideline.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Commands Required to Run<\/strong><\/h3>\r\n\r\n\r\n\r\n<p>After completing all the codes. You need to run the Selenium server in the terminal<\/p>\r\n\r\n\r\n\r\n<p><strong>java -jar &lt;path_to_selenium_directory&gt;\/selenium-server-standalone-&lt;version&gt;.jar<\/strong><\/p>\r\n\r\n\r\n\r\n<p>Now go inside your <strong>MagentoRoot\/dev\/tests\/acceptance <\/strong>and generate your tests using the command<\/p>\r\n\r\n\r\n\r\n<p><strong>vendor\/bin\/robo generate:tests<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand.png\"><img decoding=\"async\" width=\"967\" height=\"209\" class=\"wp-image-136855\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand.png\" alt=\"Generate Tests\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand.png 967w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand-250x54.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand-300x65.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMpruncommand-768x166.png 768w\" sizes=\"(max-width: 967px) 100vw, 967px\" loading=\"lazy\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p>Now, you can see a folder created with the name <strong>_generated <\/strong>inside <strong>MagentoRoot\/dev\/tests\/acceptance\/tests\/functional\/Magento\/FunctionalTest<\/strong><\/p>\r\n\r\n\r\n\r\n<p>and run the command on the terminal to run your generated test<\/p>\r\n\r\n\r\n\r\n<p><strong>vendor\/bin\/robo group GroupValue<\/strong><\/p>\r\n\r\n\r\n\r\n<p>in my case, I ran the command <strong>vendor\/bin\/robo group sellecreate<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller.png\"><img decoding=\"async\" width=\"1305\" height=\"717\" class=\"wp-image-137569\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller.png\" alt=\"Termial Output\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller.png 1305w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller-250x137.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller-300x165.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller-768x422.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MpMftf_CreateSeller-1200x659.png 1200w\" sizes=\"(max-width: 1305px) 100vw, 1305px\" loading=\"lazy\" \/><\/a><\/figure>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<p>To check your test case report with allure please run the command <strong>vendor\/bin\/robo allure2:open<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/Mftf_allure2.png\" alt=\"Allure Dasboard\" loading=\"lazy\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/Mftf_allure1.png\" alt=\"allure report\" loading=\"lazy\" \/><\/figure>\r\n\r\n\r\n\r\n<p>That&#8217;s all about the MFTF for the custom signup form.<\/p>\r\n<p>Get in touch<\/p>\r\n<p>If you need any other information, then please drop an email at <a href=\"mailto:support@webkul.com\">support@webkul.com<\/a>. Also, visit our useful\u00a0<a href=\"https:\/\/store.webkul.com\/Magento-2.html\" data-wpel-link=\"internal\">Magento 2 extensions<\/a><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Introduction:Magento 2 functional Testing Magento 2 functional Testing Framework is the best practice for\u00a0 QA and developers to test their module functionalities. Here, I&#8217;ll explain how you can register in your Magento store if there are some extra fields on it. I have tried it with Webkul&#8217;s best Magento add-on Multi-Vendor Marketplace. Which creates some <a href=\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":66,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[302],"tags":[7394,35,4910,3506,7253,7252,2056,7273,7272,2070,7060],"class_list":["post-136835","post","type-post","status-publish","format-standard","hentry","category-magento2","tag-acceptance","tag-framework","tag-functional","tag-functional-testing","tag-m-2","tag-m2","tag-magento","tag-magento-2-testing","tag-magento-functional-testing-framework","tag-magento2","tag-mftf"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Magento 2 functional Testing Magento 2 functional Testing Framework<\/title>\n<meta name=\"description\" content=\"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Magento 2 functional Testing Magento 2 functional Testing Framework\" \/>\n<meta property=\"og:description\" content=\"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-09T11:11:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-10T05:09:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\" \/>\n<meta name=\"author\" content=\"Shruti Baranwal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shruti Baranwal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\"},\"author\":{\"name\":\"Shruti Baranwal\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/d90db6dde51254f8d7bda2539b81386e\"},\"headline\":\"MFTF (Magento 2 Functional Testing Framework) for Custom Signup Form\",\"datePublished\":\"2018-08-09T11:11:42+00:00\",\"dateModified\":\"2021-08-10T05:09:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\"},\"wordCount\":1404,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\",\"keywords\":[\"acceptance\",\"framework\",\"functional\",\"functional testing\",\"m 2\",\"m2\",\"magento\",\"magento 2 testing\",\"magento functional testing framework\",\"Magento2\",\"mftf\"],\"articleSection\":[\"Magento2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\",\"url\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\",\"name\":\"Magento 2 functional Testing Magento 2 functional Testing Framework\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\",\"datePublished\":\"2018-08-09T11:11:42+00:00\",\"dateModified\":\"2021-08-10T05:09:04+00:00\",\"description\":\"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png\",\"width\":\"548\",\"height\":\"645\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MFTF (Magento 2 Functional Testing Framework) for Custom Signup Form\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/d90db6dde51254f8d7bda2539b81386e\",\"name\":\"Shruti Baranwal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2ecd6b094113b3e2f346229e04e90fcb6e242f28b3a1dbcb2f44fd9eefb93dbc?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2ecd6b094113b3e2f346229e04e90fcb6e242f28b3a1dbcb2f44fd9eefb93dbc?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g\",\"caption\":\"Shruti Baranwal\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/shruti-baranwal890\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Magento 2 functional Testing Magento 2 functional Testing Framework","description":"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/","og_locale":"en_US","og_type":"article","og_title":"Magento 2 functional Testing Magento 2 functional Testing Framework","og_description":"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.","og_url":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2018-08-09T11:11:42+00:00","article_modified_time":"2021-08-10T05:09:04+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png","type":"","width":"","height":""}],"author":"Shruti Baranwal","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Shruti Baranwal","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/"},"author":{"name":"Shruti Baranwal","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/d90db6dde51254f8d7bda2539b81386e"},"headline":"MFTF (Magento 2 Functional Testing Framework) for Custom Signup Form","datePublished":"2018-08-09T11:11:42+00:00","dateModified":"2021-08-10T05:09:04+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/"},"wordCount":1404,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png","keywords":["acceptance","framework","functional","functional testing","m 2","m2","magento","magento 2 testing","magento functional testing framework","Magento2","mftf"],"articleSection":["Magento2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/","url":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/","name":"Magento 2 functional Testing Magento 2 functional Testing Framework","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png","datePublished":"2018-08-09T11:11:42+00:00","dateModified":"2021-08-10T05:09:04+00:00","description":"Magento 2 functional Testing Framework is a best practice for both QA and developer to test their module functionalities.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2018\/08\/MftfMp1-2.png","width":"548","height":"645"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/magento-functional-testing-framework-mftf-custom-signup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MFTF (Magento 2 Functional Testing Framework) for Custom Signup Form"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/d90db6dde51254f8d7bda2539b81386e","name":"Shruti Baranwal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2ecd6b094113b3e2f346229e04e90fcb6e242f28b3a1dbcb2f44fd9eefb93dbc?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2ecd6b094113b3e2f346229e04e90fcb6e242f28b3a1dbcb2f44fd9eefb93dbc?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g","caption":"Shruti Baranwal"},"url":"https:\/\/webkul.com\/blog\/author\/shruti-baranwal890\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/136835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=136835"}],"version-history":[{"count":45,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/136835\/revisions"}],"predecessor-version":[{"id":300671,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/136835\/revisions\/300671"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=136835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=136835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=136835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}