@@ -23,8 +23,10 @@ def updateDiv(children):
23
23
with lock :
24
24
dash_dcc .start_server (app )
25
25
dash_dcc .find_element ('.loading .dash-spinner' )
26
+ # ensure inner component is also mounted
27
+ dash_dcc .wait_for_text_to_equal ("#div-1" , "" )
26
28
27
- dash_dcc .find_element ( '.loading #div-1' )
29
+ dash_dcc .wait_for_text_to_equal ( ' #div-1' , 'content ' )
28
30
29
31
assert not dash_dcc .get_logs ()
30
32
@@ -42,19 +44,21 @@ def test_ldcp002_loading_component_action(dash_dcc):
42
44
def updateDiv (n_clicks ):
43
45
if n_clicks is not None :
44
46
with lock :
45
- return
47
+ return "changed"
46
48
47
49
return 'content'
48
50
49
51
with lock :
50
52
dash_dcc .start_server (app )
51
- dash_dcc .find_element ( '.loading #div-1' )
53
+ dash_dcc .wait_for_text_to_equal ( ' #div-1', "content" )
52
54
53
55
dash_dcc .find_element ('#root' ).click ()
54
56
55
57
dash_dcc .find_element ('.loading .dash-spinner' )
58
+ # mounted but hidden, so looks like no text
59
+ dash_dcc .wait_for_text_to_equal ('#div-1' , "" )
56
60
57
- dash_dcc .find_element ( '.loading #div-1' )
61
+ dash_dcc .wait_for_text_to_equal ( ' #div-1', "changed" )
58
62
59
63
assert not dash_dcc .get_logs ()
60
64
@@ -69,42 +73,42 @@ def test_ldcp003_multiple_loading_components(dash_dcc):
69
73
dcc .Loading ([html .Button (id = 'btn-2' )], className = 'loading-2' )
70
74
], id = 'root' )
71
75
72
- @app .callback (Output ('btn-1' , 'value ' ), [Input ('btn-2' , 'n_clicks' )])
76
+ @app .callback (Output ('btn-1' , 'children ' ), [Input ('btn-2' , 'n_clicks' )])
73
77
def updateDiv (n_clicks ):
74
78
if n_clicks is not None :
75
79
with lock :
76
- return
80
+ return "changed 1"
77
81
78
- return 'content'
82
+ return 'content 1 '
79
83
80
- @app .callback (Output ('btn-2' , 'value ' ), [Input ('btn-1' , 'n_clicks' )])
84
+ @app .callback (Output ('btn-2' , 'children ' ), [Input ('btn-1' , 'n_clicks' )])
81
85
def updateDiv (n_clicks ):
82
86
if n_clicks is not None :
83
87
with lock :
84
- return
88
+ return "changed 2"
85
89
86
- return 'content'
90
+ return 'content 2 '
87
91
88
92
dash_dcc .start_server (app )
89
93
90
- dash_dcc .find_element ( '.loading-1 #btn-1' )
91
- dash_dcc .find_element ( '.loading-2 #btn-2' )
94
+ dash_dcc .wait_for_text_to_equal ( ' #btn-1', "content 1" )
95
+ dash_dcc .wait_for_text_to_equal ( ' #btn-2', "content 2" )
92
96
93
97
with lock :
94
98
dash_dcc .find_element ('#btn-1' ).click ()
95
99
96
100
dash_dcc .find_element ('.loading-2 .dash-spinner' )
97
- dash_dcc .find_element ( '.loading-1 #btn-1' )
101
+ dash_dcc .wait_for_text_to_equal ( " #btn-2" , "" )
98
102
99
- dash_dcc .find_element ( '.loading-2 #btn-2' )
103
+ dash_dcc .wait_for_text_to_equal ( " #btn-2" , "changed 2" )
100
104
101
105
with lock :
102
106
dash_dcc .find_element ('#btn-2' ).click ()
103
107
104
108
dash_dcc .find_element ('.loading-1 .dash-spinner' )
109
+ dash_dcc .wait_for_text_to_equal ("#btn-1" , "" )
105
110
106
- dash_dcc .find_element ('.loading-1 #btn-1' )
107
- dash_dcc .find_element ('.loading-2 #btn-2' )
111
+ dash_dcc .wait_for_text_to_equal ("#btn-1" , "changed 1" )
108
112
109
113
assert not dash_dcc .get_logs ()
110
114
@@ -121,51 +125,50 @@ def test_ldcp004_nested_loading_components(dash_dcc):
121
125
], className = 'loading-1' )
122
126
], id = 'root' )
123
127
124
- @app .callback (Output ('btn-1' , 'value ' ), [Input ('btn-2' , 'n_clicks' )])
128
+ @app .callback (Output ('btn-1' , 'children ' ), [Input ('btn-2' , 'n_clicks' )])
125
129
def updateDiv (n_clicks ):
126
130
if n_clicks is not None :
127
131
with lock :
128
- return
132
+ return "changed 1"
129
133
130
- return 'content'
134
+ return 'content 1 '
131
135
132
- @app .callback (Output ('btn-2' , 'value ' ), [Input ('btn-1' , 'n_clicks' )])
136
+ @app .callback (Output ('btn-2' , 'children ' ), [Input ('btn-1' , 'n_clicks' )])
133
137
def updateDiv (n_clicks ):
134
138
if n_clicks is not None :
135
139
with lock :
136
- return
140
+ return "changed 2"
137
141
138
- return 'content'
142
+ return 'content 2 '
139
143
140
144
dash_dcc .start_server (app )
141
145
142
- dash_dcc .find_element ( '.loading-1 #btn-1' )
143
- dash_dcc .find_element ( '.loading-2 #btn-2' )
146
+ dash_dcc .wait_for_text_to_equal ( ' #btn-1', "content 1" )
147
+ dash_dcc .wait_for_text_to_equal ( ' #btn-2', "content 2" )
144
148
145
149
with lock :
146
150
dash_dcc .find_element ('#btn-1' ).click ()
147
151
148
152
dash_dcc .find_element ('.loading-2 .dash-spinner' )
149
- dash_dcc .find_element ( '.loading-1 #btn-1' )
153
+ dash_dcc .wait_for_text_to_equal ( " #btn-2" , "" )
150
154
151
- dash_dcc .find_element ( '.loading-2 #btn-2' )
155
+ dash_dcc .wait_for_text_to_equal ( " #btn-2" , "changed 2" )
152
156
153
157
with lock :
154
158
dash_dcc .find_element ('#btn-2' ).click ()
155
159
156
160
dash_dcc .find_element ('.loading-1 .dash-spinner' )
161
+ dash_dcc .wait_for_text_to_equal ("#btn-1" , "" )
157
162
158
- dash_dcc .find_element ('.loading-1 #btn-1' )
159
- dash_dcc .find_element ('.loading-2 #btn-2' )
163
+ dash_dcc .wait_for_text_to_equal ("#btn-1" , "changed 1" )
160
164
161
165
assert not dash_dcc .get_logs ()
162
166
163
167
164
168
def test_ldcp005_dynamic_loading_component (dash_dcc ):
165
169
lock = Lock ()
166
170
167
- app = dash .Dash (__name__ )
168
- app .config ['suppress_callback_exceptions' ] = True
171
+ app = dash .Dash (__name__ , suppress_callback_exceptions = True )
169
172
170
173
app .layout = html .Div ([html .Button (id = 'btn-1' ), html .Div (id = 'div-1' )])
171
174
@@ -180,30 +183,30 @@ def updateDiv(n_clicks):
180
183
dcc .Loading ([html .Button (id = 'btn-3' )], className = 'loading-1' )
181
184
])
182
185
183
- @app .callback (Output ('btn-3' , 'content ' ), [Input ('btn-2' , 'n_clicks' )])
186
+ @app .callback (Output ('btn-3' , 'children ' ), [Input ('btn-2' , 'n_clicks' )])
184
187
def updateDynamic (n_clicks ):
185
188
if n_clicks is None :
186
- return
189
+ return "content"
187
190
188
191
with lock :
189
- return 'content'
192
+ return "changed"
190
193
191
194
dash_dcc .start_server (app )
192
195
193
196
dash_dcc .find_element ('#btn-1' )
194
- dash_dcc .find_element ('#div-1' )
197
+ dash_dcc .wait_for_text_to_equal ('#div-1' , "" )
195
198
196
199
dash_dcc .find_element ('#btn-1' ).click ()
197
200
198
201
dash_dcc .find_element ('#div-1 #btn-2' )
199
- dash_dcc .find_element ( '.loading-1 #btn-3' )
202
+ dash_dcc .wait_for_text_to_equal ( ' #btn-3', "content" )
200
203
201
204
with lock :
202
205
dash_dcc .find_element ('#btn-2' ).click ()
203
206
204
207
dash_dcc .find_element ('.loading-1 .dash-spinner' )
208
+ dash_dcc .wait_for_text_to_equal ('#btn-3' , "" )
205
209
206
- dash_dcc .find_element ('#div-1 #btn-2' )
207
- dash_dcc .find_element ('.loading-1 #btn-3' )
210
+ dash_dcc .wait_for_text_to_equal ('#btn-3' , "changed" )
208
211
209
212
assert not dash_dcc .get_logs ()
0 commit comments