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.x
extends
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
argument
s 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:tests
generate:suite
run:test
run: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/Acceptance
magento2ce/app/code/[vendor]/[module]/Test/Acceptance
generate: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/