Skip to content

Commit 63311c2

Browse files
committed
🔍 Fix response status code assertions in Selenium tests for compatibility with recent Dash versions
1 parent 58334bf commit 63311c2

File tree

1 file changed

+75
-11
lines changed

1 file changed

+75
-11
lines changed

tests/test_figure_resampler_selenium.py

Lines changed: 75 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import multiprocessing
23
import platform
34
import time
@@ -75,7 +76,13 @@ def test_multiple_tz(driver, multiple_tz_figure):
7576
time.sleep(1)
7677
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
7778
assert len(autoscale_requests) == 1
78-
assert autoscale_requests[0].response.status_code == 204
79+
try:
80+
assert autoscale_requests[0].response.status_code == 204
81+
except AssertionError:
82+
# In a more recent dash version, this returns a 200 status with no data
83+
assert autoscale_requests[0].response.status_code == 200
84+
response_data = json.loads(autoscale_requests[0].response.body)
85+
assert response_data.get("response") == {}
7986

8087
if len(driver.get_log("browser")) > 0: # Check no errors in the browser
8188
for entry in driver.get_log("browser"):
@@ -159,7 +166,13 @@ def test_basic_example_gui(driver, example_figure):
159166
time.sleep(1)
160167
vertical_requests = RequestParser.filter_callback_requests(fr.get_requests())
161168
assert len(vertical_requests) == 1
162-
assert vertical_requests[0].response.status_code == 204
169+
try:
170+
assert vertical_requests[0].response.status_code == 204
171+
except AssertionError:
172+
# In a more recent dash version, this returns a 200 status with no data
173+
assert vertical_requests[0].response.status_code == 200
174+
response_data = json.loads(vertical_requests[0].response.body)
175+
assert response_data.get("response") == {}
163176

164177
# we autoscale to the current front-end view, no updated dat will be sent from
165178
# the server to the front-end, however, a callback will still be made, but
@@ -170,7 +183,12 @@ def test_basic_example_gui(driver, example_figure):
170183
time.sleep(1)
171184
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
172185
assert len(autoscale_requests) == 1
173-
assert autoscale_requests[0].response.status_code == 204
186+
try:
187+
assert autoscale_requests[0].response.status_code == 204
188+
except AssertionError:
189+
assert autoscale_requests[0].response.status_code == 200
190+
response_data = json.loads(autoscale_requests[0].response.body)
191+
assert response_data.get("response") == {}
174192

175193
# The reset axes autoscales AND resets tot he global data view -> all data
176194
# will be updated.
@@ -273,7 +291,13 @@ def test_basic_example_gui_existing(driver, example_figure_fig):
273291
time.sleep(1)
274292
vertical_requests = RequestParser.filter_callback_requests(fr.get_requests())
275293
assert len(vertical_requests) == 1
276-
assert vertical_requests[0].response.status_code == 204
294+
try:
295+
assert vertical_requests[0].response.status_code == 204
296+
except AssertionError:
297+
# In a more recent dash version, this returns a 200 status with no data
298+
assert vertical_requests[0].response.status_code == 200
299+
response_data = json.loads(vertical_requests[0].response.body)
300+
assert response_data.get("response") == {}
277301

278302
# we autoscale to the current front-end view, no updated dat will be sent from
279303
# the server to the front-end, however, a callback will still be made, but
@@ -284,7 +308,12 @@ def test_basic_example_gui_existing(driver, example_figure_fig):
284308
time.sleep(1)
285309
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
286310
assert len(autoscale_requests) == 1
287-
assert autoscale_requests[0].response.status_code == 204
311+
try:
312+
assert autoscale_requests[0].response.status_code == 204
313+
except AssertionError:
314+
assert autoscale_requests[0].response.status_code == 200
315+
response_data = json.loads(autoscale_requests[0].response.body)
316+
assert response_data.get("response") == {}
288317

