Files
firehose/app/Makefile
T
Firehose Bot 5d7eddbfef fix(build): resolve mise via PATH instead of hardcoded ~/.local/bin path
mise now lives at /opt/homebrew/bin/mise (Homebrew install), so the
hardcoded MISE_BIN default broke make test/deps/compile. Fall back to
PATH lookup, matching what the check target already did.
2026-10-15 13:43:26 +01:00

97 lines
3.4 KiB
Makefile

# Makefile for Firehose app
MISE_BIN ?= mise
MISE_EXEC = $(MISE_BIN) exec --
.PHONY: check precommit deps compile test format credo
# Run all static analysis checks (no database required)
check: credo format
# Precommit target for CI/pre-commit hooks
precommit: check compile
# Sync dependencies
deps:
$(MISE_EXEC) mix deps.get
# Compile the project
compile:
$(MISE_EXEC) mix compile --warnings-as-errors
# Run tests (requires PostgreSQL running on localhost:5432)
# Note: If you don't have PostgreSQL, you can skip tests with `make check`
test: deps compile
$(MISE_EXEC) mix test
# Format code
format:
$(MISE_EXEC) mix format
# =============================================================================
# Playwright e2e browser tests
# =============================================================================
#
# Requires the Phoenix dev server running on the default port (8056).
# Set PLAYWRIGHT_BASE_URL to point at a different server/port.
#
# Available browsers (local):
# PLAYWRIGHT_BROWSER=firefox (default — works on macOS 15)
# PLAYWRIGHT_BROWSER=chromium (crashes on macOS 15, use Docker Chrome)
# PLAYWRIGHT_BROWSER=webkit
#
# Docker Chrome (alternative):
# 1. docker compose -f docker-compose.chrome.yml up -d
# 2. PLAYWRIGHT_BROWSERS_PATH=assets/node_modules/playwright-core/.local-browsers \
# npx playwright test --config=playwright.docker.config.ts
#
# =============================================================================
# Run Playwright e2e tests (default: local Firefox)
# Usage: make playwright
# PLAYWRIGHT_BROWSER=chromium make playwright
playwright:
cd assets && PLAYWRIGHT_BROWSERS_PATH=node_modules/playwright-core/.local-browsers npx playwright test --config=../playwright.config.ts
# Run a specific Playwright test file
# Usage: make playwright-test test/e2e/smoke.spec.ts
playwright-test:
cd assets && PLAYWRIGHT_BROWSERS_PATH=node_modules/playwright-core/.local-browsers npx playwright test --config=../playwright.config.ts $(filter-out $@,$(MAKECMDGOALS))
# Run Playwright tests with UI mode (headed browser)
playwright-ui:
cd assets && PLAYWRIGHT_BROWSERS_PATH=node_modules/playwright-core/.local-browsers npx playwright test --config=../playwright.config.ts --ui
# Show last Playwright HTML report
playwright-report:
cd assets && npx playwright show-report
# Start Docker Chrome container for remote Playwright
playwright-docker-start:
docker compose -f docker-compose.chrome.yml up -d
# Stop Docker Chrome container
playwright-docker-stop:
docker compose -f docker-compose.chrome.yml down
# Run Playwright against Docker Chrome (container must be running)
playwright-docker:
cd assets && PLAYWRIGHT_BROWSERS_PATH=node_modules/playwright-core/.local-browsers npx playwright test --config=../playwright.docker.config.ts
# Run full end-to-end workflow: start Docker Chrome, run tests, stop container
playwright-full: playwright-docker-start
@echo "Waiting for Chrome to be ready..."
@sleep 3
cd assets && PLAYWRIGHT_BROWSERS_PATH=node_modules/playwright-core/.local-browsers npx playwright test --config=../playwright.docker.config.ts; \
EXIT_CODE=$$?; \
cd ..; \
docker compose -f docker-compose.chrome.yml down; \
exit $$EXIT_CODE
# =============================================================================
# Static analysis
# =============================================================================
# Run Credo static analysis
credo:
$(MISE_EXEC) mix credo --strict