<?xml version="1.0" encoding="UTF-8" ?>
<!--
 /**
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
-->
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/actionGroupSchema.xsd">
    <actionGroup name="actionGroupWithoutArguments">
        <wait time="1" stepKey="waitForNothing" />
    </actionGroup>

    <actionGroup name="actionGroupWithDefaultArgumentAndStringSelectorParam">
        <arguments>
            <argument name="someArgument" defaultValue="ReplacementPerson" />
        </arguments>

        <see selector="{{SampleSection.oneParamElement('test1')}}" userInput="{{someArgument.firstname}}" stepKey="seeFirstName" />
    </actionGroup>

    <actionGroup name="actionGroupWithTwoArguments">
        <arguments>
            <argument name="somePerson"/>
            <argument name="anotherPerson"/>
        </arguments>

        <see selector="{{anotherPerson.firstname}}" userInput="{{somePerson.firstname}}" stepKey="seeFirstName" />
    </actionGroup>

    <actionGroup name="actionGroupWithSingleParameterSelectorFromArgument">
        <arguments>
            <argument name="someArgument" defaultValue="ReplacementPerson" />
        </arguments>

        <see selector="{{SampleSection.oneParamElement(someArgument.firstname)}}" userInput="{{someArgument.lastname}}" stepKey="seeLastName" />
    </actionGroup>

    <actionGroup name="actionGroupWithMultipleParameterSelectorsFromArgument">
        <arguments>
            <argument name="someArgument" defaultValue="ReplacementPerson" />
        </arguments>

        <see selector="{{SampleSection.threeParamElement(someArgument.firstname, someArgument.lastname, 'test')}}" userInput="{{someArgument.lastname}}" stepKey="seeLastName" />
    </actionGroup>

    <actionGroup name="actionGroupWithStringUsage">
        <arguments>
            <argument name="someArgument" type="string" defaultValue="stringLiteral"/>
        </arguments>
        <see selector="{{SampleSection.oneParamElement(someArgument)}}" userInput="{{someArgument}}" stepKey="see1" />
    </actionGroup>

    <actionGroup name="actionGroupWithEntityUsage">
        <arguments>
            <argument name="someArgument" type="entity" defaultValue="stringLiteral"/>
        </arguments>
        <see selector="{{SampleSection.oneParamElement(someArgument)}}" userInput="{{someArgument}}" stepKey="see1" />
    </actionGroup>

    <actionGroup name="actionGroupWithNestedArgument">
        <arguments>
            <argument name="count" defaultValue="10" type="string"/>
        </arguments>
        <grabMultiple selector="selector" stepKey="grabProducts"/>
        <assertCount stepKey="assertCount">
            <expectedResult type="int">{{count}}</expectedResult>
            <actualResult type="variable">grabProducts</actualResult>
        </assertCount>
    </actionGroup>

    <actionGroup name="ActionGroupToExtend">
        <arguments>
            <argument name="count" type="string"/>
        </arguments>
        <grabMultiple selector="selector" stepKey="grabProducts"/>
        <assertCount stepKey="assertCount">
            <expectedResult type="int">{{count}}</expectedResult>
            <actualResult type="variable">grabProducts</actualResult>
        </assertCount>
    </actionGroup>

    <actionGroup name="extendTestActionGroup" extends="ActionGroupToExtend">
        <arguments>
            <argument name="otherCount" type="string"/>
        </arguments>
        <grabMultiple selector="notASelector" stepKey="grabProducts"/>
        <comment userInput="New Input After" stepKey="afterGrabProducts" after="grabProducts"/>
        <comment userInput="New Input Before" stepKey="beforeGrabProducts" before="grabProducts"/>
        <assertCount stepKey="assertSecondCount">
            <expectedResult type="int">{{otherCount}}</expectedResult>
            <actualResult type="variable">grabProducts</actualResult>
        </assertCount>
    </actionGroup>

    <actionGroup name="extendBasicActionGroup">
        <comment stepKey="removeMe" userInput="This Should Be Removed"/>
    </actionGroup>

    <actionGroup name="extendRemoveTestActionGroup" extends="extendBasicActionGroup">
        <remove keyForRemoval="removeMe"/>
    </actionGroup>

    <actionGroup name="actionGroupWithCreateData">
        <createData entity="ApiCategory" stepKey="createCategory"/>
        <createData entity="ApiConfigurableProduct" stepKey="createConfigProduct">
            <requiredEntity createDataKey="createCategory"/>
        </createData>
    </actionGroup>

    <actionGroup name="actionGroupContainsStepKeyInArgValue">
        <arguments>
            <argument name="sameStepKeyAsArg" type="string" defaultValue="stringLiteral"/>
        </arguments>
        <see selector=".selector" userInput="{{sameStepKeyAsArg}}" stepKey="arg1" />
    </actionGroup>

    <actionGroup name="actionGroupWithSectionAndData">
        <arguments>
            <argument name="content" type="string"/>
            <argument name="section"/>
        </arguments>
        <waitForElementVisible selector="{{section.oneParamElement(content)}}" stepKey="arg1"/>
    </actionGroup>
</actionGroups>
