. * */ use Behat\Behat\Context\Context; class SettingsMenuContext implements Context, ActorAwareInterface { use ActorAware; /** * @return Locator */ public static function settingsMenuButton() { return Locator::forThe()->xpath("//*[@id = 'header']//*[@id = 'settings']")-> describedAs("Settings menu button"); } /** * @return Locator */ public static function usersMenuItem() { return self::menuItemFor("Users"); } /** * @return Locator */ public static function logOutMenuItem() { return self::menuItemFor("Log out"); } /** * @return Locator */ private static function menuItemFor($itemText) { return Locator::forThe()->content($itemText)->descendantOf(self::settingsMenuButton())-> describedAs($itemText . " item in Settings menu"); } /** * @When I open the User settings */ public function iOpenTheUserSettings() { $this->actor->find(self::settingsMenuButton(), 10)->click(); $this->actor->find(self::usersMenuItem(), 2)->click(); } /** * @When I log out */ public function iLogOut() { $this->actor->find(self::settingsMenuButton(), 10)->click(); $this->actor->find(self::logOutMenuItem(), 2)->click(); } }