veza/make/test.mk
senke a3f4ac6b70 fix: sync E2E tests with seed data + i18n fix
- Update E2E test credentials to match actual seed users
  (user@veza.music, artist@veza.music, admin@veza.music, mod@veza.music)
- Fix hardcoded "Suggested Accounts" in SuggestionsWidget with i18n key
- Replace hardcoded amelie_dubois references with CONFIG.users.creator
- Refactor auth, player, upload E2E tests for reliability
- Add tmt test plans and scripts for CI integration
- Simplify CI workflow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 19:42:03 +02:00

110 lines
5.3 KiB
Makefile

# ==============================================================================
# TEST & QUALITY (unit tests, lint, format)
# ==============================================================================
.PHONY: test test-tmt test-tmt-backend test-tmt-frontend test-tmt-services lint fmt status test-web test-backend-api test-stream-server
.PHONY: test-e2e test-e2e-critical
.PHONY: load-test-smoke load-test-backend load-test-all
.PHONY: lint-web lint-backend-api lint-stream-server
# Env vars for backend tests (align with docker-compose ports: Redis 16379, RabbitMQ 15672)
TEST_REDIS_ADDR ?= localhost:$(PORT_REDIS)
TEST_REDIS_URL ?= redis://localhost:$(PORT_REDIS)/15
TEST_RABBITMQ_URL ?= amqp://$(DB_USER):$(DB_PASS)@localhost:$(PORT_RABBITMQ_AMQP)/
test: infra-up ## [MID] Run All Tests (Fastest strategy)
@$(ECHO_CMD) "${BLUE}🧪 Running Tests...${NC}"
@$(ECHO_CMD) " [Go] Unit Tests..."
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && \
REDIS_ADDR=$(TEST_REDIS_ADDR) \
REDIS_TEST_URL=$(TEST_REDIS_URL) \
RABBITMQ_URL=$(TEST_RABBITMQ_URL) \
go test ./... -short)
@$(ECHO_CMD) " [Rust] Unit Tests..."
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo test --lib -q)
@$(ECHO_CMD) " [Web] Unit Tests..."
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm run test -- --run)
@$(ECHO_CMD) "${GREEN}✅ All tests passed.${NC}"
test-tmt: ## [MID] Run Unified TMT Pipeline (all vital tests)
@$(ECHO_CMD) "${BLUE}🧪 Running TMT Vital Pipeline...${NC}"
@command -v tmt >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ tmt is missing! Install with 'pip install tmt'${NC}"; exit 1; }
@tmt --root tmt run plan --name /vital
test-tmt-backend: ## [MID] Run TMT Backend tests only
@$(ECHO_CMD) "${BLUE}🧪 Running TMT Backend...${NC}"
@command -v tmt >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ tmt is missing! Install with 'pip install tmt'${NC}"; exit 1; }
@tmt --root tmt run plan --name /vital-backend
test-tmt-frontend: ## [MID] Run TMT Frontend tests only
@$(ECHO_CMD) "${BLUE}🧪 Running TMT Frontend...${NC}"
@command -v tmt >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ tmt is missing! Install with 'pip install tmt'${NC}"; exit 1; }
@tmt --root tmt run plan --name /vital-frontend
test-tmt-services: ## [MID] Run TMT Rust Services tests only
@$(ECHO_CMD) "${BLUE}🧪 Running TMT Services...${NC}"
@command -v tmt >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ tmt is missing! Install with 'pip install tmt'${NC}"; exit 1; }
@tmt --root tmt run plan --name /vital-services
test-web: ## [MID] Run Web tests only
@$(ECHO_CMD) "${BLUE}🧪 Running Web tests...${NC}"
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm run test -- --run)
test-e2e: ## [MID] Run Playwright E2E tests (Chromium, requires backend running)
@$(ECHO_CMD) "${BLUE}🧪 Running E2E tests (Playwright)...${NC}"
@(cd $(ROOT)/tests/e2e && npx playwright test --project=chromium)
test-e2e-critical: ## [MID] Run only @critical E2E tests (fast smoke)
@$(ECHO_CMD) "${BLUE}🧪 Running Critical E2E tests...${NC}"
@(cd $(ROOT)/tests/e2e && npx playwright test --project=chromium --grep "@critical")
test-backend-api: infra-up ## [MID] Run Go backend tests only
@$(ECHO_CMD) "${BLUE}🧪 Running Backend API tests...${NC}"
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && \
REDIS_ADDR=$(TEST_REDIS_ADDR) \
REDIS_TEST_URL=$(TEST_REDIS_URL) \
RABBITMQ_URL=$(TEST_RABBITMQ_URL) \
go test ./... -short)
test-stream-server: ## [MID] Run Stream server tests only
@$(ECHO_CMD) "${BLUE}🧪 Running Stream server tests...${NC}"
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo test --lib -q)
lint: ## [MID] Lint everything
@$(ECHO_CMD) "${BLUE}🔍 Linting Codebase...${NC}"
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo clippy -- -D warnings)
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && golangci-lint run ./...)
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm run lint)
lint-web: ## [MID] Lint web app only
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm run lint)
lint-backend-api: ## [MID] Lint Go backend only
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && golangci-lint run ./...)
lint-stream-server: ## [MID] Lint Stream server only
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo clippy -- -D warnings)
fmt: ## [MID] Format everything
@$(ECHO_CMD) "${BLUE}✨ Formatting...${NC}"
@(cd $(ROOT)/$(SERVICE_DIR_backend-api) && go fmt ./...)
@(cd $(ROOT)/$(SERVICE_DIR_stream-server) && cargo fmt)
@(cd $(ROOT)/$(SERVICE_DIR_web) && npm run format) || true
load-test-smoke: ## [MID] Run k6 smoke load test
@command -v k6 >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ k6 missing. Install: brew install k6${NC}"; exit 1; }
@k6 run $(ROOT)/loadtests/smoke.js
load-test-backend: ## [MID] Run k6 backend full load test
@command -v k6 >/dev/null 2>&1 || { $(ECHO_CMD) "${RED}❌ k6 missing. Install: brew install k6${NC}"; exit 1; }
@k6 run $(ROOT)/loadtests/backend/full.js
load-test-all: load-test-backend ## [MID] Run all k6 load tests (backend, stream)
@k6 run $(ROOT)/loadtests/stream/http.js || true
status: ## [MID] Show system health & stats
@$(ECHO_CMD) "${BOLD}DOCKER STATS:${NC}"
@docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" 2>/dev/null | grep -E "NAME|veza" || echo "No containers running"
@$(ECHO_CMD) ""
@$(ECHO_CMD) "${BOLD}LOCAL PORTS:${NC}"
@lsof -i :$(PORT_backend-api) -i :$(PORT_stream-server) -i :$(PORT_web) 2>/dev/null | grep LISTEN || echo "No apps listening."