migrate circleci to github workflow #3655
1882 passed, 1 failed and 45 skipped
✅ test-results/background-test-results-py3.12/junit_async.xml
26 tests were completed in 55s with 26 passed, 0 failed and 0 skipped.
✅ test-results/background-test-results-py3.12/junit_background.xml
38 tests were completed in 402s with 36 passed, 0 failed and 2 skipped.
✅ test-results/background-test-results-py3.9/junit_async.xml
26 tests were completed in 57s with 26 passed, 0 failed and 0 skipped.
✅ test-results/background-test-results-py3.9/junit_background.xml
38 tests were completed in 405s with 36 passed, 0 failed and 2 skipped.
✅ test-results/dcc-test-results-py3.12-group1/junit_intg.xml
164 tests were completed in 483s with 163 passed, 0 failed and 1 skipped.
✅ test-results/dcc-test-results-py3.12-group2/junit_intg.xml
133 tests were completed in 483s with 133 passed, 0 failed and 0 skipped.
✅ test-results/dcc-test-results-py3.12-group3/junit_intg.xml
33 tests were completed in 70s with 33 passed, 0 failed and 0 skipped.
✅ test-results/dcc-test-results-py3.8-group1/junit_intg.xml
164 tests were completed in 505s with 163 passed, 0 failed and 1 skipped.
✅ test-results/dcc-test-results-py3.8-group2/junit_intg.xml
133 tests were completed in 482s with 133 passed, 0 failed and 0 skipped.
✅ test-results/dcc-test-results-py3.8-group3/junit_intg.xml
33 tests were completed in 74s with 33 passed, 0 failed and 0 skipped.
✅ test-results/html-test-results-py3.12/junit_html.xml
7 tests were completed in 8s with 7 passed, 0 failed and 0 skipped.
✅ test-results/html-test-results-py3.8/junit_html.xml
7 tests were completed in 5s with 7 passed, 0 failed and 0 skipped.
✅ test-results/table-server-results-group1/junit_table.xml
100 tests were completed in 467s with 84 passed, 0 failed and 16 skipped.
✅ test-results/table-server-results-group2/junit_table.xml
198 tests were completed in 470s with 195 passed, 0 failed and 3 skipped.
✅ test-results/table-server-results-group3/junit_table.xml
161 tests were completed in 444s with 151 passed, 0 failed and 10 skipped.
✅ test-results/test-main-results-py3.12-group1/junit_intg.xml
127 tests were completed in 189s with 125 passed, 0 failed and 2 skipped.
✅ test-results/test-main-results-py3.12-group2/junit_intg.xml
109 tests were completed in 375s with 107 passed, 0 failed and 2 skipped.
✅ test-results/test-main-results-py3.12-group3/junit_intg.xml
97 tests were completed in 187s with 96 passed, 0 failed and 1 skipped.
✅ test-results/test-main-results-py3.8-group1/junit_intg.xml
127 tests were completed in 186s with 125 passed, 0 failed and 2 skipped.
❌ test-results/test-main-results-py3.8-group2/junit_intg.xml
110 tests were completed in 335s with 107 passed, 1 failed and 2 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| pytest | 107✅ | 1❌ | 2⚪ | 335s |
❌ pytest
tests.integration.clientside.test_clientside
✅ test_clsd011_clientside_callback_context_inputs_list
✅ test_clsd012_clientside_callback_context_states
✅ test_clsd013_clientside_callback_context_states_list
✅ test_clsd014_input_output_callback
✅ test_clsd015_clientside_chained_callbacks_returning_promise
✅ test_clsd016_serverside_clientside_shared_input_with_promise
✅ test_clsd017_clientside_serverside_shared_input_with_promise
✅ test_clsd018_clientside_inline_async_function
✅ test_clsd019_clientside_inline_promise
✅ test_clsd020_clientside_callback_context_triggered_id
✅ test_clsd021_simple_clientside_module_serverside_callback
✅ test_clsd022_clientside_pattern_matching_dots
tests.integration.clientside.test_clientside_functions
✅ test_sp001_clientside_setprops
tests.integration.clientside.test_clientside_multiple_output_return_single_no_update
✅ test_cmorsnu001_clientside_multiple_output_return_single_no_update
tests.integration.clientside.test_clientside_outputs_list
✅ test_clol001_clientside_outputs_list_by_single_output
✅ test_clol002_clientside_outputs_list_by_multiple_output1
✅ test_clol003_clientside_outputs_list_by_multiple_output2
✅ test_clol004_clientside_outputs_list_by_no_output
tests.integration.clientside.test_clientside_restarts
⚪ test_clrs001_clientside_inline_restarts
tests.integration.dash_assets.test_assets_path_ignore
✅ test_api001_assets_path_ignore
tests.integration.dash_assets.test_dash_assets
✅ test_dada001_assets
✅ test_dada002_external_files_init
✅ test_dada003_external_resources_with_attributes
✅ test_dada004_external_scripts_init_with_attributes
tests.integration.devtools.test_callback_timing
✅ test_dvct001_callback_timing
tests.integration.devtools.test_callback_validation
✅ test_dvcv001_blank
✅ test_dvcv002_blank_id_prop
✅ test_dvcv003_duplicate_outputs_same_callback
✅ test_dvcv004_duplicate_outputs_across_callbacks
✅ test_dvcv005_input_output_overlap
✅ test_dvcv006_inconsistent_wildcards
✅ test_dvcv007_disallowed_ids
✅ test_dvcv008_wrong_callback_id
✅ test_dvcv009_suppress_callback_exceptions
✅ test_dvcv010_bad_props
✅ test_dvcv011_duplicate_outputs_simple
✅ test_dvcv012_circular_2_step
❌ test_dvcv013_circular_3_step
dash_duo = <dash.testing.plugin._ReusableDashComposite object at 0x7fa5be360100>
✅ test_dvcv014_multipage_errors
✅ test_dvcv015_multipage_validation_layout[function]
✅ test_dvcv015_multipage_validation_layout[attribute]
✅ test_dvcv015_multipage_validation_layout[suppress]
✅ test_dvcv016_circular_with_input_output
tests.integration.devtools.test_devtools_error_handling
✅ test_dveh001_python_errors
✅ test_dveh006_long_python_errors
✅ test_dveh002_prevent_update_not_in_error_msg
✅ test_dveh003_validation_errors_in_place
✅ test_dveh004_validation_errors_creation
✅ test_dveh005_multiple_outputs
tests.integration.devtools.test_devtools_ui
✅ test_dvui001_disable_props_check_config
✅ test_dvui002_disable_ui_config
✅ test_dvui003_callback_graph
✅ test_dvui004_width_props
✅ test_dvui005_undo_redo
✅ test_dvui006_no_undo_redo
✅ test_dvui007_other_before_request_func
tests.integration.devtools.test_hot_reload
✅ test_dvhr001_hot_reload
tests.integration.devtools.test_props_check
⚪ test_dvpc001_prop_check_errors_with_path
tests.integration.multi_page.test_pages_layout
✅ test_pala001_layout
✅ test_pala002_meta_tags_default
✅ test_pala003_meta_tags_custom
✅ test_pala004_no_layout_exception
✅ test_pala005_routing_inputs
✅ test_pala006_pages_external_library
✅ test_pala007_app_title_discription
tests.integration.multi_page.test_pages_order
✅ test_paor001_order
tests.integration.multi_page.test_pages_relative_path
✅ test_pare001_relative_path
✅ test_pare002_relative_path_with_url_base_pathname
✅ test_pare003_absolute_path
tests.integration.renderer.test_add_receive_props
✅ test_rdarp001_add_receive_props
tests.integration.renderer.test_array_of_exact_or_shape_with_node_prop_assign_none
✅ test_aoeoswnpsn001_array_of_exact_or_shape_with_node_prop_assign_none
tests.integration.renderer.test_benchmarking
✅ test_compute_graph_timing[dev_tools0-disabled]
✅ test_compute_graph_timing[dev_tools1-enabled]
tests.integration.renderer.test_children_reorder
✅ test_roc001_reorder_children
tests.integration.renderer.test_component_as_prop
✅ test_rdcap001_component_as_prop
✅ test_rdcap002_component_as_props_dynamic_id
✅ test_rdcap003_side_effect_regression
✅ test_rdcap004_side_effect_same_component
tests.integration.renderer.test_dependencies
✅ test_rddp001_dependencies_on_components_that_dont_exist
✅ test_rddp001_dependencies_on_components_that_dont_exist
tests.integration.renderer.test_descendant_listening
✅ test_dcl001_descendant_tabs
tests.integration.renderer.test_due_diligence
✅ test_rddd001_initial_state
✅ test_rddd002_falsy_child[0]
✅ test_rddd002_falsy_child[child1]
tests.integration.renderer.test_external_component
✅ test_rext001_render_external_component
✅ test_rext002_render_external_component_temp
tests.integration.renderer.test_iframe
✅ test_rdif001_sandbox_allow_scripts
tests.integration.renderer.test_loading_states
✅ test_rdls001_multi_loading_components
✅ test_rdls002_chained_loading_states
✅ test_rdls003_update_title[kwargs0-Updating...-False]
✅ test_rdls003_update_title[kwargs1-Dash-False]
✅ test_rdls003_update_title[kwargs2-Dash-False]
✅ test_rdls003_update_title[kwargs3-Hello World-False]
✅ test_rdls003_update_title[kwargs4-Updating...-True]
✅ test_rdls003_update_title[kwargs5-Dash-True]
✅ test_rdls003_update_title[kwargs6-Dash-True]
✅ test_rdls003_update_title[kwargs7-Hello World-True]
✅ test_rdls004_update_title_chained_callbacks[None]
✅ test_rdls004_update_title_chained_callbacks[Custom Update Title]
tests.integration.renderer.test_multi_output
✅ test_rdmo001_single_input_multi_outputs_on_multiple_components
✅ test_rdmo002_multi_outputs_on_single_component
✅ test_rdmo003_single_output_as_multi
✅ test_rdmo004_multi_output_circular_dependencies
✅ test_rdmo005_set_props_behavior
tests.integration.renderer.test_persistence
✅ test_rdps001_local_reload
✅ test_rdps002_session_reload
✅ test_rdps003_memory_reload
✅ test_rdps004_show_hide
✅ test_rdps005_persisted_props
✅ test_rdps006_move_on_page
✅ test-results/test-main-results-py3.8-group3/junit_intg.xml
97 tests were completed in 185s with 96 passed, 0 failed and 1 skipped.
Annotations
Check failure on line 0 in test-results/test-main-results-py3.8-group2/junit_intg.xml
github-actions / Test Results Summary
pytest ► tests.integration.devtools.test_callback_validation ► test_dvcv013_circular_3_step
Failed test found in:
test-results/test-main-results-py3.8-group2/junit_intg.xml
Error:
dash_duo = <dash.testing.plugin._ReusableDashComposite object at 0x7fa5be360100>
Raw output
dash_duo = <dash.testing.plugin._ReusableDashComposite object at 0x7fa5be360100>
def test_dvcv013_circular_3_step(dash_duo):
app = Dash(__name__)
app.layout = html.Div(
[html.Div([], id="a"), html.Div(["Bye"], id="b"), html.Div(["Hello"], id="c")]
)
@app.callback(Output("b", "children"), [Input("a", "children")])
def callback(children):
return children
@app.callback(Output("c", "children"), [Input("b", "children")])
def c2(children):
return children
@app.callback([Output("a", "children")], [Input("c", "children")])
def c3(children):
return (children,)
dash_duo.start_server(app, **debugging)
specs = [
[
"Circular Dependencies",
[
"Dependency Cycle Found:",
"a.children -> b.children",
"b.children -> c.children",
"c.children -> a.children",
],
]
]
> check_errors(dash_duo, specs)
tests/integration/devtools/test_callback_validation.py:664:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
dash_duo = <dash.testing.plugin._ReusableDashComposite object at 0x7fa5be360100>
specs = [['Circular Dependencies', ['Dependency Cycle Found:', 'a.children -> b.children', 'b.children -> c.children', 'c.children -> a.children']]]
def check_errors(dash_duo, specs):
# Order-agnostic check of all the errors shown.
# This is not fully general - despite the selectors below, it only applies
# to front-end errors with no back-end errors in the list.
cnt = len(specs)
dash_duo.wait_for_text_to_equal(dash_duo.devtools_error_count_locator, str(cnt))
found = []
for i in range(cnt):
msg = dash_duo.find_elements(".dash-fe-error__title")[i].text
dash_duo.find_elements(".test-devtools-error-toggle")[i].click()
dash_duo.wait_for_element(".dash-backend-error,.dash-fe-error__info")
has_BE = dash_duo.driver.execute_script(
"return document.querySelectorAll('.dash-backend-error').length"
)
txt_selector = ".dash-backend-error" if has_BE else ".dash-fe-error__info"
txt = dash_duo.wait_for_element(txt_selector).text
dash_duo.find_elements(".test-devtools-error-toggle")[i].click()
dash_duo.wait_for_no_elements(".dash-backend-error")
found.append((msg, txt))
orig_found = found[:]
for i, (message, snippets) in enumerate(specs):
for j, (msg, txt) in enumerate(found):
if msg == message and all(snip in txt for snip in snippets):
print(j)
found.pop(j)
break
else:
raise AssertionError(
(
"error {} ({}) not found with text:\n"
" {}\nThe found messages were:\n---\n{}"
).format(
i,
message,
"\n ".join(snippets),
"\n---\n".join(
"{}\n{}".format(msg, txt) for msg, txt in orig_found
),
)
)
# ensure the errors didn't leave items in the pendingCallbacks queue
> assert dash_duo.driver.execute_script("return document.title") == "Dash"
E AssertionError: assert 'Updating...' == 'Dash'
E
E - Dash
E + Updating...
tests/integration/devtools/test_callback_validation.py:57: AssertionError