From 00b38db77fe933e769cfd2bc79c76e6c98231eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Fri, 5 Mar 2021 21:39:37 +0100 Subject: [PATCH] Find elements through the actor rather than the driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Actor::find" is a more robust way to look for elements, as it handles some exceptions that may be thrown. Therefore, even if the elements are not actually used and it is only checked whether they exist or not using the actor is the preferred way when possible (and it also makes it consistent with the rest of the acceptance tests). Signed-off-by: Daniel Calviño Sánchez --- .../bootstrap/AppsManagementContext.php | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/tests/acceptance/features/bootstrap/AppsManagementContext.php b/tests/acceptance/features/bootstrap/AppsManagementContext.php index 449030e81a..56ec7c6b85 100644 --- a/tests/acceptance/features/bootstrap/AppsManagementContext.php +++ b/tests/acceptance/features/bootstrap/AppsManagementContext.php @@ -45,6 +45,15 @@ class AppsManagementContext implements Context, ActorAwareInterface { describedAs("Enable button in the app list for $app"); } + /** + * @return Locator + */ + public static function enableButtonForAnyApp() { + return Locator::forThe()->button("Enable")-> + descendantOf(self::appsList())-> + describedAs("Enable button in the app list for any app"); + } + /** * @return Locator */ @@ -63,6 +72,15 @@ class AppsManagementContext implements Context, ActorAwareInterface { describedAs("Disable button in the app list for $app"); } + /** + * @return Locator + */ + public static function disableButtonForAnyApp() { + return Locator::forThe()->button("Disable")-> + descendantOf(self::appsList())-> + describedAs("Disable button in the app list for any app"); + } + /** * @return Locator */ @@ -195,16 +213,24 @@ class AppsManagementContext implements Context, ActorAwareInterface { * @Given /^I see that there are only disabled apps$/ */ public function iSeeThatThereAreOnlyDisabledApps() { - $buttons = $this->actor->getSession()->getDriver()->find("//input[@value = 'Disable']"); - PHPUnit\Framework\Assert::assertEmpty($buttons, 'Found disabled apps'); + try { + $this->actor->find(self::disableButtonForAnyApp(), 2); + + PHPUnit_Framework_Assert::fail("Found enabled apps"); + } catch (NoSuchElementException $exception) { + } } /** * @Given /^I see that there are only enabled apps$/ */ public function iSeeThatThereAreOnlyEnabledApps() { - $buttons = $this->actor->getSession()->getDriver()->find("//input[@value = 'Enable']"); - PHPUnit\Framework\Assert::assertEmpty($buttons, 'Found disabled apps'); + try { + $this->actor->find(self::enableButtonForAnyApp(), 2); + + PHPUnit_Framework_Assert::fail("Found disabled apps"); + } catch (NoSuchElementException $exception) { + } } /**