From bf776b5baf4836c1740381e093e51bea97526c97 Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Fri, 13 Mar 2020 11:02:26 +0100 Subject: [PATCH] chore: add e2e tests for additional layer control --- e2e/src/advanced/nonAtlasImages.e2e-spec.js | 80 ++++++++++++++++++- e2e/src/util.js | 32 ++++++++ .../searchSideNav/searchSideNav.component.ts | 3 +- .../searchSideNav/searchSideNav.template.html | 1 + 4 files changed, 114 insertions(+), 2 deletions(-) diff --git a/e2e/src/advanced/nonAtlasImages.e2e-spec.js b/e2e/src/advanced/nonAtlasImages.e2e-spec.js index b88b2c624..d50b98b69 100644 --- a/e2e/src/advanced/nonAtlasImages.e2e-spec.js +++ b/e2e/src/advanced/nonAtlasImages.e2e-spec.js @@ -10,7 +10,7 @@ describe('> non-atlas images', () => { describe('> standalone volumes', () => { // TODO investigates why it occassionally fails - it('> loads standalone volumes when set', async () => { + it('> loads standalone volumes when set (fails sometimes. Just rerun if it does.)', async () => { const searchParam = new URLSearchParams() searchParam.set('standaloneVolumes', '["precomputed://https://object.cscs.ch/v1/AUTH_08c08f9f119744cbbf77e216988da3eb/imgsvc-46d9d64f-bdac-418e-a41b-b7f805068c64"]') await iavPage.goto(`/?${searchParam.toString()}`, { interceptHttp: true, doNotAutomate: true }) @@ -144,4 +144,82 @@ describe('> non-atlas images', () => { ) }) }) + + describe('> controls for non atlas volumes', () => { + it('if no additional volume is being shown, additional volume control is not visible', async () => { + const searchParam = new URLSearchParams() + searchParam.set('templateSelected', 'MNI Colin 27') + searchParam.set('parcellationSelected', 'JuBrain Cytoarchitectonic Atlas') + + const previewingDatasetFiles = [ + { + "datasetId":"minds/core/dataset/v1.0.0/b08a7dbc-7c75-4ce7-905b-690b2b1e8957", + "filename":"Overlay of data modalities" + } + ] + searchParam.set('previewingDatasetFiles', JSON.stringify(previewingDatasetFiles)) + + await iavPage.goto(`/?${searchParam.toString()}`) + await iavPage.wait(2000) + + const additionalLayerControlIsShown = await iavPage.additionalLayerControlIsVisible() + + expect(additionalLayerControlIsShown).toEqual(false) + + }) + + it('if additonal volumes are being shown, additional volume control is visible', async () => { + + const searchParam = new URLSearchParams() + searchParam.set('templateSelected', 'Big Brain (Histology)') + searchParam.set('parcellationSelected', 'Grey/White matter') + + const previewingDatasetFiles = [ + { + "datasetId":"minds/core/dataset/v1.0.0/b08a7dbc-7c75-4ce7-905b-690b2b1e8957", + "filename":"Overlay of data modalities" + } + ] + searchParam.set('previewingDatasetFiles', JSON.stringify(previewingDatasetFiles)) + + await iavPage.goto(`/?${searchParam.toString()}`) + await iavPage.wait(2000) + + const additionalLayerCtrlIsVisible = await iavPage.additionalLayerControlIsVisible() + expect(additionalLayerCtrlIsVisible).toEqual(true) + + }) + + it('if additional volumes are being shown, it can be toggled', async () => { + + const searchParam = new URLSearchParams() + searchParam.set('templateSelected', 'Big Brain (Histology)') + searchParam.set('parcellationSelected', 'Grey/White matter') + + const previewingDatasetFiles = [ + { + "datasetId":"minds/core/dataset/v1.0.0/b08a7dbc-7c75-4ce7-905b-690b2b1e8957", + "filename":"Overlay of data modalities" + } + ] + searchParam.set('previewingDatasetFiles', JSON.stringify(previewingDatasetFiles)) + + await iavPage.goto(`/?${searchParam.toString()}`) + await iavPage.wait(2000) + + const additionalLayerCtrlIsExpanded = await iavPage.additionalLayerControlIsExpanded() + expect(additionalLayerCtrlIsExpanded).toEqual(true) + + await iavPage.toggleLayerControl() + + const additionalLayerCtrlIsExpanded2 = await iavPage.additionalLayerControlIsExpanded() + expect(additionalLayerCtrlIsExpanded2).toEqual(false) + + await iavPage.toggleLayerControl() + + const additionalLayerCtrlIsExpanded3 = await iavPage.additionalLayerControlIsExpanded() + expect(additionalLayerCtrlIsExpanded3).toEqual(true) + + }) + }) }) diff --git a/e2e/src/util.js b/e2e/src/util.js index f79d341a9..281cdcfe5 100644 --- a/e2e/src/util.js +++ b/e2e/src/util.js @@ -241,6 +241,38 @@ class WdLayoutPage extends WdBase{ return text } + + _getAdditionalLayerControl(){ + return this._browser.findElement( + By.css('[aria-label="Additional volumes control"]') + ) + } + + async additionalLayerControlIsVisible(){ + try { + return await this._getAdditionalLayerControl().isDisplayed() + } catch (e) { + return false + } + } + + // will throw if additional layer contorl is not visible + additionalLayerControlIsExpanded() { + return this._getAdditionalLayerControl() + .findElement( + By.tagName('layer-browser') + ) + .isDisplayed() + } + + // will throw if additional layer contorl is not visible + async toggleLayerControl(){ + return this._getAdditionalLayerControl() + .findElement( + By.css('[aria-label="Toggle expansion state of additional layer browser"]') + ) + .click() + } } class WdIavPage extends WdLayoutPage{ diff --git a/src/ui/searchSideNav/searchSideNav.component.ts b/src/ui/searchSideNav/searchSideNav.component.ts index a2934c886..f514928bd 100644 --- a/src/ui/searchSideNav/searchSideNav.component.ts +++ b/src/ui/searchSideNav/searchSideNav.component.ts @@ -102,10 +102,11 @@ export class SearchSideNav implements OnDestroy { type: CLOSE_SIDE_PANEL, }) - const dialogToOpen = this.layerBrowserTmpl || LayerBrowser + const dialogToOpen = this.layerBrowserTmpl this.layerBrowserDialogRef = this.dialog.open(dialogToOpen, { hasBackdrop: false, autoFocus: false, + ariaLabel: 'Additional volumes control', panelClass: [ 'layerBrowserContainer', ], diff --git a/src/ui/searchSideNav/searchSideNav.template.html b/src/ui/searchSideNav/searchSideNav.template.html index ff439458b..765869826 100644 --- a/src/ui/searchSideNav/searchSideNav.template.html +++ b/src/ui/searchSideNav/searchSideNav.template.html @@ -83,6 +83,7 @@ <div class="d-flex justify-content-center position-static h-0 mt-4"> <button mat-mini-fab + aria-label="Toggle expansion state of additional layer browser" [matBadge]="showLayerBrowser ? null : (layerBrowser.nonBaseNgLayers$ | async).length" class="position-absolute layerBrowserToggleBtn" matTooltip="Toggle the visiblity of the additional layer browser" -- GitLab