Root verify runs check first, then a per-app verify in each Makefile: sensor slots hooked to VERIFY_SENSORS (empty today, so nothing is claimed that is not run) and then that app's suite. Measured: 9.9s wall, app 178 + blogex 156 tests.
79 lines
2.1 KiB
Makefile
79 lines
2.1 KiB
Makefile
# Makefile for Firehose monorepo
|
|
|
|
MISE_BIN ?= mise
|
|
|
|
.PHONY: check precommit deps compile test test-elisp format verify
|
|
|
|
# Cheap static gate over both apps, cheapest first. No database, no coverage:
|
|
# this is the loop you run freely while working and before every commit.
|
|
check:
|
|
@echo "==> check: app (credo --strict, format)"
|
|
@$(MAKE) -C app MISE_BIN=$(MISE_BIN) check
|
|
@echo "==> check: blogex (compile, format)"
|
|
@$(MAKE) -C blogex MISE_BIN=$(MISE_BIN) check
|
|
@echo "==> check: toolchain pins"
|
|
@bash scripts/check-pins.sh
|
|
|
|
# Precommit target for CI/pre-commit hooks
|
|
precommit: check
|
|
|
|
# The Lens pass: everything `check` does, plus the heavy sensors and both test
|
|
# suites, cheapest first. `.githooks/pre-push` runs this before every push (see
|
|
# `make hooks`); run it yourself before handing off. Bypass deliberately with
|
|
# `git push --no-verify`.
|
|
verify: check
|
|
@echo "==> verify: app"
|
|
@$(MAKE) -C app MISE_BIN=$(MISE_BIN) verify
|
|
@echo "==> verify: blogex"
|
|
@$(MAKE) -C blogex MISE_BIN=$(MISE_BIN) verify
|
|
|
|
# Sync dependencies
|
|
deps:
|
|
@make -C app deps
|
|
|
|
# Compile the project
|
|
compile:
|
|
@make -C app compile
|
|
|
|
# Run tests (app suite + blogex library suite)
|
|
test:
|
|
@make -C app test
|
|
@make -C blogex test
|
|
|
|
# Run Emacs Lisp tests for roam-export-blog (requires emacs on PATH)
|
|
test-elisp:
|
|
emacs --batch -Q -l org -l ox-md -l scripts/roam-export-blog.el -l scripts/roam-export-blog-test.el -f ert-run-tests-batch-and-exit
|
|
|
|
# Format code
|
|
format:
|
|
@make -C app format
|
|
|
|
# Serve the app
|
|
serve:
|
|
@cd app && mix phx.server
|
|
|
|
# Run Playwright browser-based tests (requires running server)
|
|
# Set PLAYWRIGHT_BASE_URL to point at the running Phoenix app
|
|
playwright:
|
|
@make -C app playwright
|
|
|
|
# Run Playwright in UI mode (headed browser)
|
|
playwright-ui:
|
|
@make -C app playwright-ui
|
|
|
|
# Run Playwright against Docker Chrome container (must be running)
|
|
playwright-docker:
|
|
@make -C app playwright-docker
|
|
|
|
# Full e2e workflow: start Chrome container, run tests, stop container
|
|
playwright-full:
|
|
@make -C app playwright-full
|
|
|
|
# Start Docker Chrome container
|
|
playwright-docker-start:
|
|
@make -C app playwright-docker-start
|
|
|
|
# Stop Docker Chrome container
|
|
playwright-docker-stop:
|
|
@make -C app playwright-docker-stop
|