Test and check#
luajit tests/run_tests.lua # addon tests
luacheck SideQuest tests # lint
uv run --directory uploader pytest # uploader tests
The Lua tests run outside the game, against tests/wowstub.lua, a stub of the WoW functions the
addon calls. They don’t need the game installed.
The tests also write tests/fixtures/export_v1.txt and export_v2.txt: sample raid records that
the website’s own tests import. If these change, copy them into the website repo too.
Layout preview#
tests/preview/ draws every tab and popup as a static image, without opening the game, so you
can check a layout change without logging in. It loads the real addon code under the same stub
the unit tests use, feeds it made-up demo data, and renders the result. From the addon repo root:
uv run --with pillow tests/preview/fetch_atlases.py # once per checkout, or when new atlas names are added
luajit tests/preview/record.lua
mise exec -C <path-to-website>/website -- node tests/preview/screenshot.mjs
fetch_atlases.py downloads WoW’s own window-chrome art so the preview looks like Forever’s real
window frame, not a placeholder. screenshot.mjs borrows Playwright from the website repo’s
node_modules, since this repo has no JavaScript toolchain of its own; point mise exec -C at
the inner website/website package, not the outer website/ checkout.
Output goes to tests/preview/html/ (static pages you can open in a browser), tests/preview/out/
(PNG screenshots), and tests/preview/index.html (a gallery linking all of them). See
tests/preview/README.md for what this tool can and can’t prove about the real game’s rendering.