mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-06 20:32:44 +08:00
feat: add CLAUDE.md
This commit is contained in:
128
CLAUDE.md
Normal file
128
CLAUDE.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
HttpRunner v5 is a comprehensive testing framework written in Go that supports API testing, load testing, and UI automation across multiple platforms (Android/iOS/Harmony/Browser). The framework integrates LLM technology for intelligent test automation and uses a pure visual-driven approach (OCR/CV/VLM) for UI testing.
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Building
|
||||
- `make build` - Build the hrp CLI tool with static linking and embedded version info
|
||||
- `go build -o output/hrp ./cmd/cli` - Alternative build command
|
||||
- `make test` - Run unit tests with race detection
|
||||
|
||||
### Testing
|
||||
- `go test -race -v ./...` - Run all tests with race detection
|
||||
- `go test -v ./tests/...` - Run test suite only
|
||||
- `go test -v ./uixt/...` - Run UI automation tests
|
||||
- `go test -v ./cmd/...` - Run CLI command tests
|
||||
|
||||
### Code Quality
|
||||
- `go mod tidy` - Clean up dependencies
|
||||
- `gofmt -w .` - Format code
|
||||
- Pre-commit hooks are available in `scripts/` directory
|
||||
|
||||
## Core Architecture
|
||||
|
||||
### Main Components
|
||||
|
||||
**Core Testing Engine**
|
||||
- `runner.go` - Main test runner (HRPRunner, CaseRunner, SessionRunner)
|
||||
- `testcase.go` - Test case definitions and loading (ITestCase interface)
|
||||
- `step.go` - Step definitions and configurations
|
||||
- `step_*.go` - Specific step implementations (request, api, testcase, ui, etc.)
|
||||
|
||||
**Step Types**
|
||||
- `step_request.go` - HTTP/HTTPS requests
|
||||
- `step_api.go` - API calls with parameters
|
||||
- `step_testcase.go` - Nested test cases
|
||||
- `step_websocket.go` - WebSocket communication
|
||||
- `step_ui.go` - UI automation steps
|
||||
- `step_transaction.go` - Transaction grouping
|
||||
- `step_rendezvous.go` - Synchronization points
|
||||
- `step_shell.go` - Shell command execution
|
||||
- `step_function.go` - Custom function calls
|
||||
|
||||
**UI Automation (uixt/)**
|
||||
- `device.go` - Device abstraction interface (IDevice)
|
||||
- `driver.go` - Driver interface and session management
|
||||
- `android_*.go` - Android platform implementation (ADB/UIAutomator2)
|
||||
- `ios_*.go` - iOS platform implementation (WDA)
|
||||
- `harmony_*.go` - HarmonyOS implementation (HDC)
|
||||
- `browser_*.go` - Web browser automation
|
||||
- `ai/` - AI-powered UI interaction (OCR/VLM)
|
||||
|
||||
**CLI Interface (cmd/)**
|
||||
- `root.go` - Root command and global configuration
|
||||
- `run.go` - Test execution
|
||||
- `server.go` - HTTP server mode
|
||||
- `convert.go` - Format conversion utilities
|
||||
- `build.go` - Plugin building
|
||||
- `adb/` - Android device management
|
||||
- `ios/` - iOS device management
|
||||
|
||||
### Plugin System
|
||||
|
||||
The framework supports both Go and Python plugins:
|
||||
- `build.go` - Plugin compilation system
|
||||
- `plugin.go` - Plugin interface definitions
|
||||
- Templates in `internal/scaffold/templates/plugin/`
|
||||
|
||||
### Configuration Management
|
||||
|
||||
- `config.go` - Global configuration
|
||||
- `internal/config/` - Environment and settings management
|
||||
- Environment variables and .env file support
|
||||
|
||||
## Key Design Patterns
|
||||
|
||||
### Interface-Driven Architecture
|
||||
- `ITestCase` interface for different test case sources
|
||||
- `IDevice` interface for multi-platform support
|
||||
- `IDriver` interface for different automation drivers
|
||||
|
||||
### Step-Based Testing
|
||||
- Each test consists of configurable steps
|
||||
- Steps support setup/teardown hooks
|
||||
- Variables and parameters flow between steps
|
||||
|
||||
### Plugin Architecture
|
||||
- Hashicorp go-plugin for Go plugins
|
||||
- Python plugin support via funplugin
|
||||
- Template-based plugin generation
|
||||
|
||||
## Testing Approach
|
||||
|
||||
### Test Formats Supported
|
||||
- YAML/JSON test cases
|
||||
- Go test files
|
||||
- Python pytest integration
|
||||
- HAR, Postman, cURL conversion
|
||||
|
||||
### UI Testing Strategy
|
||||
- Pure visual-driven (no element locators)
|
||||
- OCR/VLM for text recognition
|
||||
- Cross-platform unified API
|
||||
- AI-powered interaction planning
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
### Code Structure
|
||||
- Core framework logic in root directory
|
||||
- Platform-specific implementations in `uixt/`
|
||||
- CLI commands in `cmd/`
|
||||
- Internal utilities in `internal/`
|
||||
- Examples in `examples/`
|
||||
|
||||
### Dependencies
|
||||
- Go 1.23+ required
|
||||
- Uses Cobra for CLI
|
||||
- Integrates with multiple automation frameworks
|
||||
- LLM integration via CloudWeGo Eino
|
||||
|
||||
### Build Configuration
|
||||
- Static linking for deployment
|
||||
- Version info embedded via ldflags
|
||||
- Cross-platform builds supported
|
||||
Reference in New Issue
Block a user