This project is not covered by Drupal’s security advisory policy.
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 component |
Installation
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.
Project information
- Project categories: Developer tools
13 sites report using this module
- Created by mherchel on , updated
This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities.

