diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-05-27 18:11:48 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-06-02 19:10:28 +0200 |
| commit | efb03c205a0d4448f4625381676606a8853ce1e6 (patch) | |
| tree | 04f6220a8a9b60a3dfa6a2a2e5edb1f505dd6882 | |
| parent | 1cf6e66e62e2e00fec294298b8d244bb9457ab52 (diff) | |
test(e2e): add search feature test
| -rw-r--r-- | tests/cypress/e2e/search.cy.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/cypress/e2e/search.cy.ts b/tests/cypress/e2e/search.cy.ts new file mode 100644 index 0000000..f105a5c --- /dev/null +++ b/tests/cypress/e2e/search.cy.ts @@ -0,0 +1,41 @@ +const queryWithArticles = 'Coldark'; +const queryWithoutArticles = 'etEtRerum'; + +describe('Search', () => { + it('should open and close search form by clicking on search button', () => { + cy.visit('/'); + cy.findByLabelText(/Fermer la recherche/i).should('not.exist'); + cy.findByRole('searchbox', { name: /Rechercher/i }).should('not.exist'); + cy.findByLabelText(/Ouvrir la recherche/i).click(); + cy.findByLabelText(/Ouvrir la recherche/i).should('not.exist'); + cy.findByLabelText(/Fermer la recherche/i).should('exist'); + cy.findByRole('searchbox', { name: /Rechercher/i }).should('exist'); + cy.findByLabelText(/Fermer la recherche/i).click(); + cy.findByLabelText(/Fermer la recherche/i).should('not.exist'); + cy.findByRole('searchbox', { name: /Rechercher/i }).should('not.exist'); + cy.findByLabelText(/Ouvrir la recherche/i).should('exist'); + }); + + it('should navigate the search page', async () => { + cy.visit('/'); + cy.findByLabelText(/Ouvrir la recherche/i).click(); + cy.findByRole('searchbox', { name: /Rechercher/i }).type( + `${queryWithArticles}{enter}` + ); + cy.url().should('include', '/blog'); + cy.findByRole('heading', { level: 1 }).contains( + /Résultats de la recherche pour/i + ); + }); + + it('should display the total of articles if successful', async () => { + cy.visit(`/recherche?s=${encodeURIComponent(queryWithArticles)}`); + const dtSiblings = cy.findByRole('term', { name: /Total/i }).siblings(); + dtSiblings.findByRole('definition').contains(/article/i); + }); + + it('should display a search form if unsuccessful', () => { + cy.visit(`/recherche?s=${encodeURIComponent(queryWithoutArticles)}`); + cy.findByRole('searchbox', { name: /Rechercher/i }).should('exist'); + }); +}); |
