@@ -0,0 +1,2234 @@
+import json%0A%0Afrom dash import Dash, html, dcc, Output, Input%0Afrom dash.exceptions import PreventUpdate%0A%0A%0Asample_dropdown_options = %5B%0A    %7B%22label%22: %22New York City%22, %22value%22: %22NYC%22%7D,%0A    %7B%22label%22: %22Montreal%22, %22value%22: %22MTL%22%7D,%0A    %7B%22label%22: %22San Francisco%22, %22value%22: %22SF%22%7D,%0A%5D%0A%0A%0Adef test_ddro001_remove_option_single(dash_dcc):%0A    dropdown_options = sample_dropdown_options%0A%0A    app = Dash(__name__)%0A    value = 'SF'%0A%0A    app.layout = html.Div(%5B%0A        dcc.Dropdown(%0A            options=dropdown_options,%0A            value=value,%0A            id='dropdown',%0A        ),%0A        html.Button('Remove option', id='remove'),%0A        html.Div(id='value-output')%0A    %5D)%0A%0A    @app.callback(%0A        Output('dropdown', 'options'),%0A        %5BInput('remove', 'n_clicks')%5D%0A    )%0A    def on_click(n_clicks):%0A        if not n_clicks:%0A            raise PreventUpdate%0A        return sample_dropdown_options%5B:-1%5D%0A%0A    @app.callback(%0A        Output('value-output', 'children'),%0A        %5BInput('dropdown', 'value')%5D%0A    )%0A    def on_change(val):%0A        if not val:%0A            raise PreventUpdate%0A        return val or 'None'%0A%0A    dash_dcc.start_server(app)%0A    btn = dash_dcc.wait_for_element('#remove')%0A    btn.click()%0A%0A    dash_dcc.wait_for_text_to_equal('#value-output', 'None')%0A%0A%0Adef test_ddro002_remove_option_multi(dash_dcc):%0A    dropdown_options = sample_dropdown_options%0A%0A    app = Dash(__name__)%0A    value = %5B'MTL', 'SF'%5D%0A%0A    app.layout = html.Div(%5B%0A        dcc.Dropdown(%0A            options=dropdown_options,%0A            value=value,%0A            multi=True,%0A            id='dropdown',%0A        ),%0A        html.Button('Remove option', id='remove'),%0A        html.Div(id='value-output')%0A    %5D)%0A%0A    @app.callback(%0A        Output('dropdown', 'options'),%0A        %5BInput('remove', 'n_clicks')%5D%0A    )%0A    def on_click(n_clicks):%0A        if not n_clicks:%0A            raise PreventUpdate%0A        return sample_dropdown_options%5B:-1%5D%0A%0A    @app.callback(%0A        Output('value-output', 'children'),%0A        %5BInput('dropdown', 'value')%5D%0A    )%0A    def on_change(val):%0A        return json.dumps(val)%0A%0A    dash_dcc.start_server(app)%0A    btn = dash_dcc.wait_for_element('#remove')%0A    btn.click()%0A%0A    dash_dcc.wait_for_text_to_equal('#value-output', '%5B%22MTL%22%5D')%0A

Add test dropdown remove options.