289318
# The reset axes autoscales AND resets tot he global data view -> all data
290319
# will be updated.
@@ -395,7 +424,13 @@ def test_gsr_gui(driver, gsr_figure):
395424
time.sleep(1)
396425
vertical_requests = RequestParser.filter_callback_requests(fr.get_requests())
397426
assert len(vertical_requests) == 1
398-
assert vertical_requests[0].response.status_code == 204
427+
try:
428+
assert vertical_requests[0].response.status_code == 204
429+
except AssertionError:
430+
# In a more recent dash version, this returns a 200 status with no data
431+
assert vertical_requests[0].response.status_code == 200
432+
response_data = json.loads(vertical_requests[0].response.body)
433+
assert response_data.get("response") == {}
399434

400435
# autoscale
401436
# we autoscale to the current front-end view, no updated dat will be sent from
@@ -407,7 +442,12 @@ def test_gsr_gui(driver, gsr_figure):
407442
time.sleep(1)
408443
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
409444
assert len(autoscale_requests) == 1
410-
assert autoscale_requests[0].response.status_code == 204
445+
try:
446+
assert autoscale_requests[0].response.status_code == 204
447+
except AssertionError:
448+
assert autoscale_requests[0].response.status_code == 200
449+
response_data = json.loads(autoscale_requests[0].response.body)
450+
assert response_data.get("response") == {}
411451

412452
fr.reset_axes()
413453
time.sleep(0.2)
@@ -460,14 +500,26 @@ def test_cat_gui(driver, cat_series_box_hist_figure):
460500
time.sleep(1)
461501
vertical_requests = RequestParser.filter_callback_requests(fr.get_requests())
462502
assert len(vertical_requests) == 1
463-
assert vertical_requests[0].response.status_code == 204
503+
try:
504+
assert vertical_requests[0].response.status_code == 204
505+
except AssertionError:
506+
# In a more recent dash version, this returns a 200 status with no data
507+
assert vertical_requests[0].response.status_code == 200
508+
response_data = json.loads(vertical_requests[0].response.body)
509+
assert response_data.get("response") == {}
464510

465511
fr.clear_requests(sleep_time_s=1)
466512
fr.autoscale()
467513
time.sleep(1)
468514
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
469515
assert len(autoscale_requests) == 1
470-
assert autoscale_requests[0].response.status_code == 204
516+
try:
517+
assert autoscale_requests[0].response.status_code == 204
518+
except AssertionError:
519+
# In a more recent dash version, this returns a 200 status with no data
520+
assert autoscale_requests[0].response.status_code == 200
521+
response_data = json.loads(autoscale_requests[0].response.body)
522+
assert response_data.get("response") == {}
471523

472524
# Note: as there is only 1 hf-scatter-trace, the reset axes command will only
473525
# update a single trace
@@ -573,7 +625,13 @@ def test_shared_hover_gui(driver, shared_hover_figure):
573625
time.sleep(1)
574626
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
575627
assert len(autoscale_requests) == 1
576-
assert autoscale_requests[0].response.status_code == 204
628+
try:
629+
assert autoscale_requests[0].response.status_code == 204
630+
except AssertionError:
631+
# In a more recent dash version, this returns a 200 status with no data
632+
assert autoscale_requests[0].response.status_code == 200
633+
response_data = json.loads(autoscale_requests[0].response.body)
634+
assert response_data.get("response") == {}
577635

578636
if len(driver.get_log("browser")) > 0: # Check no errors in the browser
579637
for entry in driver.get_log("browser"):
@@ -652,7 +710,13 @@ def test_multi_trace_go_figure(driver, multi_trace_go_figure):
652710
time.sleep(3)
653711
autoscale_requests = RequestParser.filter_callback_requests(fr.get_requests())
654712
assert len(autoscale_requests) == 1
655-
assert autoscale_requests[0].response.status_code == 204
713+
try:
714+
assert autoscale_requests[0].response.status_code == 204
715+
except AssertionError:
716+
# In a more recent dash version, this returns a 200 status with no data
717+
assert autoscale_requests[0].response.status_code == 200
718+
response_data = json.loads(autoscale_requests[0].response.body)
719+
assert response_data.get("response") == {}
656720

657721
if len(driver.get_log("browser")) > 0: # Check no errors in the browser
658722
for entry in driver.get_log("browser"):

0 commit comments

Comments
 (0)