diff --git a/panel/io/convert.py b/panel/io/convert.py index 08be802dcc..b1ee904c7a 100644 --- a/panel/io/convert.py +++ b/panel/io/convert.py @@ -348,7 +348,7 @@ def script_to_html( loading_style = f'' else: loading_style = f'' - css_resources.append(loading_style) + css_resources.append(loading_style) spinner_css = loading_css( config.loading_spinner, config.loading_color, config.loading_max_height ) diff --git a/panel/tests/ui/io/test_convert.py b/panel/tests/ui/io/test_convert.py index b4ed470917..07791d18a0 100644 --- a/panel/tests/ui/io/test_convert.py +++ b/panel/tests/ui/io/test_convert.py @@ -41,6 +41,13 @@ pn.Row(button, pn.bind(lambda c: c, button.param.clicks)).servable(); """ +template_button_app = """ +import panel as pn +pn.extension(template='bootstrap') +button = pn.widgets.Button() +pn.Row(button, pn.bind(lambda c: c, button.param.clicks)).servable(); +""" + slider_app = """ import panel as pn slider = pn.widgets.FloatSlider() @@ -180,6 +187,19 @@ def test_pyodide_test_convert_button_app(http_serve, page, runtime): assert [msg for msg in msgs if msg.type == 'error' and 'favicon' not in msg.location['url']] == [] +@pytest.mark.parametrize('runtime', ['pyodide', 'pyscript', 'pyodide-worker']) +def test_pyodide_test_convert_template_button_app(http_serve, page, runtime): + msgs = wait_for_app(http_serve, button_app, page, runtime) + + expect(page.locator('pre:not([class])')).to_have_text('0') + + page.click('.bk-btn') + + expect(page.locator('pre:not([class])')).to_have_text('1') + + assert [msg for msg in msgs if msg.type == 'error' and 'favicon' not in msg.location['url']] == [] + + @pytest.mark.parametrize('runtime', ['pyodide', 'pyscript', 'pyodide-worker']) def test_pyodide_test_convert_slider_app(http_serve, page, runtime): msgs = wait_for_app(http_serve, slider_app, page, runtime)