Skip to content

Commit

Permalink
Merge pull request #9 from BlueBrain/feature2
Browse files Browse the repository at this point in the history
Feature2
  • Loading branch information
ayimaok authored Dec 9, 2024
2 parents dc086cc + 794a6e9 commit 8bb92a3
Show file tree
Hide file tree
Showing 14 changed files with 460 additions and 323 deletions.
31 changes: 0 additions & 31 deletions locators/explore_interactive_locators.py

This file was deleted.

17 changes: 17 additions & 0 deletions locators/explore_model_locators.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2024 Blue Brain Project/EPFL
#
# SPDX-License-Identifier: Apache-2.0

from selenium.webdriver.common.by import By


class ExploreModelPageLocators:
EMODEL_TAB = (By.XPATH, "//li[@title='E-model']")
ME_MODEL_TAB = (By.XPATH, "//li[@title='ME-model']")
CLOSE_BRAIN_REGION_PANEL_BTN = (By.XPATH, "(//button[starts-with(@class, 'ant-btn')]/span["
"@class='ant-btn-icon'])[1]")
BR_SEARCH_REGION_SEARCH_FIELD = (By.XPATH, "//div[@class='ant-select-selector']")
BR_SEARCH_FIELD_TYPE = (By.XPATH, "//span[@class='ant-select-selection-search']")
BRAIN_REGION_PANEL = (By.XPATH, "(//div[@class='flex h-screen flex-col bg-primary-8'])[1]")
SELECTED_BRAIN_REGION = (By.XPATH, "//h1[@title='Isocortex']/span[text()='Isocortex']")
SEARCH_REGION = (By.XPATH, "//input[@class='ant-select-selection-search-input']")
15 changes: 8 additions & 7 deletions locators/explore_ndensity_locators.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,20 @@ class ExploreNDensityPageLocators:
"density')]")
LV_THUMBNAIL = (By.XPATH, "//img[starts-with(@alt,'Morphology preview')]")
LV_BRAIN_REGION = (By.XPATH, "//span[@class='ant-table-column-title']//div[text()='Brain "
"Region']")
LV_MTYPE = (By.XPATH, "//th[@data-testid='column-header']//div[text()='M-Type']")
LV_ETYPE = (By.XPATH, "//th[@data-testid='column-header']//div[text()='E-Type']")
"region']")
LV_MTYPE = (By.XPATH, "//th[@data-testid='column-header']//div[text()='M-type']")
LV_ETYPE = (By.XPATH, "//th[@data-testid='column-header']//div[text()='E-type']")
LV_DENSITY = (By.XPATH, "//th[@data-testid='column-header']//div[contains(text(),'Density')]")
LV_NMEASUREMENTS = (By.XPATH, "//th[@data-testid='column-header']//div[contains(text(),'N° of "
"Measurements')]")
"measurements')]")
LV_NAME = (By.XPATH, "//th[@data-testid='column-header']//div[text()='Name']")
LV_SPECIES = (By.XPATH, "//th[@data-testid='column-header']//div[text()='Species']")
LV_AGE = (By.XPATH, "//span[@class='ant-table-column-title']//div[contains(text(),'Age')]")
LV_CONTRIBUTORS = (By.XPATH, "//th[@data-testid='column-header']//div[text()='Contributors']")
LV_REGISTRATION_DATE = (By.XPATH, "//th[@data-testid='column-header']//div[text()='Creation "
"Date']")
LV_FILTER_MTYPE = (By.XPATH, "//span[text()='M-Type']")
LV_REGISTRATION_DATE = (By.XPATH, "//th[@data-testid='column-header']//div[text("
")='Registration "
"date']")
LV_FILTER_MTYPE = (By.XPATH, "//span[text()='M-type']")
LV_BR_ROW1 = (By.XPATH, "(//td[starts-with(@class, 'ant-table-cell')])[13]")
DV_DESC_TITLE = (By.XPATH, "//div[@class='uppercase text-neutral-4' and text()='Description']")
DV_CONTRIBUTORS_TITLE = (By.XPATH, "//div[@class='uppercase text-neutral-4' and text("
Expand Down
30 changes: 30 additions & 0 deletions locators/explore_page_locators.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class ExplorePageLocators:
CEREBRAL_CORTEX_TITLE = (By.XPATH, "//span[@title='Cerebral cortex']")
CEREBRUM_BTN = (By.XPATH, "(//button[@type='button' and @aria-expanded='false'])[3]")
COUNT_SWITCH = (By.CSS_SELECTOR, "button[type='button'][role='switch'][aria-checked='false']")
DATA_PANEL = (By.CSS_SELECTOR, "div[id='statistic-panel']")
EXPERIMENTAL_DATA_BTN = (By.XPATH, "//button[text()='Experimental data']")
EXPLORE_LINK1 = (By.XPATH, "//a[@href='/mmb-beta/explore/simulation-campaigns']//h1[text("
")='Brain & cells annotations']")
Expand All @@ -27,11 +28,33 @@ class ExplorePageLocators:
INTERACTIVE_EXPLORATION = (By.XPATH, "//h2[text()='Interactive exploration']")
LITERATURE = (By.XPATH, "//button[text()='Literature']")
LITERATURE_LINK = (By.ID, "#explore-navigation-/explore/literature")
LITERATURE_MORPHOLOGY_TAB = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/literature"
"/morphology']")
LITERATURE_EPHYS_TAB = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/literature"
"/electrophysiology']")
LITERATURE_NDENSITY_TAB = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/literature"
"/neuron-density']")
LITERATURE_BDENSITY_TAB = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/literature"
"/bouton-density']")
LITERATURE_SYNAPSES_TAB = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/literature"
"/synapse-per-connection']")
MODEL_DATA_BTN = (By.XPATH, "//button[text()='Model data']")
MORPHOLOGY_NRECORDS = (By.XPATH, "//a[@data-testid='experiment-dataset"
"-ExperimentalNeuronMorphology']//span[@class='mr-2 "
"font-light']")
NEURONS_PANEL = (By.CSS_SELECTOR, "div[id='neurons-panel']")
NEURONS_PANEL_MTYPE = (By.XPATH, "(//div[@data-state='closed' and "
"@data-orientation='vertical' and "
"starts-with(@data-tree-id,'http://uri')])[1]")
NEURONS_PANEL_GRID_MTYPES = (By.CSS_SELECTOR, "div.relative.ml-4.last\\:mb-5")
NEURONS_PANEL_MTYPE_BTN = (By.XPATH, "(//div[starts-with(@class,"
"'secondary-scrollbar')]//button[@type='button' and "
"starts-with(@class,'accordion-trigger') and "
"@aria-expanded='false' and "
"@data-orientation='vertical'])[1]")
NEURONS_PANEL_ETYPES_TITLE = (By.XPATH, "//h6[starts-with(@class, 'ml-4 text-sm') and text("
")='E-TYPES']")
NEURONS_PANEL_ISOCORTEX_MTYPE = (By.XPATH, "//div[text()='L6_TPC:C']")
NEURON_DENSITY = (By.XPATH, "//a[@data-testid='experiment-dataset-ExperimentalNeuronDensity' "
"and @href='/app/explore/interactive/experimental/neuron-density']")
NEURON_DENSITY_NRECORDS = (By.XPATH, "//a[@data-testid='experiment-dataset"
Expand All @@ -47,6 +70,9 @@ class ExplorePageLocators:
NEURON_MORPHOLOGY = (By.XPATH, "//a[@data-testid='experiment-dataset"
"-ExperimentalNeuronMorphology' and "
"@href='/app/explore/interactive/experimental/morphology']")
PANEL_EMODEL = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/model/e-model']")
PANEL_MEMODEL = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/model/me-model']")
PANEL_SYNAPTOME = (By.CSS_SELECTOR, "a[href='/app/explore/interactive/model/synaptome']")
SELECTED_BRAIN_REGION = (By.XPATH, "//h1[@title='Isocortex']/span[text()='Isocortex']")
SEARCH_REGION = (By.XPATH, "//input[@class='ant-select-selection-search-input']")
SYNAPSE_PER_CONNECTION = (By.XPATH, "//a[@data-testid='experiment-dataset"
Expand All @@ -56,3 +82,7 @@ class ExplorePageLocators:
SYNAPSE_PER_CONNECTION_NRECORDS = (By.XPATH, "//a[@data-testid='experiment-dataset"
"-ExperimentalSynapsePerConnection']//span["
"@class='mr-2 font-light']")
TOTAL_COUNT_DENSITY = (By.XPATH, "//h2[@data-testid='total-count-or-density']")
TOTAL_COUNT_N = (By.XPATH, "//small[@class='text-base font-normal text-gray-300']")
TOTAL_COUNT_SWITCH = (By.XPATH, "//button[@type='button' and @role='switch' and "
"@title='density or count' and @aria-checked='false']")
76 changes: 0 additions & 76 deletions pages/explore_interactive.py

This file was deleted.

39 changes: 39 additions & 0 deletions pages/explore_model_page.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Copyright (c) 2024 Blue Brain Project/EPFL
#
# SPDX-License-Identifier: Apache-2.0
import time

from selenium.common import ElementNotVisibleException, TimeoutException, \
StaleElementReferenceException

from pages.explore_page import ExplorePage
from locators.explore_model_locators import ExploreModelPageLocators
from util.util_links_checker import LinkChecker
from util.util_scraper import UrlScraper


class ExploreModelDataPage(ExplorePage, LinkChecker):
def __init__(self, browser, wait, logger):
super().__init__(browser, wait)
self.home_page = ExplorePage(browser, wait)
self.url_scraper = UrlScraper()
self.logger = logger

def go_to_explore_model_page(self):
self.go_to_page("/explore/interactive/model/e-model")
print("pages/explore/model data: ", self.browser.current_url)

def find_emodel_tab(self):
return self.find_element(ExploreModelPageLocators.EMODEL_TAB)

def find_brain_region_search_field(self, timeout=20):
return self.find_element(ExploreModelPageLocators.SEARCH_REGION, timeout=timeout)

def find_selected_brain_region_title(self):
return self.find_element(ExploreModelPageLocators.SELECTED_BRAIN_REGION)

def find_brain_region_panel(self):
return self.find_element(ExploreModelPageLocators.BRAIN_REGION_PANEL)

def brain_region_panel_close_btn(self):
return self.find_element(ExploreModelPageLocators.CLOSE_BRAIN_REGION_PANEL_BTN)
35 changes: 19 additions & 16 deletions pages/explore_ndensity.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,20 @@ def go_to_explore_neuron_density_page(self):
def find_load_more_btn(self):
return self.find_element(ExploreNDensityPageLocators.LOAD_MORE_BUTTON)

# def find_table_rows(self):
# return find_all_elements(self.wait, ExploreNDensityPageLocators.TABLE_ROWS)
#
# def validate_empty_cells_in_contributors(self):
# empty_cells = self.find_empty_cells_in_contributors_column()
# for cell_index, cell in empty_cells:
# error_message = f'Error: Empty field in cell {cell_index}'
# print(error_message)
#
# def perform_full_validation(self, max_load_more_clicks=5):
# for _ in range(max_load_more_clicks):
# self.validate_empty_cells_in_contributors()
# load_more_button = self.find_load_more_btn()
# load_more_button.click()
def find_table_rows(self):
return self.wait.find_all_elements(ExploreNDensityPageLocators.TABLE_ROWS)

def validate_empty_cells_in_contributors(self):
empty_cells = self.find_empty_cells_in_contributors_column()
for cell_index, cell in empty_cells:
error_message = f'Error: Empty field in cell {cell_index}'
print(error_message)

def perform_full_validation(self, max_load_more_clicks=5):
for _ in range(max_load_more_clicks):
self.validate_empty_cells_in_contributors()
load_more_button = self.find_load_more_btn()
load_more_button.click()

def find_ndensity_tab(self):
return self.find_element(ExploreNDensityPageLocators.NDENSITY_TAB)
Expand All @@ -56,6 +56,9 @@ def lv_br_row1(self):
def find_dv_name(self):
return self.element_visibility(ExploreNDensityPageLocators.DV_NAME)

def find_cerebrum_brp(self):
return self.find_element(ExploreNDensityPageLocators.BRP_CEREBRUM)
def find_cerebrum_brp(self, timeout=30):
return self.find_element(ExploreNDensityPageLocators.BRP_CEREBRUM, timeout=timeout)

def find_registration_date(self):
return self.find_element(ExploreNDensityPageLocators.LV_REGISTRATION_DATE)

59 changes: 58 additions & 1 deletion pages/explore_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,61 @@ def find_brain_region_search_field(self, timeout=20):
return self.find_element(ExplorePageLocators.SEARCH_REGION, timeout=timeout)

def find_selected_brain_region_title(self):
return self.find_element(ExplorePageLocators.SELECTED_BRAIN_REGION)
return self.find_element(ExplorePageLocators.SELECTED_BRAIN_REGION)

def find_data_panel(self):
return self.find_element(ExplorePageLocators.DATA_PANEL)

def find_panel_emodel(self):
return self.find_element(ExplorePageLocators.PANEL_EMODEL)

def find_panel_memodel(self):
return self.find_element(ExplorePageLocators.PANEL_MEMODEL)

def find_panel_synaptome(self):
return self.find_element(ExplorePageLocators.PANEL_SYNAPTOME)

def find_lit_morphology_tab(self):
return self.find_element(ExplorePageLocators.LITERATURE_MORPHOLOGY_TAB)

def find_lit_ephys_tab(self):
return self.find_element(ExplorePageLocators.LITERATURE_EPHYS_TAB)

def find_lit_ndensity_tab(self):
return self.find_element(ExplorePageLocators.LITERATURE_NDENSITY_TAB)

def find_lit_bdensity_tab(self):
return self.find_element(ExplorePageLocators.LITERATURE_BDENSITY_TAB)

def find_lit_synapses_tab(self):
return self.find_element(ExplorePageLocators.LITERATURE_SYNAPSES_TAB)

def find_literature_panel_data(self, lit_data_locators):
result = []
for locator in lit_data_locators:
result.extend(self.find_all_elements(locator))
return result

def find_total_count_density(self):
return self.find_element(ExplorePageLocators.TOTAL_COUNT_DENSITY)

def find_total_count_n(self):
return self.find_element(ExplorePageLocators.TOTAL_COUNT_N)

def find_total_count_switch(self):
return self.find_element(ExplorePageLocators.TOTAL_COUNT_SWITCH)

def find_panel_mtype(self):
return self.find_element(ExplorePageLocators.NEURONS_PANEL_MTYPE)

def list_of_neurons_panel(self):
return self.find_all_elements(ExplorePageLocators.NEURONS_PANEL_GRID_MTYPES)

def find_neurons_mtypes_btn(self):
return self.find_element(ExplorePageLocators.NEURONS_PANEL_MTYPE_BTN)

def find_neurons_etype_title(self):
return self.find_element(ExplorePageLocators.NEURONS_PANEL_ETYPES_TITLE)

def find_neurons_panel_iso_mtype(self):
return self.find_element(ExplorePageLocators.NEURONS_PANEL_ISOCORTEX_MTYPE)
Loading

0 comments on commit 8bb92a3

Please sign in to comment.