bec7a1074c
The component tests rendered lazy nodes to HTML through two competing pieces of scaffolding: a magic ``_RenderingComponents.__getattr__`` proxy that auto-str()'d any capitalized builder, plus separate ``str()`` wrapper functions for Checkbox / Radio (test_components) and SearchSelect / FilterSelect / Pill (test_search_select). Replace both with one explicit convention: import the real components and wrap node-returning calls in ``str(...)`` at the call site. ``Node.__str__`` returns a ``SafeText``, so the ``assertIsInstance(..., SafeText)`` checks stay meaningful and every string assertion is unchanged. Non-node helpers (``randomid``, ``_resolve_name_with_icon``, ``_render_element``, the legacy string ``Component()``) are called directly. No production code touched; 141 component/search-select tests and the full 444-test suite pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>