summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-05-27 18:11:48 +0200
committerArmand Philippot <git@armandphilippot.com>2022-06-02 19:10:28 +0200
commitefb03c205a0d4448f4625381676606a8853ce1e6 (patch)
tree04f6220a8a9b60a3dfa6a2a2e5edb1f505dd6882 /tests
parent1cf6e66e62e2e00fec294298b8d244bb9457ab52 (diff)
test(e2e): add search feature test
Diffstat (limited to 'tests')
-rw-r--r--tests/cypress/e2e/search.cy.ts41
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');
+ });
+});