diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php index bc926fbe52..e769820c9e 100644 --- a/tests/acceptance/features/bootstrap/FilesAppContext.php +++ b/tests/acceptance/features/bootstrap/FilesAppContext.php @@ -106,7 +106,11 @@ class FilesAppContext implements Context, ActorAwareInterface { * @return Locator */ public static function shareLinkCheckbox() { - return Locator::forThe()->content("Share link")->descendantOf(self::currentSectionDetailsView())-> + // forThe()->checkbox("Share link") can not be used here; that would + // return the checkbox itself, but the element that the user interacts + // with is the label. + return Locator::forThe()->xpath("//label[normalize-space() = 'Share link']")-> + descendantOf(self::currentSectionDetailsView())-> describedAs("Share link checkbox in the details view in Files app"); } @@ -122,7 +126,11 @@ class FilesAppContext implements Context, ActorAwareInterface { * @return Locator */ public static function passwordProtectCheckbox() { - return Locator::forThe()->content("Password protect")->descendantOf(self::currentSectionDetailsView())-> + // forThe()->checkbox("Password protect") can not be used here; that + // would return the checkbox itself, but the element that the user + // interacts with is the label. + return Locator::forThe()->xpath("//label[normalize-space() = 'Password protect']")-> + descendantOf(self::currentSectionDetailsView())-> describedAs("Password protect checkbox in the details view in Files app"); } @@ -163,7 +171,7 @@ class FilesAppContext implements Context, ActorAwareInterface { * @return Locator */ public static function favoritedStateIconForFile($fileName) { - return Locator::forThe()->content("Favorited")->descendantOf(self::favoriteActionForFile($fileName))-> + return Locator::forThe()->css(".icon-starred")->descendantOf(self::favoriteActionForFile($fileName))-> describedAs("Favorited state icon for file $fileName in Files app"); } @@ -210,7 +218,8 @@ class FilesAppContext implements Context, ActorAwareInterface { * @return Locator */ private static function fileActionsMenuItemFor($itemText) { - return Locator::forThe()->content($itemText)->descendantOf(self::fileActionsMenu())-> + return Locator::forThe()->xpath("//a[normalize-space() = '$itemText']")-> + descendantOf(self::fileActionsMenu())-> describedAs($itemText . " item in file actions menu in Files app"); } diff --git a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php index d9d5eca735..88c1180c75 100644 --- a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php +++ b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php @@ -47,7 +47,7 @@ class FilesSharingAppContext implements Context, ActorAwareInterface { * @return Locator */ public static function wrongPasswordMessage() { - return Locator::forThe()->content("The password is wrong. Try again.")-> + return Locator::forThe()->xpath("//*[@class = 'warning' and normalize-space() = 'The password is wrong. Try again.']")-> describedAs("Wrong password message in Authenticate page"); } diff --git a/tests/acceptance/features/bootstrap/LoginPageContext.php b/tests/acceptance/features/bootstrap/LoginPageContext.php index 4b0672f652..61f12f54be 100644 --- a/tests/acceptance/features/bootstrap/LoginPageContext.php +++ b/tests/acceptance/features/bootstrap/LoginPageContext.php @@ -66,7 +66,7 @@ class LoginPageContext implements Context, ActorAwareInterface { * @return Locator */ public static function wrongPasswordMessage() { - return Locator::forThe()->content("Wrong password. Reset it?")-> + return Locator::forThe()->xpath("//*[@class = 'warning' and normalize-space() = 'Wrong password. Reset it?']")-> describedAs("Wrong password message in Login page"); } diff --git a/tests/acceptance/features/bootstrap/NotificationContext.php b/tests/acceptance/features/bootstrap/NotificationContext.php index f8b784e246..ac9838562e 100644 --- a/tests/acceptance/features/bootstrap/NotificationContext.php +++ b/tests/acceptance/features/bootstrap/NotificationContext.php @@ -31,7 +31,8 @@ class NotificationContext implements Context, ActorAwareInterface { * @return Locator */ public static function notificationMessage($message) { - return Locator::forThe()->content($message)->descendantOf(self::notificationContainer())-> + return Locator::forThe()->xpath("//*[@class = 'row' and normalize-space() = '$message']")-> + descendantOf(self::notificationContainer())-> describedAs("$message notification"); } diff --git a/tests/acceptance/features/bootstrap/SettingsMenuContext.php b/tests/acceptance/features/bootstrap/SettingsMenuContext.php index 9ce8df4cae..1ff5d94e98 100644 --- a/tests/acceptance/features/bootstrap/SettingsMenuContext.php +++ b/tests/acceptance/features/bootstrap/SettingsMenuContext.php @@ -61,7 +61,8 @@ class SettingsMenuContext implements Context, ActorAwareInterface { * @return Locator */ private static function menuItemFor($itemText) { - return Locator::forThe()->content($itemText)->descendantOf(self::settingsMenu())-> + return Locator::forThe()->xpath("//a[normalize-space() = '$itemText']")-> + descendantOf(self::settingsMenu())-> describedAs($itemText . " item in Settings menu"); } diff --git a/tests/acceptance/features/core/Locator.php b/tests/acceptance/features/core/Locator.php index 0ebae9b8fb..64b2aa00cd 100644 --- a/tests/acceptance/features/core/Locator.php +++ b/tests/acceptance/features/core/Locator.php @@ -169,14 +169,6 @@ class LocatorBuilder { return $this->customSelector("named", array("link_or_button", $value)); } - /** - * @param string $value - * @return LocatorBuilderSecondStep - */ - public function content($value) { - return $this->customSelector("named", array("content", $value)); - } - /** * @param string $value * @return LocatorBuilderSecondStep