theming_tools
A suite of test modules for Drupal admin theme development. Each submodule exercises one UI component or form pattern — buttons, dialogs, tables, form widgets, pagers, tabs, and so on — across multiple themes so regressions can be spotted visually.
None of the test pages are theme-specific — each renders in whatever theme is active, so the suite works equally well against Claro, Admin, Olivero, Stark, and any contrib or custom admin theme. The whole point is to surface cross-theme rendering differences.
Not for production
This module is intended for local development and regression testing only. Several submodules intentionally open admin routes to anonymous users, ship fixture content types and test data, or disable render caching. Do not install on a public site.
Features
- Dashboard at
/admin/modules/theming-toolslisting every test submodule with enable/disable operations and bulk actions. - Navigation drawer — a "Theming Tools" expandable group auto-injected into the admin menu. Every enabled test submodule's page appears here automatically, sorted alphabetically.
- Auto-discovery — submodules tagged
theming_test: trueare picked up by the dashboard and navigation drawer with zero configuration. - 3 test themes — fixture themes for the Appearance admin page, including an intentionally incompatible theme for testing that code path.
Not for production damnit!
This module is intended for local development and regression testing only. Several submodules intentionally open admin routes to anonymous users, ship fixture content types and test data, or disable render caching. Do not install on a public site.
Included submodules
actionlink Action Link component autocomplete Autocomplete form widget button Buttons and button links (primary, secondary, small variants) card Card component (appearance admin page) checkboxradio Checkboxes and radios on a contact form details Details element (site information form) devhelp Disables render caching and enables debug mode dialog Regular, modal, off-canvas, and off-canvas-top dialogs dropbutton Dropbutton / Operations component exposed_form Views exposed form and bulk operations fieldcardinality Multi-cardinality field widgets fieldset Fieldset component imagefile Image and managed file form widgets lang_hebrew Hebrew language + language switcher for RTL tests message Message component and Drupal.Message JS API pager Pagers (via Views) password Password-confirm widget pointertracker Crosshair overlay following mouse/touch pointer presuf Form item prefixes and suffixes progress Progress indicators (throbber, progress bar, fullscreen) select Single- and multi-value select widgets sidebar Entity meta sidebar tab Local task tabs table Table component (sortable, selectable, responsive) tabledrag Draggable tables (nested hierarchy, mixed-height rows) testfilters Text formats and CKEditor 5 editor config textarea Plain and formatted textarea widgets textfixtures Color, password, and search field types textform Text-like form items (textfield, telephone, email, url, datetime) themeswitcher Footer form to switch active theme via cookie title_shortcut Page titles alongside shortcut badges tt_navigation Core Navigation block rendering tt_node Minimal test content type used as a fixture vertical_tabs Vertical Tabs componentInstallation
drush en theming_tools # then enable specific test submodules as needed: drush en button dialog table tabledrag dropbutton textform textarea
Or enable everything at once through the dashboard at /admin/modules/theming-tools.
Some submodules depend on the Contact contrib module (moved out of core in Drupal 11). If it isn't installed, those submodules simply won't enable; everything else works without it.
Drupal version support
Supports Drupal 10.3, 11, and 12. Actively tested against the main branch of Drupal core.
BTW, this is not for production
This module is intended for local development and regression testing only. Several submodules intentionally open admin routes to anonymous users, ship fixture content types and test data, or disable render caching. Do not install on a public site.
History
This module was originally created by Zoltan Horvath as cd_tools to support development of the Claro admin theme. It has since been renamed and generalized into a theme-agnostic test harness for any Drupal admin theme.