def test_server_on_change_round_trip(self, bokeh_server_page): def modify_doc(doc): source = ColumnDataSource(dict(x=[1, 2], y=[1, 1], val=["a", "b"])) plot = Plot(plot_height=400, plot_width=400, x_range=Range1d(0, 1), y_range=Range1d(0, 1), min_border=0) plot.add_glyph(source, Circle(x='x', y='y', size=20)) plot.add_tools( CustomAction(callback=CustomJS(args=dict(s=source), code=RECORD("data", "s.data")))) slider = Slider(start=0, end=10, value=1, title="bar", css_classes=["foo"], width=300) def cb(attr, old, new): source.data['val'] = [old, new] slider.on_change('value', cb) doc.add_root(column(slider, plot)) page = bokeh_server_page(modify_doc) drag_slider(page.driver, ".foo", 150) page.click_custom_action() results = page.results old, new = results['data']['val'] assert float(old) == 1 assert float(new) > 1 drag_slider(page.driver, ".foo", 450) page.click_custom_action() results = page.results old, new = results['data']['val'] assert float(new) == 10 drag_slider(page.driver, ".foo", -600) page.click_custom_action() results = page.results old, new = results['data']['val'] assert float(new) == 0 el = page.driver.find_element_by_css_selector('.foo') handle = el.find_element_by_css_selector('.bk-noUi-handle') select_element_and_press_key(page.driver, handle, Keys.ARROW_RIGHT) page.click_custom_action() results = page.results old, new = results['data']['val'] assert float(new) == 1
def test_keypress_event(self, bokeh_model_page) -> None: slider = Slider(start=0, end=10, value=1, title="bar", css_classes=["foo"], width=300) page = bokeh_model_page(slider) el = page.driver.find_element_by_css_selector('.foo') handle = el.find_element_by_css_selector('.noUi-handle') select_element_and_press_key(page.driver, handle, Keys.ARROW_RIGHT, press_number=1) assert float(get_slider_title_value(page.driver, ".foo")) == 2 select_element_and_press_key(page.driver, handle, Keys.ARROW_LEFT, press_number=3) # hit lower value and continue assert float(get_slider_title_value(page.driver, ".foo")) == 0 select_element_and_press_key(page.driver, handle, Keys.ARROW_RIGHT, press_number=11) # hit higher value and continue assert float(get_slider_title_value(page.driver, ".foo")) == 10 assert page.has_no_console_errors()
def test_keypress_event(self, bokeh_model_page: BokehModelPage) -> None: slider = Slider(start=0, end=10, value=1, title="bar", width=300) page = bokeh_model_page(slider) handle = find_element_for(page.driver, slider, ".noUi-handle") select_element_and_press_key(page.driver, handle, Keys.ARROW_RIGHT, press_number=1) assert float(get_slider_title_value(page.driver, slider)) == 2 select_element_and_press_key( page.driver, handle, Keys.ARROW_LEFT, press_number=3) # hit lower value and continue assert float(get_slider_title_value(page.driver, slider)) == 0 select_element_and_press_key( page.driver, handle, Keys.ARROW_RIGHT, press_number=11) # hit higher value and continue assert float(get_slider_title_value(page.driver, slider)) == 10 assert page.has_no_console_errors()
def test_keypress_event(self, bokeh_model_page) -> None: slider = RangeSlider(start=0, end=10, value=(1, 5), title="bar", css_classes=["foo"], width=300) page = bokeh_model_page(slider) el = page.driver.find_element_by_css_selector('.foo') handle_lower = el.find_element_by_css_selector('.noUi-handle-lower') handle_upper = el.find_element_by_css_selector('.noUi-handle-upper') select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_RIGHT, press_number=1) assert get_slider_title_value(page.driver, ".foo") == "2 .. 5" select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_LEFT, press_number=5) assert get_slider_title_value(page.driver, ".foo") == "0 .. 5" select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_RIGHT, press_number=11) assert get_slider_title_value(page.driver, ".foo") == "5 .. 5" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_RIGHT, press_number=1) assert get_slider_title_value(page.driver, ".foo") == "5 .. 6" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_LEFT, press_number=2) assert get_slider_title_value(page.driver, ".foo") == "5 .. 5" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_RIGHT, press_number=6) assert get_slider_title_value(page.driver, ".foo") == "5 .. 10" assert page.has_no_console_errors()
def test_keypress_event(self, bokeh_model_page: BokehModelPage) -> None: slider = RangeSlider(start=0, end=10, value=(1, 5), title="bar", width=300) page = bokeh_model_page(slider) handle_lower = find_element_for(page.driver, slider, ".noUi-handle-lower") handle_upper = find_element_for(page.driver, slider, ".noUi-handle-upper") select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_RIGHT, press_number=1) assert get_slider_title_value(page.driver, slider) == "2 .. 5" select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_LEFT, press_number=5) assert get_slider_title_value(page.driver, slider) == "0 .. 5" select_element_and_press_key(page.driver, handle_lower, Keys.ARROW_RIGHT, press_number=11) assert get_slider_title_value(page.driver, slider) == "5 .. 5" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_RIGHT, press_number=1) assert get_slider_title_value(page.driver, slider) == "5 .. 6" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_LEFT, press_number=2) assert get_slider_title_value(page.driver, slider) == "5 .. 5" select_element_and_press_key(page.driver, handle_upper, Keys.ARROW_RIGHT, press_number=6) assert get_slider_title_value(page.driver, slider) == "5 .. 10" assert page.has_no_console_errors()