code: def test_cbcx004_triggered_backward_compat(dash_duo):
      app = Dash(__name__)
      app.layout = html.Div(
          [html.Button("click!", id="btn"), html.Div(id="out")]
      )
  
      @app.callback(
          Output("out", "children"), [Input("btn", "n_clicks")]
      )
      def report_triggered(n):
          triggered = callback_context.triggered
          bool_val = "truthy" if triggered else "falsy"
          split_propid = json.dumps(triggered[0]["prop_id"].split("."))
          full_val = json.dumps(triggered)
          return "triggered is {}, has prop/id {}, and full value {}".format(
              bool_val, split_propid, full_val
          )
  
      dash_duo.start_server(app)
  
      dash_duo.wait_for_text_to_equal(
          "#out",
          'triggered is falsy, has prop/id ["", ""], and full value '
          '[{"prop_id": ".", "value": null}]',
      )
  
      dash_duo.find_element("#btn").click()
      dash_duo.wait_for_text_to_equal(
          "#out",
          'triggered is truthy, has prop/id ["btn", "n_clicks"], and full value '
          '[{"prop_id": "btn.n_clicks", "value": 1}]',
      )
  
file_path: dash/tests/integration/callbacks/test_callback_context.py
imports: import json
  import operator
  import pytest
  from dash import Dash, ALL, Input, Output, html, dcc, callback_context, ctx
  from dash.exceptions import PreventUpdate, MissingCallbackContextException
  import dash.testing.wait
  from selenium.webdriver.common.action_chains import ActionChains
label_desc: Use image node_id 4 for calling a global function with example usage: test_cbcx004_triggered_backward_compat(dash_duo) and returns: str