Build, test & CI

Makefile (canonical entry point)

The Makefile auto-installs pinned tool versions into ./bin/.

TaskCommand
Build the binarymake build
Unit testsmake test
A single Go testgo test ./app/<pkg>/ -run TestName (after make .gen mocks)
Lintmake lint
Everythingmake default (lint test test-integration)
Regenerate Wiremake .gen
Regenerate mocksmake mocks
Dev server + tester UImake -j=2 dev.run
Build the docs sitemake docs.build (or sh website/build.sh)
Serve the docs sitemake docs.serve

Code generation

  • Wirewire_gen.go is generated from wire.go + wire_bindings.go. Regenerate with make .gen whenever providers/bindings change.
  • Mocks — mockery mirrors app/ interfaces into mocks/. Regenerate with make mocks whenever an interface changes.

Testing

Unit tests live beside the code (*_test.go) and import generated mocks. The app/pdfrender/cdp render path and the loaders are well covered; the validate command doubles as an integration smoke test that renders every example.

Robot Framework integration tests live under integration-tests/ and run via Earthly with Docker Compose (not through the Go Makefile). They cover the callback event, examples, HTTP errors, schema, static serving, status, templates, and the tester UI.

CI & images

  • GitLab CI (.gitlab-ci.yml) runs checks and builds/pushes images via Earthly; it also has a pages job that builds the documentation site (this site) with Zola and publishes it to GitLab Pages.
  • Earthly (Earthfile) is the build system: earthly +all-checks runs Go tests/lint, cspell, editorconfig checks, the tester build, and integration tests; earthly +all-images builds the multi-arch Chromium/Firefox images.

Documentation build

The site is Zola + AdiDoks under website/. website/build.sh copies the canonical docs/ into the Zola content tree, generates llms.txt/llms-full.txt and the raw .md mirror, renders the Gallery from live local renders (building the binary and rendering every example), and runs Zola. See the repo’s website/ directory.

Version control & contribution policy

The repo uses colocated jj + git; commits are kept single-purpose and every notable change is recorded in CHANGELOG.md. See AGENTS.md for the full policy (quality gates, preparatory-refactor rule).