code: def test_clicking_zooms_out(
      self, single_plot_page: SinglePlotPage
  ) -> None:
      plot = _make_plot()
  
      page = single_plot_page(plot)
  
      [button] = page.get_toolbar_buttons(plot)
      button.click()
  
      page.eval_custom_action()
  
      first = page.results
      assert first["xrstart"] < 0
      assert first["xrend"] > 1
      assert first["yrstart"] < 0
      assert first["yrend"] > 1
  
      [button] = page.get_toolbar_buttons(plot)
      button.click()
  
      page.eval_custom_action()
  
      second = page.results
      assert second["xrstart"] < first["xrstart"]
      assert second["xrend"] > first["xrend"]
      assert second["yrstart"] < first["yrstart"]
      assert second["yrend"] > first["yrend"]
  
      assert page.has_no_console_errors()
  
file_path: bokeh/tests/integration/tools/test_zoom_out_tool.py
imports: from __future__ import annotations
  import pytest
  from bokeh.events import RangesUpdate
  from bokeh.models import ColumnDataSource, CustomJS, Plot, Range1d, Rect, ZoomOutTool
  from tests.support.plugins.project import SinglePlotPage
  from tests.support.util.selenium import RECORD
label_desc: Use image node_id 2 for calling the Test_ZoomOutTool obj's underlying member method code with example usage: obj.test_clicking_zooms_out(single_plot_page) without return types