NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1969 most downloaded on Packagist
Magento2 Functional Testing Framework
Last release 1 months ago
14 Aug 2026
Release timing varies
gaps range from 2 weeks to 4 months
Most releases are documented
notes for 37 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
137 releases · first in 2017
Test generation errors output xml filename where they were encountered, as well as xml parent nodes where applicable.
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}}ModuleResolver now utilizes each Magento module's registration.php to map MFTF test material directories.waitForPageLoad action now correctly uses the given timeout attribute for all of its checks.- would not properly resolve parameterized selectors.parameterArray would not resolve $persisted.data$ references.vendor/magento/module-<module>/One column per quarter.
A -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 bee
-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.Removed PageReadinessExtension from default enabled extensions due to Jenkins instability.
PageReadinessExtension from default enabled extensions due to Jenkins instability.MagentoWebDriver overrides parent::_after() function and remaps to runAfter(), necessary to solve compatibility issues in Codeception 2.3.x.
parent::_after() function and remaps to runAfter(), necessary to solve compatibility issues in Codeception 2.3.x.Defaults in etc/config/functional.suite.dist.yml changed: window-size to 1280x1024, and removed --ingonito flag.
etc/config/functional.suite.dist.yml changed: window-size to 1280x1024, and removed --ingonito flag.The executeJs function no longer escapes persisted variables referenced via $$persisted.key$$.
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 build:project now copies over the command.php file into the parent Magento installation, if detected.robo commands are still supported, but will be deprecated in a future major release.
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.Javascript errors are now logged and reported in test output.
<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.Added support for PHP version 7.2
MFTF now supports the existence of tests as composer package dependencies or as living alongside core modules. Supported paths:
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.Severity in tags now properly reflect Magento severity values.
<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.Added the ability to refer to custom_attribute data in persisted entities via key instead of index.
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.Added the test action. Action takes the given command="" and passes it for execution in Magento Environment.
<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>.Fixed an issue with group annotation.
group annotation.Replaced the test action with the action group LoginAsAdmin.
<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.Traceability for clear logging and reporting capabilities
MAGENTO_BASE_URL in .env file must have / at the end. Example: http://magento.com/Your coding agent can read these notes before it upgrades. Set up the MCP server →