From 7f2cdd66dbb70f6521e3e7ebd097e477f6bb208e Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Thu, 10 Dec 2020 16:06:50 +0100
Subject: [PATCH] feat: checking receptor data

---
 .../browsingForDatasets.prod.e2e-spec.js      | 23 ++++++--
 e2e/util/selenium/base.js                     | 58 +++++++++++--------
 .../sideNavView/sDsSideNavView.component.ts   |  4 +-
 .../sideNavView/sDsSideNavView.template.html  |  1 +
 4 files changed, 55 insertions(+), 31 deletions(-)

diff --git a/e2e/src/advanced/browsingForDatasets.prod.e2e-spec.js b/e2e/src/advanced/browsingForDatasets.prod.e2e-spec.js
index 99467ad99..56d74d804 100644
--- a/e2e/src/advanced/browsingForDatasets.prod.e2e-spec.js
+++ b/e2e/src/advanced/browsingForDatasets.prod.e2e-spec.js
@@ -2,6 +2,10 @@ const { AtlasPage } = require('../util')
 const { CONST, ARIA_LABELS } = require('../../../common/constants')
 const { retry } = require('../../../common/util')
 
+const {
+  RECORDING_FLAG
+} = process.env
+
 const atlasName = `Multilevel Human Atlas`
 
 const templates = [
@@ -83,7 +87,11 @@ describe('> dataset browser', () => {
       })
 
       afterEach(async () => {
-        
+        try {
+          await iavPage.click(`[aria-label="${ARIA_LABELS.CLOSE}"]`)
+        } catch (e) {
+
+        }
       })
       for (const [ area, ...rest ] of newShouldHaveReceptor) {
         it(`> receptor data ${area} should be able to be found`, async () => {
@@ -99,10 +107,17 @@ describe('> dataset browser', () => {
           })
           await iavPage.wait(2000)
           await iavPage.waitUntilAllChunksLoaded()
+          await iavPage.dismissModal()
           const datasets = await iavPage.getVisibleDatasets()
-          const filteredDs = datasets.filter(ds => ds.toLowerCase().indexOf('receptor') >= 0)
-          expect(filteredDs.length).toBeGreaterThan(0)
-          
+          const receptorDsIdx = datasets.findIndex(ds => ds.toLowerCase().indexOf('receptor') >= 0)
+          expect(receptorDsIdx).toBeGreaterThanOrEqual(0)
+
+          if (RECORDING_FLAG) {
+            await iavPage.clickNthDataset(receptorDsIdx)
+            await iavPage.wait(1000)
+            await iavPage.toggleExpansionPanelState(/receptor/i, true)
+            await iavPage.wait(5000)
+          }
         })
       }
     })
diff --git a/e2e/util/selenium/base.js b/e2e/util/selenium/base.js
index ba3859b81..ffc990ab1 100644
--- a/e2e/util/selenium/base.js
+++ b/e2e/util/selenium/base.js
@@ -47,43 +47,51 @@ class WdBase{
     return this._browser.driver
   }
 
-  // without image header
-  // output as b64 png
-  async takeScreenshot(cssSelector){
-    
-    if(cssSelector) {
-      await this._browser.executeAsyncScript(async () => {
-        const cb = arguments[arguments.length - 1]
-        const moduleUrl = arguments[0]
-        const cssSelector = arguments[1]
+  async highlightElement(cssSelector) {
+
+    await this._browser.executeAsyncScript(async () => {
+      const cb = arguments[arguments.length - 1]
+      const moduleUrl = arguments[0]
+      const cssSelector = arguments[1]
+
+      const el = document.querySelector(cssSelector)
+      if (!el) throw new Error(`css selector not fetching anything`)
+      import(moduleUrl)
+        .then(async m => {
+          m.citruslight(el)
+          cb()
+        })
+    }, CITRUS_LIGHT_URL, cssSelector)
 
-        const el = document.querySelector(cssSelector)
-        if (!el) throw new Error(`css selector not fetching anything`)
-        import(moduleUrl)
-          .then(async m => {
-            m.citruslight(el)
-            cb()
-          })
-      }, CITRUS_LIGHT_URL, cssSelector)
-    }
-    
     await this.wait(1000)
-    const result = await this._browser.takeScreenshot()
 
-    if (cssSelector) {
+    return async () => {
       await this._browser.executeAsyncScript(async () => {
         const cb = arguments[arguments.length - 1]
         const moduleUrl = arguments[0]
-        const cssSelector = arguments[1]
 
-        const el = document.querySelector(cssSelector)
-        if (!el) throw new Error(`css selector not fetching anything`)
         import(moduleUrl)
           .then(async m => {
             m.clearAll()
             cb()
           })
-      }, CITRUS_LIGHT_URL, cssSelector)
+      }, CITRUS_LIGHT_URL)
+    }
+  }
+
+  // without image header
+  // output as b64 png
+  async takeScreenshot(cssSelector){
+    
+    let cleanUp
+    if(cssSelector) {
+      cleanUp= await this.highlightElement(cssSelector)
+    }
+    
+    const result = await this._browser.takeScreenshot()
+
+    if (cleanUp) {
+      await cleanUp()
     }
     
     await this.wait(1000)
diff --git a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.component.ts b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.component.ts
index d3de2c8a8..fe8eb871c 100644
--- a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.component.ts
+++ b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.component.ts
@@ -5,7 +5,7 @@ import { REGION_OF_INTEREST, TRegionOfInterest } from "src/util/interfaces";
 import { DatabrowserService } from "../../databrowser.service";
 import { KgSingleDatasetService } from "../../kgSingleDatasetService.service";
 import { SingleDatasetBase } from "../singleDataset.base";
-import { CONST } from 'common/constants'
+import { CONST, ARIA_LABELS } from 'common/constants'
 
 @Component({
   selector: 'single-dataset-sidenav-view',
@@ -17,7 +17,7 @@ import { CONST } from 'common/constants'
 })
 
 export class SingleDatasetSideNavView extends SingleDatasetBase implements OnChanges, OnDestroy{
-
+  public BACK_BTN_ARIA_TXT = ARIA_LABELS.CLOSE
   @Output()
   clear: EventEmitter<null> = new EventEmitter()
 
diff --git a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
index 7ad003e91..78daaefed 100644
--- a/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
+++ b/src/ui/databrowserModule/singleDataset/sideNavView/sDsSideNavView.template.html
@@ -1,4 +1,5 @@
 <button mat-button
+  [attr.aria-label]="BACK_BTN_ARIA_TXT"
   class="position-absolute z-index-10 m-2"
   (click)="clear.emit()">
   <i class="fas fa-chevron-left"></i>
-- 
GitLab