From c191fb51061e85271f1f59a2b7195467bb2e1d75 Mon Sep 17 00:00:00 2001 From: Lemmy Adams Date: Thu, 21 Mar 2024 17:39:40 +0000 Subject: [PATCH 1/9] Added basic e2e test --- test/e2e/pageLevelProgress.cy.js | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/e2e/pageLevelProgress.cy.js diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js new file mode 100644 index 0000000..733a959 --- /dev/null +++ b/test/e2e/pageLevelProgress.cy.js @@ -0,0 +1,41 @@ +describe('Page Level Progress', function () { + beforeEach(function () { + cy.getData() + cy.visit('/') + }); + + it('should display the page level progress bars correctly on the menu items', function () { + const isPageLevelProgressEnabled = this.data.course._pageLevelProgress._isEnabled + // Check if PLP is enabled. Check it's visible on menu tiles, check its visible on page view + if (isPageLevelProgressEnabled) { + const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled === true).length + cy.get('.pagelevelprogress__indicator').should('have.length', pagesCount) + } else { + cy.get('.pagelevelprogress__indicator').should('have.length', 0) + } + }); + + it('should display the page level progress bars correctly on the pages', function () { + const pageLevelProgress = this.data.course._pageLevelProgress + if (!pageLevelProgress._isEnabled) return + const pages = this.data.contentObjects + pages.forEach((page) => { + cy.visit(`/#/${page._id}`); + // Only check it appears correctly if it shows in the nav bar and its enabled on the page + if (page._pageLevelProgress._isEnabled === true && pageLevelProgress._isShownInNavigationBar) { + const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) + const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) + const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) + const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled === true) + cy.get('.pagelevelprogress__indicator').should('exist') + cy.get('button.nav__pagelevelprogress-btn').click() + // TODO: If its a random assessment more checks are necessary + if (page._classes !== 'assessment') { + cy.get('.pagelevelprogress__item').should('have.length', plpComponents.length) + } + } else { + cy.get('.pagelevelprogress__indicator').should('not.exist') + } + }) + }); +}); From a4d08ca5079fd94556a571cba2d1377dbfe52a55 Mon Sep 17 00:00:00 2001 From: Lemmy Adams Date: Fri, 22 Mar 2024 11:42:34 +0000 Subject: [PATCH 2/9] Cleanup --- test/e2e/pageLevelProgress.cy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index 733a959..fe406ed 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -6,12 +6,12 @@ describe('Page Level Progress', function () { it('should display the page level progress bars correctly on the menu items', function () { const isPageLevelProgressEnabled = this.data.course._pageLevelProgress._isEnabled - // Check if PLP is enabled. Check it's visible on menu tiles, check its visible on page view + // Check if PLP is enabled. Check it's visible on menu tiles if (isPageLevelProgressEnabled) { const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled === true).length cy.get('.pagelevelprogress__indicator').should('have.length', pagesCount) } else { - cy.get('.pagelevelprogress__indicator').should('have.length', 0) + cy.get('.pagelevelprogress__indicator').should('not.exist') } }); From 0ca9cc5725916d15a77aa4299dee0a2b64cc848d Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:19:22 +0000 Subject: [PATCH 3/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index fe406ed..490e0d4 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -5,7 +5,7 @@ describe('Page Level Progress', function () { }); it('should display the page level progress bars correctly on the menu items', function () { - const isPageLevelProgressEnabled = this.data.course._pageLevelProgress._isEnabled + const isPageLevelProgressEnabled = this.data.course._pageLevelProgress?._isEnabled // Check if PLP is enabled. Check it's visible on menu tiles if (isPageLevelProgressEnabled) { const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled === true).length From e76dd63ff90408fe0ce50462007dbf7364460987 Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:19:36 +0000 Subject: [PATCH 4/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index 490e0d4..9f45b09 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -22,7 +22,7 @@ describe('Page Level Progress', function () { pages.forEach((page) => { cy.visit(`/#/${page._id}`); // Only check it appears correctly if it shows in the nav bar and its enabled on the page - if (page._pageLevelProgress._isEnabled === true && pageLevelProgress._isShownInNavigationBar) { + if (page._pageLevelProgress._isEnabled && pageLevelProgress._isShownInNavigationBar) { const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) From f50c7d3e5308b6b261e2cede85547a41d1316309 Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:19:42 +0000 Subject: [PATCH 5/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index 9f45b09..1f26c33 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -26,7 +26,7 @@ describe('Page Level Progress', function () { const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) - const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled === true) + const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled) cy.get('.pagelevelprogress__indicator').should('exist') cy.get('button.nav__pagelevelprogress-btn').click() // TODO: If its a random assessment more checks are necessary From d286c2a45271de1116ef7d69d232640412dc45f5 Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:20:02 +0000 Subject: [PATCH 6/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index 1f26c33..6021734 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -8,7 +8,7 @@ describe('Page Level Progress', function () { const isPageLevelProgressEnabled = this.data.course._pageLevelProgress?._isEnabled // Check if PLP is enabled. Check it's visible on menu tiles if (isPageLevelProgressEnabled) { - const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled === true).length + const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled).length cy.get('.pagelevelprogress__indicator').should('have.length', pagesCount) } else { cy.get('.pagelevelprogress__indicator').should('not.exist') From d3f264d9edbca2e8dfd4c3755be2ea5db669d7f5 Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:41:54 +0000 Subject: [PATCH 7/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index 6021734..f9dad3c 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -22,19 +22,20 @@ describe('Page Level Progress', function () { pages.forEach((page) => { cy.visit(`/#/${page._id}`); // Only check it appears correctly if it shows in the nav bar and its enabled on the page - if (page._pageLevelProgress._isEnabled && pageLevelProgress._isShownInNavigationBar) { - const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) - const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) - const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) - const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled) - cy.get('.pagelevelprogress__indicator').should('exist') - cy.get('button.nav__pagelevelprogress-btn').click() - // TODO: If its a random assessment more checks are necessary - if (page._classes !== 'assessment') { - cy.get('.pagelevelprogress__item').should('have.length', plpComponents.length) - } - } else { + if (!page._pageLevelProgress?._isEnabled || pageLevelProgress._isShownInNavigationBar) { cy.get('.pagelevelprogress__indicator').should('not.exist') + return + } + + const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) + const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) + const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) + const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled) + cy.get('.pagelevelprogress__indicator').should('exist') + cy.get('button.nav__pagelevelprogress-btn').click() + // TODO: If its a random assessment more checks are necessary + if (page._classes !== 'assessment') { + cy.get('.pagelevelprogress__item').should('have.length', plpComponents.length) } }) }); From f3dca9a29faf07fa921b163e05ea59a1deb5b72a Mon Sep 17 00:00:00 2001 From: Lemmy Adams <103187526+lemmyadams@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:41:59 +0000 Subject: [PATCH 8/9] Update test/e2e/pageLevelProgress.cy.js Co-authored-by: Cahir O'Doherty <41006337+cahirodoherty-learningpool@users.noreply.github.com> --- test/e2e/pageLevelProgress.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index f9dad3c..ad1e67f 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -17,7 +17,7 @@ describe('Page Level Progress', function () { it('should display the page level progress bars correctly on the pages', function () { const pageLevelProgress = this.data.course._pageLevelProgress - if (!pageLevelProgress._isEnabled) return + if (!pageLevelProgress?._isEnabled) return const pages = this.data.contentObjects pages.forEach((page) => { cy.visit(`/#/${page._id}`); From b3029bd95bc13ed358b5d1d65118da91afcbc708 Mon Sep 17 00:00:00 2001 From: Lemmy Adams Date: Mon, 15 Apr 2024 11:47:31 +0100 Subject: [PATCH 9/9] Lint fixes --- test/e2e/pageLevelProgress.cy.js | 46 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/test/e2e/pageLevelProgress.cy.js b/test/e2e/pageLevelProgress.cy.js index ad1e67f..9f8daa7 100644 --- a/test/e2e/pageLevelProgress.cy.js +++ b/test/e2e/pageLevelProgress.cy.js @@ -1,42 +1,42 @@ describe('Page Level Progress', function () { beforeEach(function () { - cy.getData() - cy.visit('/') + cy.getData(); + cy.visit('/'); }); it('should display the page level progress bars correctly on the menu items', function () { - const isPageLevelProgressEnabled = this.data.course._pageLevelProgress?._isEnabled + const isPageLevelProgressEnabled = this.data.course._pageLevelProgress?._isEnabled; // Check if PLP is enabled. Check it's visible on menu tiles if (isPageLevelProgressEnabled) { - const pagesCount = this.data.contentObjects.filter((page) => page._pageLevelProgress._isEnabled).length - cy.get('.pagelevelprogress__indicator').should('have.length', pagesCount) + const pagesCount = this.data.contentObjects.filter(page => page._pageLevelProgress._isEnabled).length; + cy.get('.pagelevelprogress__indicator').should('have.length', pagesCount); } else { - cy.get('.pagelevelprogress__indicator').should('not.exist') - } + cy.get('.pagelevelprogress__indicator').should('not.exist'); + }; }); it('should display the page level progress bars correctly on the pages', function () { - const pageLevelProgress = this.data.course._pageLevelProgress - if (!pageLevelProgress?._isEnabled) return - const pages = this.data.contentObjects - pages.forEach((page) => { + const pageLevelProgress = this.data.course._pageLevelProgress; + if (!pageLevelProgress?._isEnabled) return; + const pages = this.data.contentObjects; + pages.forEach(page => { cy.visit(`/#/${page._id}`); // Only check it appears correctly if it shows in the nav bar and its enabled on the page if (!page._pageLevelProgress?._isEnabled || pageLevelProgress._isShownInNavigationBar) { - cy.get('.pagelevelprogress__indicator').should('not.exist') - return - } + cy.get('.pagelevelprogress__indicator').should('not.exist'); + return; + }; - const articlesOnPage = this.data.articles.filter((article) => article._parentId === page._id).map(article => article._id) - const blocksOnPage = this.data.blocks.filter((block) => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id) - const componentsOnPage = this.data.components.filter((component) => blocksOnPage.includes(component._parentId)) - const plpComponents = componentsOnPage.filter((component) => component._pageLevelProgress?._isEnabled) - cy.get('.pagelevelprogress__indicator').should('exist') - cy.get('button.nav__pagelevelprogress-btn').click() + const articlesOnPage = this.data.articles.filter(article => article._parentId === page._id).map(article => article._id); + const blocksOnPage = this.data.blocks.filter(block => articlesOnPage.includes(block._parentId)).map(blocks => blocks._id); + const componentsOnPage = this.data.components.filter(component => blocksOnPage.includes(component._parentId)); + const plpComponents = componentsOnPage.filter(component => component._pageLevelProgress?._isEnabled); + cy.get('.pagelevelprogress__indicator').should('exist'); + cy.get('button.nav__pagelevelprogress-btn').click(); // TODO: If its a random assessment more checks are necessary if (page._classes !== 'assessment') { - cy.get('.pagelevelprogress__item').should('have.length', plpComponents.length) - } - }) + cy.get('.pagelevelprogress__item').should('have.length', plpComponents.length); + }; + }); }); });