code: def test_cbwc004_layout_chunk_changed_props(dash_duo):
      app = Dash(__name__)
      app.layout = html.Div(
          [
              dcc.Input(
                  id={"type": "input", "index": 1}, value="input-1"
              ),
              html.Div(id="container"),
              html.Div(id="output-outer"),
              html.Button("Show content", id="btn"),
          ]
      )
  
      @app.callback(
          Output("container", "children"), [Input("btn", "n_clicks")]
      )
      def display_output(n):
          if n:
              return html.Div(
                  [
                      dcc.Input(
                          id={"type": "input", "index": 2},
                          value="input-2",
                      ),
                      html.Div(id="output-inner"),
                  ]
              )
          else:
              return "No content initially"
  
      def trigger_info():
          triggered = dash.callback_context.triggered
          return "triggered is {} with prop_ids {}".format(
              "Truthy" if triggered else "Falsy",
              ", ".join(t["prop_id"] for t in triggered),
          )
  
      @app.callback(
          Output("output-inner", "children"),
          [Input({"type": "input", "index": ALL}, "value")],
      )
      def update_dynamic_output_pattern(wc_inputs):
          return trigger_info()
          # When this is triggered because output-2 was rendered,
          # nothing has changed
  
      @app.callback(
          Output("output-outer", "children"),
          [Input({"type": "input", "index": ALL}, "value")],
      )
      def update_output_on_page_pattern(value):
          return trigger_info()
          # When this triggered on page load,
          # nothing has changed
          # When dcc.Input(id={'type': 'input', 'index': 2})
          # is rendered (from display_output)
          # then `{'type': 'input', 'index': 2}` has changed
  
      dash_duo.start_server(app)
  
      dash_duo.wait_for_text_to_equal(
          "#container", "No content initially"
      )
      dash_duo.wait_for_text_to_equal(
          "#output-outer", "triggered is Falsy with prop_ids ."
      )
  
      dash_duo.find_element("#btn").click()
      dash_duo.wait_for_text_to_equal(
          "#output-outer",
          'triggered is Truthy with prop_ids {"index":2,"type":"input"}.value',
      )
      dash_duo.wait_for_text_to_equal(
          "#output-inner", "triggered is Falsy with prop_ids ."
      )
  
      dash_duo.find_elements("input")[0].send_keys("X")
      trigger_text = 'triggered is Truthy with prop_ids {"index":1,"type":"input"}.value'
      dash_duo.wait_for_text_to_equal("#output-outer", trigger_text)
      dash_duo.wait_for_text_to_equal("#output-inner", trigger_text)
  
file_path: dash/tests/integration/callbacks/test_wildcards.py
imports: import pytest
  import re
  from selenium.webdriver.common.keys import Keys
  import json
  from dash.testing import wait
  import dash
  from dash import Dash, Input, Output, State, ALL, ALLSMALLER, MATCH, html, dcc
  from tests.assets.todo_app import todo_app
  from tests.assets.grouping_app import grouping_app
label_desc: Use image node_id 7 for calling a global function with example usage: test_cbwc004_layout_chunk_changed_props(dash_duo) and returns: str, trigger_info, trigger_info, html, str