<?php
namespace Magento\AcceptanceTest\_default\Backend;

use Magento\FunctionalTestingFramework\AcceptanceTester;
use \Codeception\Util\Locator;
use Yandex\Allure\Adapter\Annotation\Features;
use Yandex\Allure\Adapter\Annotation\Stories;
use Yandex\Allure\Adapter\Annotation\Title;
use Yandex\Allure\Adapter\Annotation\Description;
use Yandex\Allure\Adapter\Annotation\Parameter;
use Yandex\Allure\Adapter\Annotation\Severity;
use Yandex\Allure\Adapter\Model\SeverityLevel;
use Yandex\Allure\Adapter\Annotation\TestCaseId;

/**
 * @Title("[NO TESTCASEID]: BasicMergeTest")
 * @group functional
 * @group mergeTest
 * @Description("<h3>Test files</h3>verification/TestModule/Test/MergeFunctionalTest/BasicMergeTest.xml<br>verification/TestModuleMerged/Test/MergeFunctionalTest/BasicMergeTest.xml<br>")
 */
class BasicMergeTestCest
{
	/**
	 * @var bool
	 */
	private $isSuccess = false;

	/**
	  * @param AcceptanceTester $I
	  * @throws \Exception
	  */
	public function _before(AcceptanceTester $I)
	{
		$I->comment('[START BEFORE HOOK]');
		$I->amOnPage("/beforeUrl"); // stepKey: before1
		$I->see("#before2"); // stepKey: before2
		$I->comment('[END BEFORE HOOK]');
	}

	/**
	  * @param AcceptanceTester $I
	  * @throws \Exception
	  */
	public function _after(AcceptanceTester $I)
	{
		$I->comment('[START AFTER HOOK]');
		$I->amOnPage("/afterUrl1"); // stepKey: after1
		$I->comment('[END AFTER HOOK]');
		if ($this->isSuccess) {
			unlink(__FILE__);
		}
	}

	/**
	  * @param AcceptanceTester $I
	  * @throws \Exception
	  */
	public function _failed(AcceptanceTester $I)
	{
		$I->saveScreenshot(); // stepKey: saveScreenshot
	}

	/**
	 * @Severity(level = SeverityLevel::CRITICAL)
	 * @Features({"TestModule"})
	 * @Stories({"MQE-433"})
	 * @param AcceptanceTester $I
	 * @return void
	 * @throws \Exception
	 */
	public function BasicMergeTest(AcceptanceTester $I)
	{
		$I->amOnPage("/step1"); // stepKey: step1
		$I->click("#step2"); // stepKey: step2
		$I->fillField("#username", "step3"); // stepKey: step3
		$I->click("#step4"); // stepKey: step4
		$I->fillField("#password", "step5"); // stepKey: step5
		$I->click("#step6Merged"); // stepKey: step6Merge
		$I->click("#element .Jane .step7Merge"); // stepKey: step7Merge
		$I->comment("Entering Action Group [step8Merge] FunctionalActionGroupWithData");
		$I->amOnPage("/Jane/Dane.html"); // stepKey: amOnPage1Step8Merge
		$I->fillField("#foo", "Jane"); // stepKey: fillField1Step8Merge
		$I->fillField("#bar", "Dane"); // stepKey: fillField2Step8Merge
		$I->searchAndMultiSelectOption("#foo", ["Jane", "Dane"]); // stepKey: multi1Step8Merge
		$I->see("#element .Jane"); // stepKey: see1Step8Merge
		$I->comment("Exiting Action Group [step8Merge] FunctionalActionGroupWithData");
		$I->click("#step10MergedInResult"); // stepKey: step10
	}

	public function _passed(AcceptanceTester $I)
	{
		// Test passed successfully.
		$this->isSuccess = true;
	}
}