From d48e6aa277317d233eeaa7ab1050f2da6ef59771 Mon Sep 17 00:00:00 2001 From: Shakira Date: Fri, 14 Jun 2024 11:48:33 +0300 Subject: [PATCH 01/26] Add e2e tests for data view filters by categories --- e2e-testing/cypress/e2e/12-data-view/data-view.cy.js | 5 +++++ e2e-testing/cypress/functions/DataViewFilterFunctions.js | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js b/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js index 3bfa8e439..b7df1dfca 100644 --- a/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js +++ b/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js @@ -20,4 +20,9 @@ describe('Automated Tests for Post Filters in Data View', () => { dataViewFilterFunctions.click_data_view_btn(); dataViewFilterFunctions.check_post_filter_by_status(); }); + + it('Filter posts by categories', () => { + dataViewFilterFunctions.click_data_view_btn(); + dataViewFilterFunctions.check_post_filter_by_categories(); + }); }); diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 3e31c8b7a..1de388f5e 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -134,6 +134,15 @@ class DataViewFilterFunctions { .should('contain', 'mat-pseudo-checkbox-checked'); cy.get(DataViewLocators.feedPageResults).contains('Current results: 20 / 512'); } + + check_post_filter_by_categories() { + //click search form filter button + cy.get(DataViewLocators.revealFiltersBtn).click(); + //click categories filter button + cy.get('button:contains("Categories")').click(); + //check that drop-down on a parent and that children are seen + cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); + } } export default DataViewFilterFunctions; From c7258d9406d459f363f534b484ea769f4980f3b8 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 17 Jun 2024 11:11:26 +0300 Subject: [PATCH 02/26] Add steps to check for dropdown elements and children elements --- .../cypress/functions/DataViewFilterFunctions.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 1de388f5e..b9f73268b 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -140,8 +140,19 @@ class DataViewFilterFunctions { cy.get(DataViewLocators.revealFiltersBtn).click(); //click categories filter button cy.get('button:contains("Categories")').click(); - //check that drop-down on a parent and that children are seen + //check that drop-down on a parent and children are seen cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); + + cy.get('.mat-tree-node').should('exist'); + cy.get('.mat-tree-node').within(() => { + cy.get('.mat-tree-node').should('have.length.greaterThan', 0); + }); + //check that when parent elements are selected children elements are also selected + cy.get('.mat-tree-node') + .children() + .each(($child) => { + cy.wrap($child).should('be.selected'); + }); } } From a8e2b89608673bee29aba33863e2f0969ce039b9 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 17 Jun 2024 11:36:23 +0300 Subject: [PATCH 03/26] Add steps to check for specific elements --- .../cypress/functions/DataViewFilterFunctions.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index b9f73268b..645290455 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -143,12 +143,15 @@ class DataViewFilterFunctions { //check that drop-down on a parent and children are seen cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); - cy.get('.mat-tree-node').should('exist'); - cy.get('.mat-tree-node').within(() => { - cy.get('.mat-tree-node').should('have.length.greaterThan', 0); - }); + cy.get('.mat-tree-node').eq(0).should('exist'); + cy.get('.mat-tree-node') + .eq(0) + .within(() => { + cy.get('.mat-tree-node').eq(0).should('have.length.greaterThan', 0); + }); //check that when parent elements are selected children elements are also selected cy.get('.mat-tree-node') + .eq(0) .children() .each(($child) => { cy.wrap($child).should('be.selected'); From cb5c318bff47c25d922eb5d419593a008c3f84f9 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 17 Jun 2024 12:32:01 +0300 Subject: [PATCH 04/26] Stecify the child component --- .../cypress/functions/DataViewFilterFunctions.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 645290455..887a33f49 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -146,16 +146,11 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); cy.get('.mat-tree-node') .eq(0) - .within(() => { - cy.get('.mat-tree-node').eq(0).should('have.length.greaterThan', 0); - }); - //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node') + .find('[aria-level="2"]') .eq(0) - .children() - .each(($child) => { - cy.wrap($child).should('be.selected'); - }); + .should('have.length.greaterThan', 0); + //check that when parent elements are selected children elements are also selected + cy.get('.mat-tree-node').eq(0).find('[aria-level="2"]').should('be.selected'); } } From 7b3731519f697e411c24187ebabac1104224853a Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 17 Jun 2024 13:21:50 +0300 Subject: [PATCH 05/26] Add data-qa attributes --- .../multilevel-selection.component.html | 6 +++++- .../filter-control/filter-control.component.html | 1 + .../cypress/functions/DataViewFilterFunctions.js | 15 +++++++-------- e2e-testing/cypress/locators/DataViewLocators.js | 2 ++ 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html b/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html index 6feac486e..b556c5a1c 100644 --- a/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html +++ b/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html @@ -11,7 +11,11 @@ - + {{ node.name }} diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 887a33f49..b4abc84d3 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -141,16 +141,15 @@ class DataViewFilterFunctions { //click categories filter button cy.get('button:contains("Categories")').click(); //check that drop-down on a parent and children are seen - cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); - - cy.get('.mat-tree-node').eq(0).should('exist'); - cy.get('.mat-tree-node') - .eq(0) - .find('[aria-level="2"]') + cy.get(DataViewLocators.parentCategoryFilter) .eq(0) - .should('have.length.greaterThan', 0); + .find('.multilevelselect-filter__option__arrow') + .click(); + cy.get(DataViewLocators.parentCategoryFilter).eq(0).should('exist'); + cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('[aria-level="2"]').should('be.selected'); + cy.get(DataViewLocators.parentCategoryFilter).eq(0).should('be.selected'); + cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } } diff --git a/e2e-testing/cypress/locators/DataViewLocators.js b/e2e-testing/cypress/locators/DataViewLocators.js index c74f28ed0..ef0a6f8d6 100644 --- a/e2e-testing/cypress/locators/DataViewLocators.js +++ b/e2e-testing/cypress/locators/DataViewLocators.js @@ -13,6 +13,8 @@ const DataViewLocators = { statusBtn: '[data-qa="status"]', filterSelectionList: '[data-qa="filter-selection-list"]', filterListOption: '[data-qa="filter-list-option"]', + childCategoryFilter: '[data-qa="child-category"]', + parentCategoryFilter: '[data-qa="parent-category"]', }; export default DataViewLocators; From ab2d9cdab23796940364ae73b946d8c626036a72 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 17 Jun 2024 18:52:13 +0300 Subject: [PATCH 06/26] Remove unnecessary locators --- .../cypress/functions/DataViewFilterFunctions.js | 13 +++++-------- e2e-testing/cypress/locators/DataViewLocators.js | 2 -- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index b4abc84d3..310115435 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -141,15 +141,12 @@ class DataViewFilterFunctions { //click categories filter button cy.get('button:contains("Categories")').click(); //check that drop-down on a parent and children are seen - cy.get(DataViewLocators.parentCategoryFilter) - .eq(0) - .find('.multilevelselect-filter__option__arrow') - .click(); - cy.get(DataViewLocators.parentCategoryFilter).eq(0).should('exist'); - cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); + cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); + cy.get('.mat-tree-node').eq(0).should('exist'); + // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected - cy.get(DataViewLocators.parentCategoryFilter).eq(0).should('be.selected'); - cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); + cy.get('.mat-tree-node').eq(0).should('be.selected'); + // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } } diff --git a/e2e-testing/cypress/locators/DataViewLocators.js b/e2e-testing/cypress/locators/DataViewLocators.js index ef0a6f8d6..c74f28ed0 100644 --- a/e2e-testing/cypress/locators/DataViewLocators.js +++ b/e2e-testing/cypress/locators/DataViewLocators.js @@ -13,8 +13,6 @@ const DataViewLocators = { statusBtn: '[data-qa="status"]', filterSelectionList: '[data-qa="filter-selection-list"]', filterListOption: '[data-qa="filter-list-option"]', - childCategoryFilter: '[data-qa="child-category"]', - parentCategoryFilter: '[data-qa="parent-category"]', }; export default DataViewLocators; From 52814ada0b54d24e8b2cf46c54e641b144b38cd5 Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 09:34:50 +0300 Subject: [PATCH 07/26] Add step to click on checkbox --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 310115435..c9255fde3 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -145,6 +145,7 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected + cy.get('.mat-tree-node').find('.mat-checkbox-input').click(); cy.get('.mat-tree-node').eq(0).should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } From 60bef5f60dff448a73a755bd8a213536204b654f Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 09:40:06 +0300 Subject: [PATCH 08/26] Check for child dropdown lements exist and selected --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index c9255fde3..ef2f6ff27 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -143,10 +143,12 @@ class DataViewFilterFunctions { //check that drop-down on a parent and children are seen cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); cy.get('.mat-tree-node').eq(0).should('exist'); + cy.get(`[aria-level="2"]`).eq(0).should('exist'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected cy.get('.mat-tree-node').find('.mat-checkbox-input').click(); cy.get('.mat-tree-node').eq(0).should('be.selected'); + cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } } From 851cc129e4290fd1a3c762e8205eec4b13d433a9 Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 09:48:34 +0300 Subject: [PATCH 09/26] Specify the dropdown child items --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index ef2f6ff27..17ffdb21d 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -146,7 +146,7 @@ class DataViewFilterFunctions { cy.get(`[aria-level="2"]`).eq(0).should('exist'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').find('.mat-checkbox-input').click(); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click(); cy.get('.mat-tree-node').eq(0).should('be.selected'); cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); From 9fd0b5e2005d7936d7d23d41ef6eabd82c52dbdd Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 10:20:55 +0300 Subject: [PATCH 10/26] Add force true to click event --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 17ffdb21d..409709935 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -146,7 +146,7 @@ class DataViewFilterFunctions { cy.get(`[aria-level="2"]`).eq(0).should('exist'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click(); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); cy.get('.mat-tree-node').eq(0).should('be.selected'); cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); From c37dc254c92789af57c5fe72857473a764663408 Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 10:53:08 +0300 Subject: [PATCH 11/26] Update the checkbox selected command --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 409709935..82ecbafad 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -147,8 +147,8 @@ class DataViewFilterFunctions { // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); - cy.get('.mat-tree-node').eq(0).should('be.selected'); - cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); + cy.get('.mat-tree-node').eq(0).check().should('be.selected'); + cy.get(`[aria-level="2"]`).eq(0).check().should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } } From 0d04a18ea5aea06ae4ba966e8b8eae9f8e09c638 Mon Sep 17 00:00:00 2001 From: Shakira Date: Tue, 18 Jun 2024 12:39:44 +0300 Subject: [PATCH 12/26] Update the checkbox selected command --- e2e-testing/cypress/functions/DataViewFilterFunctions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFilterFunctions.js index 82ecbafad..409709935 100644 --- a/e2e-testing/cypress/functions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFilterFunctions.js @@ -147,8 +147,8 @@ class DataViewFilterFunctions { // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('have.length.greaterThan', 0); //check that when parent elements are selected children elements are also selected cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); - cy.get('.mat-tree-node').eq(0).check().should('be.selected'); - cy.get(`[aria-level="2"]`).eq(0).check().should('be.selected'); + cy.get('.mat-tree-node').eq(0).should('be.selected'); + cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); // cy.get(DataViewLocators.childCategoryFilter).eq(0).should('be.selected'); } } From a2607f2fb2e41022a0532006e1d012ff9b76946e Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 10:12:08 +0300 Subject: [PATCH 13/26] Add additional steps for filter by categories --- .../components/filter-control/filter-control.component.html | 4 +++- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 6 ++++-- e2e-testing/cypress/locators/DataViewLocators.js | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/web-mzima-client/src/app/shared/components/filter-control/filter-control.component.html b/apps/web-mzima-client/src/app/shared/components/filter-control/filter-control.component.html index 5c3ed042d..71e6e1ac0 100644 --- a/apps/web-mzima-client/src/app/shared/components/filter-control/filter-control.component.html +++ b/apps/web-mzima-client/src/app/shared/components/filter-control/filter-control.component.html @@ -184,7 +184,9 @@ {{ title }} - {{ badge }} + {{ + badge + }} Date: Mon, 8 Jul 2024 10:37:05 +0300 Subject: [PATCH 14/26] Remove it block from the data-view file --- e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js | 5 +++++ e2e-testing/cypress/e2e/12-data-view/data-view.cy.js | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js b/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js index fd6a81ff9..748e4e667 100644 --- a/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js +++ b/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js @@ -20,4 +20,9 @@ describe('Automated Tests for Post Filters in Data View', () => { dataViewFilterFunctions.click_data_view_btn(); dataViewFilterFunctions.check_post_filter_by_status(); }); + + it('Filter posts by categories', () => { + dataViewFilterFunctions.click_data_view_btn(); + dataViewFilterFunctions.check_post_filter_by_categories(); + }); }); diff --git a/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js b/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js index 6b2cd621d..298e242ba 100644 --- a/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js +++ b/e2e-testing/cypress/e2e/12-data-view/data-view.cy.js @@ -19,9 +19,4 @@ describe('Automated Tests for Posts in the Data View', () => { postFunctions.complete_add_post_steps(); dataViewFunctions.verify_post_appears_for_user(); }); - - it('Filter posts by categories', () => { - dataViewFilterFunctions.click_data_view_btn(); - dataViewFilterFunctions.check_post_filter_by_categories(); - }); }); From 66b9f3598756edef270434ee543e18f7972d778e Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 11:19:37 +0300 Subject: [PATCH 15/26] Fix the failing tests --- .../DataViewFunctions/DataViewFilterFunctions.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 98035052e..993f969fa 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -147,11 +147,14 @@ class DataViewFilterFunctions { //check that drop-down on a parent and children are seen cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); cy.get('.mat-tree-node').eq(0).should('exist'); - cy.get(`[aria-level="2"]`).eq(0).should('exist'); + cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); - cy.get('.mat-tree-node').eq(0).should('be.selected'); - cy.get(`[aria-level="2"]`).eq(0).should('be.selected'); + cy.get('.mat-tree-node') + .eq(0) + .find('.mat-checkbox-input') + .click({ force: true }) + .should('be.selected'); + cy.get(`[aria-level="2"]`).should('be.selected'); //verify count shows how many categories are selected cy.get(DataViewLocators.selectedFilterCount).contains('3'); //verify count of posts is updated correctly From e3c08be162e3157ef149daace80d94fc62ecc870 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 11:29:26 +0300 Subject: [PATCH 16/26] Remove unnecessary custom attributes --- .../multilevel-selection.component.html | 6 +----- .../components/filter-control/filter-control.component.html | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html b/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html index b556c5a1c..6feac486e 100644 --- a/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html +++ b/apps/web-mzima-client/src/app/settings/surveys/multilevel-selection/multilevel-selection.component.html @@ -11,11 +11,7 @@ - + {{ node.name }} From 4eef9cb2c53082a3fedb106fdd99780389c1c808 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 12:07:47 +0300 Subject: [PATCH 17/26] Change click to check --- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 993f969fa..fb7376390 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -149,11 +149,7 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node') - .eq(0) - .find('.mat-checkbox-input') - .click({ force: true }) - .should('be.selected'); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').check().should('be.selected'); cy.get(`[aria-level="2"]`).should('be.selected'); //verify count shows how many categories are selected cy.get(DataViewLocators.selectedFilterCount).contains('3'); From adce02e900495ae1c5c0cd72775f4c0c4417a178 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 12:27:39 +0300 Subject: [PATCH 18/26] Add force true to check command --- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index fb7376390..45950f2ed 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -149,7 +149,11 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').check().should('be.selected'); + cy.get('.mat-tree-node') + .eq(0) + .find('.mat-checkbox-input') + .check({ force: true }) + .should('be.selected'); cy.get(`[aria-level="2"]`).should('be.selected'); //verify count shows how many categories are selected cy.get(DataViewLocators.selectedFilterCount).contains('3'); From 43271a94438488cc35f90d8dfb748fbf1fe56070 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 12:44:53 +0300 Subject: [PATCH 19/26] Fix failing tests --- .../DataViewFunctions/DataViewFilterFunctions.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 45950f2ed..c176353e2 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -149,12 +149,9 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node') - .eq(0) - .find('.mat-checkbox-input') - .check({ force: true }) - .should('be.selected'); - cy.get(`[aria-level="2"]`).should('be.selected'); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').check({ force: true }); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').should('be.selected'); + cy.get(`[aria-level="2"]`).eq(0).find('.mat-checkbox-input').should('be.selected'); //verify count shows how many categories are selected cy.get(DataViewLocators.selectedFilterCount).contains('3'); //verify count of posts is updated correctly From dd7dee446d39251a7b6f61f947555d821ab759a3 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 14:26:40 +0300 Subject: [PATCH 20/26] Fix failing tests --- .../DataViewFunctions/DataViewFilterFunctions.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index c176353e2..8c1596d74 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -149,9 +149,15 @@ class DataViewFilterFunctions { cy.get('.mat-tree-node').eq(0).should('exist'); cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').check({ force: true }); - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').should('be.selected'); - cy.get(`[aria-level="2"]`).eq(0).find('.mat-checkbox-input').should('be.selected'); + cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); + cy.get('.mat-tree-node') + .eq(0) + .find('.mat-checkbox-input') + .should('have.attr', 'aria-checked', true); + cy.get(`[aria-level="2"]`) + .eq(0) + .find('.mat-checkbox-input') + .should('have.attr', 'aria-checked', true); //verify count shows how many categories are selected cy.get(DataViewLocators.selectedFilterCount).contains('3'); //verify count of posts is updated correctly From 25fc7901ea2a2a52e5e4a5f7cbdfb24f88bb9423 Mon Sep 17 00:00:00 2001 From: Shakira Date: Mon, 8 Jul 2024 15:19:17 +0300 Subject: [PATCH 21/26] Add wait time --- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 8c1596d74..ca661f64c 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -150,6 +150,7 @@ class DataViewFilterFunctions { cy.get(`[aria-level="2"]`).should('exist'); //check that when parent elements are selected children elements are also selected cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); + cy.wait(2000); cy.get('.mat-tree-node') .eq(0) .find('.mat-checkbox-input') From 3f5303985e3277a97f56eea62efef39a8378c65b Mon Sep 17 00:00:00 2001 From: Walter Date: Tue, 23 Jul 2024 05:50:33 +0300 Subject: [PATCH 22/26] update filter by categories test --- .../DataViewFilterFunctions.js | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index ca661f64c..d31206f63 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -144,25 +144,34 @@ class DataViewFilterFunctions { cy.get(DataViewLocators.revealFiltersBtn).click(); //click categories filter button cy.get('button:contains("Categories")').click(); - //check that drop-down on a parent and children are seen - cy.get('.mat-tree-node').eq(0).find('.multilevelselect-filter__option__arrow').click(); - cy.get('.mat-tree-node').eq(0).should('exist'); - cy.get(`[aria-level="2"]`).should('exist'); - //check that when parent elements are selected children elements are also selected - cy.get('.mat-tree-node').eq(0).find('.mat-checkbox-input').click({ force: true }); - cy.wait(2000); - cy.get('.mat-tree-node') - .eq(0) - .find('.mat-checkbox-input') - .should('have.attr', 'aria-checked', true); - cy.get(`[aria-level="2"]`) - .eq(0) - .find('.mat-checkbox-input') - .should('have.attr', 'aria-checked', true); + //verify a child is not visible before revealing it + cy.contains('Needs Escalation').should('not.exist'); + //drop down to reveal children categories + cy.get(':nth-child(6) > .multilevelselect-filter__option__arrow > .mzima-button').click(); + //verify child now visible + cy.contains('Needs Escalation').should('be.visible'); + //click parent check mark + cy.contains('Escalation').click(); + //verify count shows how many categories are selected - cy.get(DataViewLocators.selectedFilterCount).contains('3'); + cy.get(DataViewLocators.selectedFilterCount).contains('4'); + + cy.contains('Categories').click({ force: true }); //verify count of posts is updated correctly - cy.get(DataViewLocators.feedPageResults).contains('Current results: 3 / 512'); + cy.get(DataViewLocators.feedPageResults).contains('Current results: 2/2'); + + //select another category + cy.get('button:contains("Categories")').click(); + cy.contains('Geolocation').click(); + //verify count shows how many categories are selected + cy.get(DataViewLocators.selectedFilterCount).contains('11'); + cy.contains('Categories').click({ force: true }); + //verify count of posts is updated correctly + cy.get(DataViewLocators.feedPageResults).contains('Current results: 20/55'); + + //clear all filters + cy.get(DataViewLocators.clearFiltersBtn).click(); + cy.get(DataViewLocators.feedPageResults).contains('Current results: 20/512'); } } From 5903fd4d2b283df9c0faadb7f51d630ec044795d Mon Sep 17 00:00:00 2001 From: Walter Date: Tue, 23 Jul 2024 06:07:53 +0300 Subject: [PATCH 23/26] update filter by categories test --- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index d31206f63..10189d92f 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -147,7 +147,7 @@ class DataViewFilterFunctions { //verify a child is not visible before revealing it cy.contains('Needs Escalation').should('not.exist'); //drop down to reveal children categories - cy.get(':nth-child(6) > .multilevelselect-filter__option__arrow > .mzima-button').click(); + cy.get(':nth-child(2) > .multilevelselect-filter__option__arrow > .mzima-button').click(); //verify child now visible cy.contains('Needs Escalation').should('be.visible'); //click parent check mark From 4ce62ba220569b06f05e8534ea873a6daaf84609 Mon Sep 17 00:00:00 2001 From: Walter Date: Wed, 24 Jul 2024 14:39:38 +0300 Subject: [PATCH 24/26] add check for API responses --- .../DataViewFunctions/DataViewFilterFunctions.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 10189d92f..46c6a6a25 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -5,8 +5,11 @@ const loginFunctions = new LoginFunctions(); class DataViewFilterFunctions { click_data_view_btn() { + cy.intercept('/api/v5/posts/*').as('posts'); cy.get(DataViewLocators.dataViewBtn).click(); + cy.url().should('include', '/feed'); + cy.wait('@posts').its('response.statusCode').should('eq', 200); } check_post_filter_by_survey() { @@ -150,6 +153,9 @@ class DataViewFilterFunctions { cy.get(':nth-child(2) > .multilevelselect-filter__option__arrow > .mzima-button').click(); //verify child now visible cy.contains('Needs Escalation').should('be.visible'); + + //add alias to check response from API + cy.intercept('/api/v5/posts/*').as('posts'); //click parent check mark cy.contains('Escalation').click(); @@ -157,6 +163,9 @@ class DataViewFilterFunctions { cy.get(DataViewLocators.selectedFilterCount).contains('4'); cy.contains('Categories').click({ force: true }); + + //wait for response from API before next step + cy.wait('@posts').its('response.statusCode').should('eq', 200); //verify count of posts is updated correctly cy.get(DataViewLocators.feedPageResults).contains('Current results: 2/2'); From 6d72972b27feaec8edf32d70763dd3bfa81004c8 Mon Sep 17 00:00:00 2001 From: Walter Date: Thu, 25 Jul 2024 13:31:42 +0300 Subject: [PATCH 25/26] silence test that filter by status --- e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js b/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js index 748e4e667..edfdb0ca5 100644 --- a/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js +++ b/e2e-testing/cypress/e2e/12-data-view/data-view-filters.cy.js @@ -16,7 +16,7 @@ describe('Automated Tests for Post Filters in Data View', () => { dataViewFilterFunctions.verify_count_on_results(); }); - it('Filter posts by status', () => { + it.skip('Filter posts by status', () => { dataViewFilterFunctions.click_data_view_btn(); dataViewFilterFunctions.check_post_filter_by_status(); }); From 3eb8c66a04db50b6ba178802e6859bed1ed19883 Mon Sep 17 00:00:00 2001 From: Walter Date: Thu, 25 Jul 2024 13:57:40 +0300 Subject: [PATCH 26/26] update API test endpoints --- .../functions/DataViewFunctions/DataViewFilterFunctions.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js index 46c6a6a25..9e733e2ab 100644 --- a/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js +++ b/e2e-testing/cypress/functions/DataViewFunctions/DataViewFilterFunctions.js @@ -5,11 +5,11 @@ const loginFunctions = new LoginFunctions(); class DataViewFilterFunctions { click_data_view_btn() { - cy.intercept('/api/v5/posts/*').as('posts'); + cy.intercept('/api/v5/posts?page=19').as('dataViewPage19'); cy.get(DataViewLocators.dataViewBtn).click(); cy.url().should('include', '/feed'); - cy.wait('@posts').its('response.statusCode').should('eq', 200); + cy.wait('@dataViewPage19').its('response.statusCode').should('eq', 200); } check_post_filter_by_survey() { @@ -155,7 +155,7 @@ class DataViewFilterFunctions { cy.contains('Needs Escalation').should('be.visible'); //add alias to check response from API - cy.intercept('/api/v5/posts/*').as('posts'); + cy.intercept('/api/v5/posts?page=1').as('posts'); //click parent check mark cy.contains('Escalation').click();