diff options
Diffstat (limited to 'tests/cypress')
| -rw-r--r-- | tests/cypress/e2e/pages/404.cy.ts | 5 | ||||
| -rw-r--r-- | tests/cypress/e2e/pages/blog.cy.ts | 72 | ||||
| -rw-r--r-- | tests/cypress/e2e/search.cy.ts | 24 |
3 files changed, 45 insertions, 56 deletions
diff --git a/tests/cypress/e2e/pages/404.cy.ts b/tests/cypress/e2e/pages/404.cy.ts index 7899275..77f3085 100644 --- a/tests/cypress/e2e/pages/404.cy.ts +++ b/tests/cypress/e2e/pages/404.cy.ts @@ -25,7 +25,10 @@ describe('404 Page', () => { const keywords = 'coldark'; cy.findByRole('searchbox').type(keywords); - cy.findByRole('button', { name: /Rechercher/ }).click(); + cy.findByRole('button', { name: /Rechercher/ }) + .click() + // eslint-disable-next-line @typescript-eslint/no-magic-numbers + .wait(500); cy.findByRole('heading', { level: 1 }).should('contain.text', keywords); }); }); diff --git a/tests/cypress/e2e/pages/blog.cy.ts b/tests/cypress/e2e/pages/blog.cy.ts index 0350e39..a83caa0 100644 --- a/tests/cypress/e2e/pages/blog.cy.ts +++ b/tests/cypress/e2e/pages/blog.cy.ts @@ -1,10 +1,6 @@ import { CONFIG } from '../../../../src/utils/config'; import { ROUTES } from '../../../../src/utils/constants'; - -type ArticlesGroup = { - first: string; - total: string; -}; +import { wpPostsFixture } from '../../../fixtures'; describe('Blog Page', () => { beforeEach(() => { @@ -19,43 +15,39 @@ describe('Blog Page', () => { cy.findByRole('navigation', { name: 'Fil d’Ariane' }).should('exist'); }); - it('loads the correct number of pages', () => { + it('loads the correct number of posts', () => { cy.findByText( /(?<first>\d+) articles chargés sur un total de (?<total>\d+)/i - ) - .then(($div) => { - const firstLastNumbers = /(?<first>\d+).*[\D](?<total>\d+)/; - const result = RegExp(firstLastNumbers).exec($div.text()); - - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - expect(result).to.not.be.null; - - const { first, total } = result - ? (result.groups as ArticlesGroup) - : { first: '0', total: '0' }; - const totalArticles = parseInt(total, 10); - - expect(parseInt(first, 10)).to.be.within(1, CONFIG.postsPerPage); - expect(totalArticles).to.be.at.least(1); - - const totalPages = Math.ceil(totalArticles / CONFIG.postsPerPage); - const remainingPages = totalPages - 1; - - return Array.from({ length: remainingPages }, (_, i) => i + 1); - }) - .then((remainingPages) => { - if (remainingPages.length >= 1) { - cy.wrap(remainingPages).each(() => { - cy.findByRole('button', { - name: /Charger plus d’articles/i, - }).click(); - }); - } - - cy.findByRole('button', { name: /Charger plus d’articles/i }).should( - 'not.exist' - ); - }); + ).should('exist'); + cy.findAllByRole('link', { name: /En lire plus/ }).should( + 'have.length.at.most', + CONFIG.postsPerPage + ); + + const loadMorePosts = () => { + cy.findByRole('button', { name: /Charger plus/ }) + .should((_) => { + /* do nothing */ + }) + .then(($loadMoreBtn) => { + if (!$loadMoreBtn.length) { + cy.log('No more posts'); + return; + } + + cy.log('Loading more posts'); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers + cy.wrap($loadMoreBtn).click().wait(500); + loadMorePosts(); + }); + }; + + loadMorePosts(); + + cy.findAllByRole('link', { name: /En lire plus/ }).should( + 'have.length', + wpPostsFixture.length + ); }); it('contains a thematics list widget and a topics list widget', () => { diff --git a/tests/cypress/e2e/search.cy.ts b/tests/cypress/e2e/search.cy.ts index be9aa9f..f4f80f2 100644 --- a/tests/cypress/e2e/search.cy.ts +++ b/tests/cypress/e2e/search.cy.ts @@ -1,31 +1,32 @@ import { ROUTES } from '../../../src/utils/constants'; -const queryWithArticles = 'Coldark'; const queryWithoutArticles = 'etEtRerum'; describe('Search', () => { it('should open and close search form by clicking on search button', () => { cy.visit('/'); // findByLabelText does not return the input but the label... - cy.findByLabelText(/Ouvrir la recherche/i) + cy.findByLabelText(/Ouvrir le formulaire de recherche/i) .prev() .should('not.be.checked'); cy.findByRole('searchbox', { name: /Rechercher/i }).should('not.exist'); - cy.findByLabelText(/Ouvrir la recherche/i).click(); - cy.findByLabelText(/Ouvrir la recherche/i) + cy.findByLabelText(/Ouvrir le formulaire de recherche/i).click(); + cy.findByLabelText(/Ouvrir le formulaire de recherche/i) .prev() .should('be.checked'); cy.findByRole('searchbox', { name: /Rechercher/i }).should('exist'); - cy.findByLabelText(/Ouvrir la recherche/i).click(); - cy.findByLabelText(/Ouvrir la recherche/i).should('not.be.checked'); + cy.findByLabelText(/Ouvrir le formulaire de recherche/i).click(); + cy.findByLabelText(/Ouvrir le formulaire de recherche/i).should( + 'not.be.checked' + ); cy.findByRole('searchbox', { name: /Rechercher/i }).should('not.exist'); }); it('should navigate the search page', () => { cy.visit('/'); - cy.findByLabelText(/Ouvrir la recherche/i).click(); + cy.findByLabelText(/Ouvrir le formulaire de recherche/i).click(); cy.findByRole('searchbox', { name: /Rechercher/i }).type( - `${queryWithArticles}{enter}` + `${'coldark'}{enter}` ); cy.url().should('include', ROUTES.SEARCH); cy.findByRole('heading', { level: 1 }).contains( @@ -33,13 +34,6 @@ describe('Search', () => { ); }); - it('should display the total of articles if successful', () => { - cy.visit(`${ROUTES.SEARCH}?s=${encodeURIComponent(queryWithArticles)}`); - const metaList = cy.findByRole('heading', { level: 1 }).next(); - metaList.findByRole('term').contains(/Total/i); - metaList.findByRole('definition').contains(/article/i); - }); - it('should display a search form if unsuccessful', () => { cy.visit(`${ROUTES.SEARCH}?s=${encodeURIComponent(queryWithoutArticles)}`); cy.findByRole('searchbox', { name: /Rechercher/i }).should('exist'); |
