code: def test_inner_dims_trigger_on_dynamic_add(
      self, bokeh_server_page: BokehServerPage
  ) -> None:
      button = Button()
  
      @dataclass
      class Data:
          iw: tuple[int, Any] | None = None
          ih: tuple[int, Any] | None = None
  
      data = Data()
  
      def modify_doc(doc: Document):
          p1 = Fig(
              height=400,
              width=400,
              x_range=Range1d(0, 1),
              y_range=Range1d(0, 1),
              min_border=10,
          )
          p1.circle([1, 2, 3], [1, 2, 3])
          p2 = Fig(
              height=400,
              width=400,
              x_range=Range1d(0, 1),
              y_range=Range1d(0, 1),
              min_border=10,
          )
          p1.circle([1, 2, 3], [1, 2, 3])
  
          layout = column(p1, button)
  
          def cb():
              if p2 not in layout.children:
                  layout.children = [p1, button, p2]
  
          button.on_event("button_click", cb)
  
          def iw(attr: str, old: int, new: int):
              data.iw = (old, new)
  
          def ih(attr: str, old: int, new: int):
              data.ih = (old, new)
  
          p2.on_change("inner_width", iw)
          p2.on_change("inner_height", ih)
          doc.add_root(layout)
  
      page = bokeh_server_page(modify_doc)
  
      find_element_for(page.driver, button, ".bk-btn").click()
  
      # updates can take some time
      time.sleep(0.5)
  
      assert data.iw is not None, "inner_width was not updated"
      assert data.iw[0] is Undefined
      assert isinstance(data.iw[1], int)
      assert 0 < data.iw[1] < 400
  
      assert data.ih is not None, "inner_height was not updated"
      assert data.ih[0] is Undefined
      assert isinstance(data.ih[1], int)
      assert 0 < data.ih[1] < 400
  
      assert page.has_no_console_errors()
  
imports: from __future__ import annotations
  import pytest
  import time
  from dataclasses import dataclass
  from typing import Any
  from bokeh.core.property.singletons import Undefined
  from bokeh.document import Document
  from bokeh.events import LODEnd, LODStart, RangesUpdate
  from bokeh.layouts import column
  from bokeh.models import Button, Plot, Range1d
  from bokeh.plotting import figure
  from bokeh.plotting.glyph_api import GlyphAPI
  from tests.support.plugins.project import BokehServerPage
  from tests.support.util.selenium import find_element_for
label_desc: Use image node_id 1 for calling the Test_Plot obj's underlying member method code with example usage: obj.test_inner_dims_trigger_on_dynamic_add(bokeh_server_page) without return types