From 81fdbc6554a7a9f3227e1a66a529bcd1f132b810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 15 Feb 2018 17:30:51 +0100 Subject: [PATCH] Take into account the comment message when looking for it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of checking that the list contains one comment it is now checked that a comment with certain message is visible. This makes the step (and the locator) more reusable in future tests and also simplifies the code. Signed-off-by: Daniel Calviño Sánchez --- .../acceptance/features/app-comments.feature | 2 +- .../features/bootstrap/CommentsAppContext.php | 39 ++++++++----------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/tests/acceptance/features/app-comments.feature b/tests/acceptance/features/app-comments.feature index 81fc6f89ad1..a5bdb0aa745 100644 --- a/tests/acceptance/features/app-comments.feature +++ b/tests/acceptance/features/app-comments.feature @@ -5,4 +5,4 @@ Feature: app-comments And I open the details view for "welcome.txt" And I open the "Comments" tab in the details view When I create a new comment with "Hello world" as message - Then I see that a comment was added + Then I see a comment with "Hello world" as message diff --git a/tests/acceptance/features/bootstrap/CommentsAppContext.php b/tests/acceptance/features/bootstrap/CommentsAppContext.php index 8bc0f28ca34..7e804cfac23 100644 --- a/tests/acceptance/features/bootstrap/CommentsAppContext.php +++ b/tests/acceptance/features/bootstrap/CommentsAppContext.php @@ -47,10 +47,19 @@ class CommentsAppContext implements Context, ActorAwareInterface { /** * @return Locator */ - public static function commentFields() { - return Locator::forThe()->css(".comments .comment .message")-> + public static function commentList() { + return Locator::forThe()->css("ul.comments")-> descendantOf(FilesAppContext::currentSectionDetailsView())-> - describedAs("Comment fields in current section details view in Files app"); + describedAs("Comment list in current section details view in Files app"); + } + + /** + * @return Locator + */ + public static function commentWithText($text) { + return Locator::forThe()->xpath("//div[normalize-space() = '$text']/ancestor::li")-> + descendantOf(self::commentList())-> + describedAs("Comment with text \"$text\" in current section details view in Files app"); } /** @@ -62,26 +71,10 @@ class CommentsAppContext implements Context, ActorAwareInterface { } /** - * @Then /^I see that a comment was added$/ + * @Then /^I see a comment with "([^"]*)" as message$/ */ - public function iSeeThatACommentWasAdded() { - $self = $this; - - $result = Utils::waitFor(function () use ($self) { - return $self->isCommentAdded(); - }, 5, 0.5); - - PHPUnit_Framework_Assert::assertTrue($result); - } - - public function isCommentAdded() { - try { - $locator = self::commentFields(); - $comments = $this->actor->getSession()->getPage()->findAll($locator->getSelector(), $locator->getLocator()); - PHPUnit_Framework_Assert::assertSame(1, count($comments)); - } catch (PHPUnit_Framework_ExpectationFailedException $e) { - return false; - } - return true; + public function iSeeACommentWithAsMessage($commentText) { + PHPUnit_Framework_Assert::assertTrue( + $this->actor->find(self::commentWithText($commentText), 10)->isVisible()); } }