command.php is now configured with an idleTimeout of 60 seconds, which will allow tests to continue execution if a CLI command is hanging indefinitely.x in the generated Allure report.suite <before> now correctly causes subsequent tests to marked as failed instead of skipped.waitForPwaElementVisible and waitForPwaElementNotVisible actions.vendor.MAGENTO_BASE_URL responded with anything but a 200.<after> would run twice with Codeception 2.4.xextends would not correctly override parent test stepsmftf run:failed now correctly regenerates tests that are in suites that were parallelized (suite => suite_0, suite_1)mftf run:failed commands, which reruns all failed tests from last run configuration.
vendor.ComponentRegistrar to aggregate paths.element with no type would cause PHP warnings during test runs.ModuleResolver will now only scan under MAGENTO_BP/app/code/... and MAGENTO_BP/vendor/... for /Test/Mftf directories.Test.xml files that did not end with *Test.xml would not be scanned for duplicates and other XML validation.test and actionGroup elements that have the same name in the same file.actionGroup arguments that use xml.data (old syntax is still supported)
xml.data{{xml.data}}Modularity
ModuleResolver now utilizes each Magento module's registration.php to map MFTF test material directories.
The waitForPageLoad action now correctly uses the given timeout attribute for all of its checks.
Firefox compatibility issues in javascript error logging were fixed.
Fixed an issue where arguments containing - would not properly resolve parameterized selectors.
Fixed an issue where actions using parameterArray would not resolve $persisted.data$ references.
Fixed an issue where composer installations of Magento would fail to parse MFTF materials under a path vendor/magento/module-<module>/
-r or --remove flag has been introduced to bin/mftf commands to clear out the contents of the _generated folder before generation. This flag has been added to the following commands:
generate:testsgenerate:suiterun:testrun:group$ syntax (old syntax is still supported):
$persistedData.field$stepKey was found in the current scope.suite persisted data in tests.test, before/after, suite).skipReadiness has been added to all test actions, allowing the individual test action to completely bypass the ReadinessExtension if it is enabled.title, the testCaseId annotation is now automatically prepended to the title annotation when tests are generated.magentoCLI command now correctly removes index.php if it is present in the MAGENTO_BASE_URL.extend a test that does not exist now skips the generation of the test.suite would generate invalid PHP if the before or after contained only createData actions.actionGroup would incorrectly append the actionGroup's stepKey to the selector.PageReadinessExtension from default enabled extensions due to Jenkins instability.parent::_after() function and remaps to runAfter(), necessary to solve compatibility issues in Codeception 2.3.x.etc/config/functional.suite.dist.yml changed: window-size to 1280x1024, and removed --ingonito flag.executeJs function no longer escapes persisted variables referenced via $$persisted.key$$.test's before/after blocks if the parent was skipped.mftf build:project now copies over the command.php file into the parent Magento installation, if detected.mftf.log file.--debug flag provides file-specific errors for all XML-related errors.story and title combination, to prevent collisions in Allure Report generation.features annotation now ignores user input and defaults to the module the test lives under (for clear Allure organization).<group value="skip"/> annotation has been replaced with a <skip> annotation, allowing for nested IssueId elements.stories, title, description, severity.
bin/mftf commands.generate:tests now warns the user if any declared <page> has an inconsistent module (Backend vs Magento_Backend)--force flag now completely ignores checking of the Magento Installation, allowing generation of tests without a Magento Instance to be running.extends="ExistingMaterial" attribute. This allows for creation of simple copies of any entity, actionGroup, or test, with small modifications.test and actionGroup deltas can now be provided in bulk via a before/after attribute on the test or actionGroup element. Deltas provided this way do not need individual before/after attributes, and are inserted sequentially..credentials file, with declaration and usage syntax similar to .env file references.<generateDate> action has been added to allow users to create and use dates according to the given date and format.
Customizability features.bin/mftf commands have been introduced with parity to existing robo commands.
robo commands are still supported, but will be deprecated in a future major release.mftf upgrade:tests command has been introduced, which runs all test upgrade scripts against the provided path.
mftf generate:urn-catalog command has been introduced to create a URN catalog in PHPStorm to support the above upgrade.{{page}} vs {{page.url}}).<element>s in a <section> with the same name)
--config parallel has been enhanced to take average step length into account._after hook of tests now executes if a non test-related failure causes the test to error.•.executeJS actions.createData actions inside actionGroups could not properly reference the given createDataKey.suites could not generate if they included an actionGroup with two arguments.magentoCLI action now correctly executes the given command if the MAGENTO_BASE_URL contains index.php after the domain (ex https://magento.instance/index.php)stepKey attribute can no longer be an empty.regex and command attributes in test actions.<after> hook.<after> hook twice if a failure triggered in the <after> hook.<group value="skip"> will now appear in generated Allure reports.
robo group command no longer omits the skip group (skipped tests are picked up but not fully executed).dev/tests/acceptance.
Getting Started for details on expected paths and merge order.<suite> can include tests via name, module, or <group> tags.<before/after> tags in a <suite>
createData or grab actions).robo generate:tests generates all suites and tests, and can be given a JSON configuration to generate specific test/suites.<deleteData> may now be called against a url instead of a stepKey reference.<dragAndDrop> may now be given an additional x/y offset.<executeJS> now returns a variable based on what the executed script returns.<element> type="block".<page> elements may now be blank (contain no child sections).robo generate:tests --config parallel now accepts a --lines argument, for grouping and sorting based on test length.robo generate:tests now checks for:
actionGroup.stepKey references (in merge files).robo generate:tests now suppresses warnings by default. The command now accepts a --verbose flag to show full output including warnings.<conditionalClick> action now correctly references the selector given.selector now correctly resolves all element references.<page> url of type="admin".url now correctly resolve parameters.x and y attributes in actionGroup.<assert*> action elements.<seeInField> action can now be used to assert against empty strings.<data> elements within an <entity> now generate correctly.<magentoCLI> to the custom command has been fixed.magento2ce/vendor/[vendor]/[module]/Test/Acceptancemagento2ce/app/code/[vendor]/[module]/Test/Acceptancegenerate:tests now accepts a --nodes argument that specifies the number of test manifest files to generate for parallel configuration.grab and createData actions can now be used in <actionGroup> test steps by their stepKey reference.<requiredEntity> elements inside <entity> data xml would overwrite one another when merged.<object> elements inside <operation> metadata xml would overwrite one another when merged.{{entity.data}} references.<selectMultiOption> now correctly resolves entity references passed in to filterSelector and optionSelector.generate:tests --force no longer requires a MAGENTO_BASE_URL to be defined in the .env file.feature and story annotations now live under in the method and not class level in output test php.
1.2.6, which was a dependency update in MFTF 2.1.0.<annotation> tags now properly reflect Magento severity values.type attribute in actionGroup <argument> declaration.
<assertArrayIsSorted> action. This action takes in an array of data and asserts that the array is properly sorted, according to the provided sortOrder<selectMultipleOptions> action. This is a variation of <searchAndSelectOptions> that is given a filterSelector, optionSelector, and an <array> of options to select.
SearchAndMultiselectActionGroup.xml under Catalog in magento2ce.<url...> now utilize and grab the page's full url, not just the /path?query#fragment portion.<assert...> actions support a clearer, more readable nested syntax.
Assertions article for examples.field values during test runtime, prior to persistence via <createData> actions.removeBackend="true" attribute to <operation>. Only applicable to operation definitions of type="adminFormKey", attribute prevents pre-pending of MAGENTO_BACKEND_NAME to the url specified.
adminFormKey operations don't follow MAGENTO_BASE_URL/MAGENTO_BACKEND_NAME/MAGENTO_BACKEND_NAME/API_URL format.<test>, <page>, <section>, <element>, <data>) now require alphanumeric naming..env file contents are now resolved at test runtime, as opposed to generation.- in parameterized selector references.
' when providing a 'stringLiteral' to a parameterized selector/url.<assert...> test actions.custom_attribute data in persisted entities via key instead of index.
url_key in category entity: $category.custom_attributes[3][value]$ and $category.custom_attributes[url_key]$ are both valid.stepKey attributes at test generation. This check is scoped to <testAction> tags within a single <test> tag in a single file.<actionGroup> with <arguments> in test hooks.0 as data in an entity.<annotation> tag of <useCaseId> would cause test generation failures.<closeAdminNotification> action could not be used twice in in a <test>.metadata with an auth of type adminFormKey will now automatically append specified MAGENTO_BACKEND_NAME if necessary.<magentoCLI> test action. Action takes the given command="" and passes it for execution in Magento Environment.
Step 5 in the MFTF Getting Started article.<after> hook in both successful and failed test runs.[] characters within selector/url parameters.<formatMoney> action did not return a variable for test use.<waitForLoadingMaskToDisappear> action could not be used twice in an <actionGroup>.group annotation.<loginAsAdmin> test action with the action group LoginAsAdmin..env file variable CUSTOM_MODULE_PATHS which can be used to point to any custom extensions that you may want to write tests against.<page area=".."> property to distinguish between admin and storefront.SectionName.elementName references in any function attributes.area="admin" to prepend the MAGENTO_BACKEND_NAME value from the .env file.<config> XML root nodes to match the content they contain, e.g. <tests> or <pages>.returnVariable property from any test actions that return values. Instead, the stepKey property will be used as the name of the variable and be referenced as before.unselectOption.parameterArray property to work as expected..env file.<seeInCurrentUrl>, to now look at the full webdriver address.<waitForPageLoad> test action to not assume that you always want to dismiss UI notifications.MAGENTO_BASE_URL in .env file must have / at the end. Example: http://magento.com/