Skip to content

Commit 85d4fa6

Browse files
authored
MQE-2212: Fix invalid behaviour MAGENTO_BACKEND_BASE_URL (magento#780)
* MQE-2212: Fix invalid behaviour of MAGENTO_BACKEND_BASE_URL * MQE-2212: Fix invalid behaviour MAGENTO_BACKEND_BASE_URL * MQE-2212: Fix invalid behaviour MAGENTO_BACKEND_BASE_URL
1 parent 20af7fd commit 85d4fa6

File tree

5 files changed

+40
-14
lines changed

5 files changed

+40
-14
lines changed

dev/tests/verification/Resources/PageReplacementTest.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class PageReplacementTestCest
3535
$I->amOnPage("/John/StringLiteral2.html"); // stepKey: twoParamPageStringData
3636
$I->amOnPage("/John/" . $I->retrieveEntityField('datakey', 'firstname', 'test') . ".html"); // stepKey: twoParamPageDataPersist
3737
$I->amOnPage("/" . $I->retrieveEntityField('datakey', 'firstname', 'test') . "/StringLiteral2.html"); // stepKey: twoParamPagePersistString
38-
$I->amOnPage("/" . getenv("MAGENTO_BACKEND_NAME") . "/backend"); // stepKey: onAdminPage
39-
$I->amOnPage("/" . getenv("MAGENTO_BACKEND_NAME") . "/StringLiteral/page.html"); // stepKey: oneParamAdminPageString
38+
$I->amOnPage((getenv("MAGENTO_BACKEND_BASE_URL") ? rtrim(getenv("MAGENTO_BACKEND_BASE_URL"), "/") : "") . "/" . getenv("MAGENTO_BACKEND_NAME") . "/backend"); // stepKey: onAdminPage
39+
$I->amOnPage((getenv("MAGENTO_BACKEND_BASE_URL") ? rtrim(getenv("MAGENTO_BACKEND_BASE_URL"), "/") : "") . "/" . getenv("MAGENTO_BACKEND_NAME") . "/StringLiteral/page.html"); // stepKey: oneParamAdminPageString
4040
$I->amOnUrl("http://myFullUrl.com/"); // stepKey: onExternalPage
4141
}
4242
}

src/Magento/FunctionalTestingFramework/Module/MagentoWebDriver.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ public function saveScreenshot()
877877
*/
878878
public function amOnPage($page)
879879
{
880-
parent::amOnPage($page);
880+
(0 === strpos($page, 'http')) ? parent::amOnUrl($page) : parent::amOnPage($page);
881881
$this->waitForPageLoad();
882882
}
883883

src/Magento/FunctionalTestingFramework/Test/Objects/ActionObject.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,12 @@ private function resolveParameterization($isParameterized, $replacement, $match,
726726
$resolvedReplacement = $replacement;
727727
}
728728
if (get_class($object) == PageObject::class && $object->getArea() == PageObject::ADMIN_AREA) {
729-
$resolvedReplacement = "/{{_ENV.MAGENTO_BACKEND_NAME}}/" . $resolvedReplacement;
729+
$urlSegments = [
730+
'{{_ENV.MAGENTO_BACKEND_BASE_URL}}',
731+
'{{_ENV.MAGENTO_BACKEND_NAME}}',
732+
$resolvedReplacement
733+
];
734+
$resolvedReplacement = implode('/', $urlSegments);
730735
}
731736
return $resolvedReplacement;
732737
}

src/Magento/FunctionalTestingFramework/Util/MftfGlobals.php

+6-3
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,15 @@ public static function getBackendBaseUrl($withTrailingSeparator = true)
7676
{
7777
if (!self::$backendBaseUrl) {
7878
try {
79+
$backendName = getenv('MAGENTO_BACKEND_NAME');
7980
$bUrl = getenv('MAGENTO_BACKEND_BASE_URL');
80-
if ($bUrl) {
81-
self::$backendBaseUrl = UrlFormatter::format($bUrl, false);
81+
if ($bUrl && $backendName) {
82+
self::$backendBaseUrl = UrlFormatter::format(
83+
UrlFormatter::format($bUrl) . $backendName,
84+
false
85+
);
8286
} else {
8387
$baseUrl = getenv('MAGENTO_BASE_URL');
84-
$backendName = getenv('MAGENTO_BACKEND_NAME');
8588
if ($baseUrl && $backendName) {
8689
self::$backendBaseUrl = UrlFormatter::format(
8790
UrlFormatter::format($baseUrl) . $backendName,

src/Magento/FunctionalTestingFramework/Util/TestGenerator.php

+25-7
Original file line numberDiff line numberDiff line change
@@ -2030,18 +2030,20 @@ private function resolveRuntimeReference($args, $regex, $func)
20302030
$newArgs = [];
20312031

20322032
foreach ($args as $key => $arg) {
2033+
$newArgs[$key] = $arg;
20332034
preg_match_all($regex, $arg, $matches);
20342035
if (!empty($matches[0])) {
2035-
$fullMatch = $matches[0][0];
2036-
$refVariable = $matches[1][0];
2037-
unset($matches);
2038-
$replacement = "{$func}(\"{$refVariable}\")";
2036+
foreach ($matches[0] as $matchKey => $fullMatch) {
2037+
$refVariable = $matches[1][$matchKey];
20392038

2040-
$outputArg = $this->processQuoteBreaks($fullMatch, $arg, $replacement);
2041-
$newArgs[$key] = $outputArg;
2039+
$replacement = $this->getReplacement($func, $refVariable);
2040+
2041+
$outputArg = $this->processQuoteBreaks($fullMatch, $newArgs[$key], $replacement);
2042+
$newArgs[$key] = $outputArg;
2043+
}
2044+
unset($matches);
20422045
continue;
20432046
}
2044-
$newArgs[$key] = $arg;
20452047
}
20462048

20472049
// override passed in args for use later.
@@ -2313,4 +2315,20 @@ private function parseUserInput($userInput)
23132315

23142316
return $this->addUniquenessFunctionCall($userInput);
23152317
}
2318+
2319+
/**
2320+
* Supports fallback for BACKEND URL
2321+
*
2322+
* @param string $func
2323+
* @param string $refVariable
2324+
* @return string
2325+
*/
2326+
private function getReplacement($func, $refVariable): string
2327+
{
2328+
if ($refVariable === 'MAGENTO_BACKEND_BASE_URL') {
2329+
return "({$func}(\"{$refVariable}\") ? rtrim({$func}(\"{$refVariable}\"), \"/\") : \"\")";
2330+
}
2331+
2332+
return "{$func}(\"{$refVariable}\")";
2333+
}
23162334
}

0 commit comments

Comments
 (0)