|
| 1 | +import { expect, test } from '@playwright/test'; |
| 2 | +import { FeedbackHistoryDetailsPage } from './pages/feedback-history-details.page'; |
| 3 | +import { FeedbackHistoryPage } from './pages/feedback-history.page'; |
| 4 | +import { FirestorePage } from './pages/firestore.page'; |
| 5 | +import { PreRequestFeedbackEmailPage } from './pages/pre-request-feedback-email.page'; |
| 6 | +import { PreRequestFeedbackTokenPage } from './pages/pre-request-feedback-token.page'; |
| 7 | +import { Persona, SignInPage } from './pages/sign-in.page'; |
| 8 | +import { UserMenuPage } from './pages/user-menu.page'; |
| 9 | + |
| 10 | +const feedbackMessage = 'Quel est votre feedback ?'; |
| 11 | + |
| 12 | +test.beforeEach(({ page }) => new FirestorePage(page).reset()); |
| 13 | + |
| 14 | +test('Submit spontaneous feedback', async ({ page }) => { |
| 15 | + // ====== Alfred generate magic link ====== |
| 16 | + |
| 17 | + await new SignInPage(page).gotoAndSignIn(Persona.Alfred); |
| 18 | + |
| 19 | + const magicLink = await new PreRequestFeedbackTokenPage(page).gotoGenerateAndGetMagicLink(feedbackMessage); |
| 20 | + |
| 21 | + await new UserMenuPage(page).signOut(); |
| 22 | + |
| 23 | + // ====== Bernard use magic link (not authenticated) ====== |
| 24 | + |
| 25 | + const preRequestEmail = new PreRequestFeedbackEmailPage(page); |
| 26 | + await preRequestEmail.goto(magicLink); |
| 27 | + await preRequestEmail.checkDetails(Persona.Alfred, feedbackMessage); |
| 28 | + await preRequestEmail.submitEmail(Persona.Bernard); |
| 29 | + |
| 30 | + // ====== Bernard checks the requested feedback (from Alfred) is ready to be replied ====== |
| 31 | + |
| 32 | + await new SignInPage(page).gotoAndSignIn(Persona.Bernard); |
| 33 | + |
| 34 | + const bernardHistoryPage = new FeedbackHistoryPage(page); |
| 35 | + await bernardHistoryPage.goto('receivedRequest'); |
| 36 | + |
| 37 | + const alfredDetailsLink = await bernardHistoryPage.findDetailsLink(Persona.Alfred); |
| 38 | + await expect( |
| 39 | + alfredDetailsLink, |
| 40 | + 'Feedback receiver should be visible in the page "Répondre aux demandes de feedZback"', |
| 41 | + ).toBeVisible(); |
| 42 | + await alfredDetailsLink.click(); |
| 43 | + |
| 44 | + await new FeedbackHistoryDetailsPage(page).matchPending('receivedRequest', Persona.Alfred, feedbackMessage); |
| 45 | +}); |
0 commit comments