summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin André <quentin.andre@imt-atlantique.net>2021-08-25 11:54:27 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:48 +0200
commit1d0ebda9512cf3e964afb7ff31c03d9d7c8c2811 (patch)
treeed4a2d6d326edcb6dbffb6b75d7a80f954a064e0
parent7e4ad702275fccc2772f083e046d31d35c045131 (diff)
downloadIshtar-1d0ebda9512cf3e964afb7ff31c03d9d7c8c2811.tar.bz2
Ishtar-1d0ebda9512cf3e964afb7ff31c03d9d7c8c2811.zip
additional tests without nested tabs for testing the ui of basefinds
-rw-r--r--archaeological_context_records/tests.py64
-rw-r--r--archaeological_finds/tests.py82
-rw-r--r--archaeological_operations/tests.py43
-rw-r--r--ishtar_common/static/js/ishtar-map.js2
-rw-r--r--ishtar_common/templates/ishtar/blocks/sheet_geo_items.html2
-rw-r--r--ishtar_common/tests.py39
6 files changed, 186 insertions, 46 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 769d6a2b2..c1117a68d 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -1369,13 +1369,27 @@ class GraphGenerationTest(ContextRecordInit, TestCase):
class SeleniumTestsContextRecords(SeleniumTests):
fixtures = CONTEXT_RECORD_FIXTURES
- def _test_cr(self, i, pks, geojsons):
- infos = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]')
- self.scroll(infos)
- infos.click()
-
- label = self.selenium.find_element_by_xpath('//small[@title="ID interne" or @title="Internal ID"]').text
- label = label[1:]
+ def _test_cr(self, i, pks, geojsons, method=None):
+ if method == 'from operation':
+ tbody = '.' + '/div' * 6 + '/table/tbody'
+ title = self.selenium.find_element_by_xpath(
+ '//h3[contains(text(), "Unité d\'Enregistrement") or contains(text(), "Context record")]')
+ panel = title.find_element_by_xpath('./..')
+ details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ label = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td[2]').text
+ details.click()
+ else:
+ tbody = './form' + '/div' * 7 + '/table/tbody'
+ title = '//h3[text()="Rechercher une unité d\'enregistrement" or text()="Context record search"]'
+ self.WebDriverWait(self.selenium, 2).until(lambda driver: driver.find_element_by_xpath(title))
+ title = self.selenium.find_element_by_xpath(title)
+ panel = title.find_element_by_xpath('./..')
+ details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
+ label = self.selenium.find_element_by_xpath('//small[@title="ID interne" or @title="Internal ID"]').text
+ label = label[1:]
cr = models.ContextRecord.objects.get(pk=pks[label])
slug_pk = str(cr.SLUG) + "-" + str(cr.pk)
@@ -1383,9 +1397,9 @@ class SeleniumTestsContextRecords(SeleniumTests):
base = copy.deepcopy(geojsons[label]['get_pts'])
else:
base = copy.deepcopy(geojsons[label]['get_polys'])
- self.assertMap(base, slug_pk)
get_poly_id = "get-poly-for-" + slug_pk
+ get_poly_label_id = "get-poly-label-for-" + slug_pk
disp_bf_id = "disp-bf-for-" + slug_pk
cr_polys = geojsons[label]['get_polys']
@@ -1404,10 +1418,13 @@ class SeleniumTestsContextRecords(SeleniumTests):
lambda driver: driver.find_element_by_xpath(
'//dl[@class="col-12"]/dt[text()="Display geo items" or text()="Afficher les éléments"]'))
dd = '//dl[@class="col-12"]/dd'
+ self.selenium.find_element_by_xpath(dd + '/fieldset/label[@for="' + disp_bf_id + '"]')
disp_bf = self.selenium.find_element_by_xpath(dd + '/fieldset/input[@id="' + disp_bf_id + '"]')
self.assertFalse(disp_bf.is_selected())
select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'
+ get_poly_label = dd + '/label[@id="' + get_poly_label_id + '"]'
self.assertNotInDOM(select_get_poly)
+ self.assertNotInDOM(get_poly_label)
self.assertMap(base, slug_pk)
# context record specific
@@ -1416,15 +1433,19 @@ class SeleniumTestsContextRecords(SeleniumTests):
self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
self.scroll(disp_bf)
disp_bf.click()
+ select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'
+ get_poly = self.selenium.find_element_by_xpath(select_get_poly)
+ get_poly.click()
+ self.selenium.find_element_by_xpath(select_get_poly + '/option[@value="polygons"]').click()
bf_geoms = [
bf_polys,
{'type': 'FeatureCollection', 'features': []}
]
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(base, slug_pk, bf_geoms)
- select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'
get_poly = self.selenium.find_element_by_xpath(select_get_poly)
get_poly.click()
self.selenium.find_element_by_xpath(select_get_poly + '/option[@value="points"]').click()
@@ -1433,6 +1454,7 @@ class SeleniumTestsContextRecords(SeleniumTests):
{'type': 'FeatureCollection', 'features': []}
]
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(base, slug_pk, bf_geoms)
# Click on "None"
@@ -1440,10 +1462,29 @@ class SeleniumTestsContextRecords(SeleniumTests):
disp_bf.click()
self.assertFalse(disp_bf.is_selected())
self.assertNotInDOM(select_get_poly)
+ self.assertNotInDOM(get_poly_label)
self.assertMap(base, slug_pk)
def test_geo_items(self):
pks, geojsons = self.pks_and_geojson()
+ # from operation
+ for i in range(1, 3):
+ self.WebDriverWait(self.selenium, 2).until(
+ lambda driver: driver.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]'))
+ dropdown = self.selenium.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')
+ self.scroll(dropdown)
+ dropdown.click()
+ self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/operation_search/"]').click()
+ details = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
+ self.selenium.find_element_by_xpath(
+ '//ul[@role="tablist"]/li/a[contains(text(), "Unités d\'Enregistrement") or contains(text(), "Context records")]').click()
+ for j in range(1, 3):
+ self._test_cr(j, pks, copy.deepcopy(geojsons), method="from operation")
+ # from search bar
for i in range(1, 5):
self.WebDriverWait(self.selenium, 2).until(
lambda driver: driver.find_element_by_xpath(
@@ -1453,4 +1494,7 @@ class SeleniumTestsContextRecords(SeleniumTests):
self.scroll(dropdown)
dropdown.click()
self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/record_search/"]').click()
- self._test_cr(i, pks, geojsons)
+ self._test_cr(i, pks, copy.deepcopy(geojsons))
+ # from bottom table, multiple displays
+ for i in range(1, 4):
+ self._test_cr(i, pks, copy.deepcopy(geojsons))
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 5d13bd2dd..734f4f66f 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -23,6 +23,7 @@ import json
import os
import shutil
import tempfile
+from time import time
from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
@@ -2859,16 +2860,33 @@ class TemplateTest(FindInit, TestCase):
class SeleniumTestsBaseFinds(SeleniumTests):
fixtures = FIND_FIXTURES
- def _test_bf(self, i, pks, geojsons):
- bf_infos = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]')
- self.scroll(bf_infos)
- bf_infos.click()
-
- bf_label = self.selenium.find_element_by_xpath('//small[@title="ID interne" or @title="Internal ID"]').text
- bf_label = bf_label.split('-')
- self.assertEqual(len(bf_label), 3)
- bf_label = bf_label[2]
- bf = models.BaseFind.objects.get(pk=pks[bf_label])
+ def _test_bf(self, i, pks, geojsons, from_search=False):
+ title = self.selenium.find_element_by_xpath('//h3[contains(text(), "Mobilier") or contains(text(), "Find")]')
+ panel = title.find_element_by_xpath('./..')
+ if from_search:
+ tbody = './form' + '/div' * 7 + '/table/tbody'
+ else:
+ tbody = '.' + '/div' * 6 + '/table/tbody'
+ details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
+ label = None
+ timeout = 20
+ t = time()
+ while not label and time()-t < timeout:
+ for internalId in self.selenium.find_elements_by_xpath('//small[@title="ID interne" or @title="Internal ID"]'):
+ if 'Find' in internalId.text:
+ label = internalId.text
+ break
+ '''label = '//small[@title="ID interne" or @title="Internal ID"][contains(text(), "Find")]'
+ self.WebDriverWait(self.selenium, 2).until(
+ lambda driver: driver.find_element_by_xpath(label))
+ label = self.selenium.find_element_by_xpath(label).text'''
+ label = label.split('-')
+ self.assertEqual(len(label), 3)
+ label = label[2]
+
+ bf = models.BaseFind.objects.get(pk=pks[label])
slug_pk = str(bf.SLUG) + "-" + str(bf.pk)
print('ACHTUNG: ', bf.most_precise_geo())
print(bf.multi_polygon.coords)
@@ -2879,9 +2897,9 @@ class SeleniumTestsBaseFinds(SeleniumTests):
print(bf.point_source_item)
if False: #geojsons[bf_label]['precise']
- bf_base = geojsons[bf_label]['get_pts']
+ bf_base = geojsons[label]['get_pts']
else:
- bf_base = geojsons[bf_label]['get_polys']
+ bf_base = geojsons[label]['get_polys']
self.assertMap(bf_base, slug_pk)
title = '//dl[@class="col-12"]/dt[text()="Display geo items" or text()="Afficher les éléments"]'
@@ -2894,6 +2912,41 @@ class SeleniumTestsBaseFinds(SeleniumTests):
def test_geo_items(self):
pks, geojsons = self.pks_and_geojson()
+ # from operation
+ for i in range(1, 3):
+ self.WebDriverWait(self.selenium, 2).until(
+ lambda driver: driver.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]'))
+ dropdown = self.selenium.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')
+ self.scroll(dropdown)
+ dropdown.click()
+ self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/operation_search/"]').click()
+ details = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
+ self.selenium.find_element_by_xpath(
+ '//ul[@role="tablist"]/li/a[contains(text(), "Mobilier") or contains(text(), "Finds")]').click()
+ for j in range(1, 5):
+ self._test_bf(j, pks, copy.deepcopy(geojsons))
+ # from context record
+ for i in range(1, 5):
+ self.WebDriverWait(self.selenium, 2).until(
+ lambda driver: driver.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]'))
+ dropdown = self.selenium.find_element_by_xpath(
+ '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')
+ self.scroll(dropdown)
+ dropdown.click()
+ self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/record_search/"]').click()
+ details = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
+ self.selenium.find_element_by_xpath(
+ '//ul[@role="tablist"]/li/a[contains(text(), "Mobilier") or contains(text(), "Finds")]').click()
+ for j in range(1, 3):
+ self._test_bf(j, pks, copy.deepcopy(geojsons))
+ # from search
for i in range(1, 9):
self.WebDriverWait(self.selenium, 2).until(
lambda driver: driver.find_element_by_xpath(
@@ -2902,4 +2955,7 @@ class SeleniumTestsBaseFinds(SeleniumTests):
self.scroll(dropdown)
dropdown.click()
self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/find_search/"]').click()
- self._test_bf(i, pks, geojsons)
+ self._test_bf(i, pks, copy.deepcopy(geojsons), from_search=True)
+ # from bottom table
+ for i in range(1,8):
+ self._test_bf(i, pks, copy.deepcopy(geojsons), from_search=True)
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index a4b73453e..3452b78fc 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# See the file COPYING for details.
-
+import copy
import json
import datetime
from subprocess import Popen, PIPE
@@ -4245,6 +4245,7 @@ class SeleniumTestsOperations(SeleniumTests):
def _test_operation(self, i, slug_pk, geojsons, label):
get_poly_id = "get-poly-for-" + slug_pk
+ get_poly_label_id = "get-poly-label-for-" + slug_pk
disp_cr_id = "disp-cr-for-" + slug_pk
disp_bf_id = "disp-bf-for-" + slug_pk
@@ -4274,24 +4275,31 @@ class SeleniumTestsOperations(SeleniumTests):
ope_base = geojsons[label]['get_pts']
else:
ope_base = geojsons[label]['get_polys']
-
- self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]').click()
+ title = self.selenium.find_element_by_xpath(
+ '//h3[text()="Rechercher une opération" or text()="Operation search"]')
+ panel = title.find_element_by_xpath('./..')
+ tbody = './form' + '/div'*7 + '/table/tbody'
+ details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]')
+ self.scroll(details)
+ details.click()
self.WebDriverWait(self.selenium, 2).until(
lambda driver: driver.find_element_by_xpath(
- '//dl[@class="col-12"]/dt[text()="Display geo items" or text()="Afficher les éléments"]'))
+ '//dl[@class="col-12"]/dt[@id="display-geo-items-for-' + slug_pk + '"]'))
dd = '//dl[@class="col-12"]/dd'
- self.selenium.find_element_by_xpath(dd + '/fieldset/label[text()="Display context records"]')
+ self.selenium.find_element_by_xpath(dd + '/fieldset/label[@for="' + disp_cr_id + '"]')
disp_cr = self.selenium.find_element_by_xpath(dd + '/fieldset/input[@id="' + disp_cr_id + '"]')
- self.selenium.find_element_by_xpath(dd + '/fieldset/label[text()="Display context records"]')
+ self.selenium.find_element_by_xpath(dd + '/fieldset/label[@for="' + disp_bf_id + '"]')
disp_bf = self.selenium.find_element_by_xpath(dd + '/fieldset/input[@id="' + disp_bf_id + '"]')
self.assertFalse(disp_cr.is_selected())
self.assertFalse(disp_bf.is_selected())
select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'
+ get_poly_label = dd + '/label[@id="' + get_poly_label_id + '"]'
self.assertNotInDOM(select_get_poly)
+ self.assertNotInDOM(get_poly_label)
self.assertMap(ope_base, slug_pk)
# click on "Context records"
- self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
+ self.selenium.execute_script('initialize_test_map(arguments[0])', slug_pk)
self.scroll(disp_cr)
disp_cr.click()
@@ -4301,6 +4309,7 @@ class SeleniumTestsOperations(SeleniumTests):
]
self.assertTrue(disp_cr.is_selected())
self.assertFalse(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, cr_geoms)
get_poly = self.selenium.find_element_by_xpath(select_get_poly)
@@ -4312,26 +4321,29 @@ class SeleniumTestsOperations(SeleniumTests):
]
self.assertTrue(disp_cr.is_selected())
self.assertFalse(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, cr_geoms)
# Click on everything
- self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
+ self.selenium.execute_script('initialize_test_map(arguments[0])', slug_pk)
disp_bf.click()
every_geoms = [bf_pts, cr_pts]
self.assertTrue(disp_cr.is_selected())
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, every_geoms)
- self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
+ self.selenium.execute_script('initialize_test_map(arguments[0])', slug_pk)
get_poly.click()
self.selenium.find_element_by_xpath(select_get_poly + '/option[@value="polygons"]').click()
every_geoms = [bf_polys, cr_polys]
self.assertTrue(disp_cr.is_selected())
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, every_geoms)
# click on "Base finds"
- self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
+ self.selenium.execute_script('initialize_test_map(arguments[0])', slug_pk)
self.scroll(disp_cr)
disp_cr.click()
@@ -4341,6 +4353,7 @@ class SeleniumTestsOperations(SeleniumTests):
]
self.assertFalse(disp_cr.is_selected())
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, bf_geoms)
select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'
@@ -4353,14 +4366,16 @@ class SeleniumTestsOperations(SeleniumTests):
]
self.assertFalse(disp_cr.is_selected())
self.assertTrue(disp_bf.is_selected())
+ self.selenium.find_element_by_xpath(get_poly_label)
self.assertMap(ope_base, slug_pk, bf_geoms)
# Click on "None"
- self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk)
+ self.selenium.execute_script('initialize_test_map(arguments[0])', slug_pk)
disp_bf.click()
self.assertFalse(disp_cr.is_selected())
self.assertFalse(disp_bf.is_selected())
self.assertNotInDOM(select_get_poly)
+ self.assertNotInDOM(get_poly_label)
self.assertMap(ope_base, slug_pk)
def test_geo_items(self):
@@ -4373,7 +4388,7 @@ class SeleniumTestsOperations(SeleniumTests):
self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/operation_search/"]').click()
ope = models.Operation.objects.get(pk=pks['Poly'])
slug_pk_poly = str(ope.SLUG) + "-" + str(ope.pk)
- self._test_operation(2, slug_pk_poly, geojsons, 'Poly')
+ self._test_operation(2, slug_pk_poly, copy.deepcopy(geojsons), 'Poly')
dropdown = self.selenium.find_element_by_xpath(
'//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')
@@ -4387,5 +4402,7 @@ class SeleniumTestsOperations(SeleniumTests):
print(ope.multi_polygon.coords)
print(ope.point_2d.coords)
slug_pk_pt = str(ope.SLUG) + "-" + str(ope.pk)
- self._test_operation(1, slug_pk_pt, geojsons, 'Pt')
+ self._test_operation(1, slug_pk_pt, copy.deepcopy(geojsons), 'Pt')
+ # display both at the same time (1 is already displayed)
+ self._test_operation(2, slug_pk_poly, geojsons, 'Poly')
diff --git a/ishtar_common/static/js/ishtar-map.js b/ishtar_common/static/js/ishtar-map.js
index ab8096b06..aa7263f7f 100644
--- a/ishtar_common/static/js/ishtar-map.js
+++ b/ishtar_common/static/js/ishtar-map.js
@@ -558,7 +558,7 @@ var initialize_test_map = function (slug_pk) {
geo_items_features = {};
current_test = true;
if ($("#"+id).length === 0) {
- $("#display-geo-items").after('<div id="'+id+'">Ready!</div>');
+ $("#display-geo-items-for-" + slug_pk).after('<div id="'+id+'">Ready!</div>');
}
$("#"+id).hide();
}
diff --git a/ishtar_common/templates/ishtar/blocks/sheet_geo_items.html b/ishtar_common/templates/ishtar/blocks/sheet_geo_items.html
index 33b3dc5ed..12e4b4ef0 100644
--- a/ishtar_common/templates/ishtar/blocks/sheet_geo_items.html
+++ b/ishtar_common/templates/ishtar/blocks/sheet_geo_items.html
@@ -1,7 +1,7 @@
{% load i18n window_field %}{% if PROFILE.mapping %}
{% if geo_item.point_2d or geo_item.multi_polygon %}
<dl class="col-12">
- <dt id="display-geo-items">{% trans "Display geo items" %}</dt>
+ <dt id="display-geo-items-for-{{geo_item.SLUG}}-{{geo_item.pk}}">{% trans "Display geo items" %}</dt>
<dd>
<fieldset>
{% if geo_item.SLUG == "operation" %}
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 71242db6b..4283e6c6f 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -3628,8 +3628,23 @@ class SeleniumTests(StaticLiveServerTestCase):
+ "window.scrollBy(0, elementTop-(viewPortHeight/2));",
element)
+ '''
+ arguments:
+ i is the number of the row (starting at 1)
+ target and source are a tuple of french/english slugs corresponding respectively to the slug of the item of
+ which we want some details and the slug of the item from which we launched the search
+ '''
+ def click_on_details(self, i, target, source=None):
+ table = '//table[contains(@id, ' + target[0] + ') or contains(@id, ' + target[1] + ')]'
+ if source:
+ table += '[contains(@id, ' + source[0] + ') or contains(@id, ' + source[1] + ')]'
+ details = table + '/tbody/' + '/tr[' + str(i) + ']/td/a[@class="display_details"]'
+ details = self.selenium.find_element_by_xpath(details)
+ self.scroll(details)
+ details.click()
+
def assertNotInDOM(self, xpath):
- self.selenium.implicitly_wait(5)
+ self.selenium.implicitly_wait(3)
try:
self.WebDriverWait(self.selenium, 2).until(
self.EC.visibility_of_element_located((self.By.XPATH, xpath))
@@ -3642,20 +3657,24 @@ class SeleniumTests(StaticLiveServerTestCase):
def assertMap(self, dic_base, slug_pk, features_collecs=None):
dic_base = {'type': 'FeatureCollection', 'features': [dic_base]}
- mapdivs = self.selenium.find_elements_by_class_name("window-map")
mapid = None
- for mapdiv in mapdivs:
- if slug_pk in mapdiv.get_attribute("id"):
- mapid = mapdiv.get_attribute("id")
- break
+ timeout = 20
+ t = time()
+ while not mapid and time()-t < timeout:
+ mapdivs = self.selenium.find_elements_by_class_name("window-map")
+ for mapdiv in mapdivs:
+ if slug_pk in mapdiv.get_attribute("id"):
+ mapid = mapdiv.get_attribute("id")
+ break
id = int(re.search(r'\d+$', mapid).group())
# TODO: use the map and not the map_features in the js function
if features_collecs:
self.WebDriverWait(self.selenium, 2).until(
self.EC.visibility_of_element_located((self.By.ID, "http-geo-items-ready-"+slug_pk))
)
- print(id)
+ print('id : ', id)
print('mapid : ', mapid)
+ print('slug_pk : ', slug_pk)
print(self.selenium.execute_script('return base_features_type(arguments[0])', mapid))
base_features, geo_items_feats = self.selenium.execute_script('return get_features_by_id(arguments[0])', mapid)
base_features['features'][0]['properties'].pop('name')
@@ -3666,4 +3685,8 @@ class SeleniumTests(StaticLiveServerTestCase):
if features_collecs:
print('feat : ', geo_items_feats)
print('dic : ', features_collecs)
- self.assertEqual(geo_items_feats, features_collecs)
+ try:
+ self.assertEqual(geo_items_feats, features_collecs)
+ except:
+ self.selenium.implicitly_wait(10000)
+ self.selenium.find_element_by_xpath('doesnet')