Skip to content

Testing

github-actions[bot] edited this page Aug 14, 2026 · 5 revisions

Testing — RGX-Hello

RGX-Hello is two things in one install:

  1. The reference addondata/core.lua is the canonical hello-world: the smallest complete RGX addon, written in the declarative RGXAddon style you should copy when starting your own.
  2. The framework's in-game test suitedata/visualtest.lua exercises every user-facing framework module through the manual API, and doubles as the reference for going beyond the declarative surface.

Commands

Command Opens
/rgxhello RGX-Hello's own options panel (the hello-world addon)
/rgxvisual or /rgxviz The full test suite
/rgxcolor or /rgxcp The color picker directly

Suite coverage

Tab Framework features exercised
Colors RGXColorPicker (SV box, hue bar, HEX/RGB, presets), UI:CreateColorPicker swatches + Reset
Controls UI:CreateToggle / CreateSlider / CreateVolumeSlider, reset buttons, label word-wrap
Dropdowns RGXDropdowns:CreateNestedDropdown (groups, separators, checked state)
Media RGXFonts font dropdown, RGXTextures statusbar textures
Tooltip Tip:Attach builder, manual Show/Hide, HookNative("item") injection
Auras IterateAuras scan, WatchUnit + OnApplied/OnRemoved live log with unsubscribe
Minimap MM:Create (icon, tooltip, drag, persistent angle), Toggle/IsShown
Design RGX:Font one-call styling, RGXDesign primitives, theme tokens
System declarative every self-cancellation, RGX:After, RGX:Every, RGX:CancelTimer

Sound is intentionally untested here — the sound module is a per-addon registry that BLU exercises in production, which is a more honest test than a synthetic registration.

The standing pattern

When a framework module ships or changes, its test tab lands in RGX-Hello in the same cycle. Contract-side, the loop closes from the other direction too: the framework's RGX-MCP end-to-end test validates and audits RGX-Hello on every run.

CI also executes focused declarative behavior in a real Lua 5.1 VM. tools/ci/declarative-every-runtime-test.lua verifies strict validation before resource registration, ADDON_LOADED setup ordering, deterministic dispatch, owner/name metadata, self-cancellation, duplicate rejection, and callback failure isolation. This headless fixture is not in-game validation and does not model Blizzard UI, combat lockdown, taint, or secret values.

Clone this wiki locally