code: def test_ywheel_can_be_selected_and_deselected(
      self, single_plot_page: SinglePlotPage
  ) -> None:
      plot = _make_plot("height")
  
      page = single_plot_page(plot)
  
      # Check is not active
      [button] = page.get_toolbar_buttons(plot)
      assert "active" not in button.get_attribute("class")
  
      # Click and check is active
      [button] = page.get_toolbar_buttons(plot)
      button.click()
      assert "active" in button.get_attribute("class")
  
      # Click again and check is not active
      [button] = page.get_toolbar_buttons(plot)
      button.click()
      assert "active" not in button.get_attribute("class")
  
      assert page.has_no_console_errors()
  
file_path: bokeh/tests/integration/tools/test_wheel_pan_tool.py
imports: from __future__ import annotations
  import pytest
  from bokeh.events import RangesUpdate
  from bokeh.models import ColumnDataSource, CustomJS, Plot, Range1d, Rect, WheelPanTool
  from tests.support.plugins.project import SinglePlotPage
  from tests.support.util.selenium import RECORD, SCROLL
label_desc: Use image node_id 4 for calling the Test_WheelPanTool obj's underlying member method code with example usage: obj.test_ywheel_can_be_selected_and_deselected(single_plot_page) without return types