diff --git a/tests/acceptance/features/bootstrap/NotificationContext.php b/tests/acceptance/features/bootstrap/NotificationContext.php index ff4396b1b9b..cf8e764d7cc 100644 --- a/tests/acceptance/features/bootstrap/NotificationContext.php +++ b/tests/acceptance/features/bootstrap/NotificationContext.php @@ -315,10 +315,26 @@ public function filterResponseByNotificationSubjectAndResource(string $subject, * @param TableNode $table * * @return void + * @throws Exception */ public function userShouldGetANotificationWithMessage(string $user, string $subject, TableNode $table):void { - $this->userListAllNotifications($user); - $actualMessage = str_replace(["\r", "\n"], " ", $this->filterResponseAccordingToNotificationSubject($subject)->message); + $count = 0; + // sometimes the test might try to get notification before the notification is created by the server + // in order to prevent test from failing because of that try to list the notifications again + do { + if ($count > 0) { + \sleep(1); + } + $this->featureContext->setResponse(null); + $this->userListAllNotifications($user); + $this->featureContext->theHTTPStatusCodeShouldBe(200); + ++$count; + } while (!isset($this->filterResponseAccordingToNotificationSubject($subject)->message) && $count <= 5); + if (isset($this->filterResponseAccordingToNotificationSubject($subject)->message)) { + $actualMessage = str_replace(["\r", "\n"], " ", $this->filterResponseAccordingToNotificationSubject($subject)->message); + } else { + throw new \Exception("Notification was not found even after retrying for 5 seconds."); + } $expectedMessage = $table->getColumnsHash()[0]['message']; Assert::assertSame( $expectedMessage,