grazulex/laravel-tddraft
Composer 安装命令:
composer require --dev grazulex/laravel-tddraft
包简介
A powerful Laravel package that provides LaravelTddraft functionality with modern PHP 8.3+ features.
关键字:
README 文档
README
A Laravel package that enables safe Test-Driven Development with isolated draft testing, unique reference tracking, and powerful filtering options for professional TDD workflows.
📖 Table of Contents
- Overview
- ✨ Features
- 📦 Installation
- 🚀 Quick Start
- 🔧 Five-Command TDD Workflow
- 🔍 Filter and Group Options
- 📚 Documentation
- 💡 Examples
- 🧪 Testing
- 🔧 Requirements
- 🤝 Contributing
- 🔒 Security
- 📄 License
Overview
Laravel TDDraft enables true Test-Driven Development in Laravel applications by providing a separate, isolated testing environment where you can practice the Red-Green-Refactor cycle without affecting your CI pipeline or breaking team builds.
The key innovation is the five-command workflow that separates experimental draft tests from production tests, with powerful filtering and status tracking to manage your TDD process professionally.
🏗️ Test Architecture & Isolation
Laravel TDDraft creates a completely separate testing environment that doesn't interfere with your existing test suite:
tests/
├── Feature/ # 🟢 Your production CI tests (unchanged)
├── Unit/ # 🟢 Your production CI tests (unchanged)
└── TDDraft/ # 🔵 Isolated draft tests (new - never affects CI)
├── Feature/ # Draft feature tests
├── Unit/ # Draft unit tests
└── .status.json # Status tracking (auto-generated)
Key Architectural Benefits:
- 🚫 Zero CI Interference: TDDraft tests in
tests/TDDraft/are completely excluded from your main test suites - 🔄 Independent Operation: Your existing
tests/Unit/andtests/Feature/continue working exactly as before - 📋 Separate Test Suites: PHPUnit/Pest configuration keeps TDDraft isolated via test suite definitions
- ⚡ Parallel Development: Teams can practice TDD in the draft environment while CI runs production tests
How Isolation Works:
Standard PHPUnit/Pest Configuration:
<testsuites> <testsuite name="Unit"> <directory suffix="Test.php">tests/Unit</directory> <!-- Production tests --> </testsuite> <testsuite name="Feature"> <directory suffix="Test.php">tests/Feature</directory> <!-- Production tests --> </testsuite> <!-- tests/TDDraft/ is intentionally NOT included --> </testsuites>
TDDraft Tests Run Separately:
# Your CI pipeline (unchanged) pest # Runs only tests/Unit + tests/Feature phpunit # Runs only tests/Unit + tests/Feature # TDDraft workflow (isolated) php artisan tdd:test # Runs only tests/TDDraft/** pest --testsuite=tddraft # Alternative access to draft tests
This architectural separation ensures that failing TDDraft tests never break your CI builds while you practice the Red-Green-Refactor cycle.
🎯 Why Laravel TDDraft?
TDD is hard to practice in real projects because:
- Writing failing tests breaks CI builds and affects the team
- Experimental tests clutter your main test suite
- There's no easy way to track test evolution during TDD cycles
- Promoting draft tests to production requires manual work
Laravel TDDraft solves these problems with:
- ✅ Isolated Draft Testing - Separate test environment that never affects CI
- ✅ Unique Reference Tracking - Every test gets a trackable ID for evolution monitoring
- ✅ Powerful Filtering - Advanced options to filter tests by type, path, status, and reference
- ✅ Status Tracking - Automatic monitoring of test results and history
- ✅ Automated Promotion - Easy graduation from draft to production tests
- ✅ Professional Workflow - Structured five-command process for TDD adoption
✨ Features
- 🏗️ Complete Test Isolation -
tests/TDDraft/directory completely separate fromtests/Unit/andtests/Feature/- never affects CI - 🔖 Unique Reference Tracking - Every test gets a
tdd-YYYYMMDDHHMMSS-RANDOMID for precise tracking - 🔍 Advanced Filtering - Filter tests by type, path, reference, status, and more
- 📊 Automatic Status Tracking - Monitor test results and history during TDD cycles
- 🎯 Professional Test Management - List, filter, and manage draft tests with detailed views
- 🚀 Automated Promotion - Graduate mature tests to CI suite with preserved audit trails
- 🔄 True TDD Workflow - Safe Red-Green-Refactor cycles without breaking builds
- 📋 Group-Based Organization - Pest groups for flexible test filtering and execution
- ⚡ Five-Command Simplicity - Complete TDD workflow with just five intuitive commands
- 🧪 Zero Interference Design - Your existing Unit/Feature tests continue working unchanged
📦 Installation
Install the package via Composer:
composer require grazulex/laravel-tddraft --dev
💡 Auto-Discovery
The service provider will be automatically registered thanks to Laravel's package auto-discovery.
Publish configuration:
php artisan vendor:publish --tag=tddraft-config
🚀 Quick Start
1. Initialize TDDraft Environment
php artisan tdd:init
This sets up the isolated draft testing environment with PHPUnit/Pest configuration.
2. Create Your First Draft Test
php artisan tdd:make "User can register"
Creates a draft test with unique reference tracking:
/** * TDDraft Test: User can register * Reference: tdd-20250727142530-Abc123 * Type: feature */ it('user can register', function (): void { // TODO: Implement your test scenario here expect(true)->toBeTrue('Replace this with your actual test implementation'); }) ->group('tddraft', 'feature', 'tdd-20250727142530-Abc123');
3. Run Draft Tests with Filtering
# Run all draft tests php artisan tdd:test # Filter by test name php artisan tdd:test --filter="user registration" # Run with coverage php artisan tdd:test --coverage
4. Manage Tests with Advanced Filtering
# List all draft tests php artisan tdd:list # Filter by type php artisan tdd:list --type=feature # Filter by path php artisan tdd:list --path=Auth # Show detailed view with status information php artisan tdd:list --details
5. Promote Mature Tests to CI Suite
# Find reference from listing php artisan tdd:list # Promote specific test php artisan tdd:promote tdd-20250727142530-Abc123
🔧 Five-Command TDD Workflow
Laravel TDDraft is built around a structured five-command workflow that enables professional TDD practice:
1. tdd:init - Setup Phase
php artisan tdd:init
- Creates
tests/TDDraft/directory structure - Configures PHPUnit/Pest for isolated draft testing
- Sets up status tracking system
2. tdd:make - Red Phase (Create Failing Tests)
php artisan tdd:make "Feature description" [options]
Options:
--type=feature|unit- Specify test type (default: feature)--path=Auth/Api- Custom subdirectory path--class=CustomTestName- Custom class name
Creates draft test with unique tracking reference.
3. tdd:test - Green Phase (Run and Iterate)
php artisan tdd:test [options]
Options:
--filter="test name"- Filter tests by name pattern--coverage- Generate coverage report--parallel- Run tests in parallel--stop-on-failure- Stop on first failure
Runs draft tests with automatic status tracking.
4. tdd:list - Review Phase (Manage Tests)
php artisan tdd:list [options]
Options:
--type=feature|unit- Filter by test type--path=directory- Filter by directory path--details- Show detailed view with status history
View and filter all draft tests with their current status.
5. tdd:promote - Graduation Phase (Move to CI)
php artisan tdd:promote <reference> [options]
Options:
--target=Feature|Unit- Target directory override--new-file=TestName- Custom file name--class=ClassName- Custom class name--keep-draft- Keep original draft file--force- Overwrite without confirmation
Promotes mature tests to main test suite with audit trail preservation.
🔍 Filter and Group Options
Laravel TDDraft provides powerful filtering capabilities across all commands:
Command-Specific Filters
tdd:list Command Filters
# Filter by test type php artisan tdd:list --type=feature php artisan tdd:list --type=unit # Filter by directory path php artisan tdd:list --path=Auth php artisan tdd:list --path=Api/V1 # Show detailed view with status history php artisan tdd:list --details # Combine filters php artisan tdd:list --type=feature --path=Auth --details
tdd:test Command Filters
# Filter by test name pattern php artisan tdd:test --filter="user registration" php artisan tdd:test --filter="login" # Filter by specific reference php artisan tdd:test --filter="tdd-20250727142530-Abc123" # Run with additional options php artisan tdd:test --filter="api" --coverage --parallel
Pest Group System
Every draft test is automatically tagged with multiple groups for flexible filtering:
it('user can register', function (): void { // Test implementation }) ->group('tddraft', 'feature', 'tdd-20250727142530-Abc123');
Group Types:
tddraft- Identifies all TDDraft testsfeature/unit- Test type classificationtdd-YYYYMMDDHHMMSS-RANDOM- Unique reference for individual test tracking
Direct Pest Filtering:
# Run only draft tests (all) pest --testsuite=tddraft # Run only feature draft tests pest --testsuite=tddraft --group=feature # Run only unit draft tests pest --testsuite=tddraft --group=unit # Run specific test by reference pest --testsuite=tddraft --group=tdd-20250727142530-Abc123 # Run multiple groups pest --testsuite=tddraft --group=feature,unit
Status-Based Management
Use the status tracking system to filter by test stability:
# List tests and check their status php artisan tdd:list --details # Example output shows status information: # 📊 ✅ Passed - Ready for promotion # 📊 ❌ Failed - Needs attention # 📊 ⏭️ Skipped - Review implementation # 📊 🎯 Promoted - Already moved to CI
Reference-Based Operations
Each test gets a unique reference for precise operations:
# Create test (generates reference) php artisan tdd:make "User login validation" # Output: Reference: tdd-20250727142530-Abc123 # Run specific test by reference php artisan tdd:test --filter="tdd-20250727142530-Abc123" # Promote specific test php artisan tdd:promote tdd-20250727142530-Abc123 # List to find references php artisan tdd:list | grep "tdd-"
Advanced Filtering Examples
# Find all authentication-related tests php artisan tdd:list --path=Auth --details # Run only feature tests for API php artisan tdd:test --filter="api" pest --testsuite=tddraft --group=feature | grep -i api # Batch operations on specific test types php artisan tdd:list --type=unit | grep "✅ Passed" # Find unit tests ready for promotion # Status tracking analysis php artisan tdd:list --details | grep "❌ Failed" # Find tests needing attention
📚 Documentation
For detailed documentation, examples, and advanced usage, please visit our comprehensive wiki:
🌟 Complete Documentation & Examples Wiki
Quick Links:
- � Full Documentation
- 🚀 Quick Start Guide
- 🔧 Configuration
- 💡 Advanced Examples
- 🎯 Best Practices
- 🧪 Test Templates
- 📊 Coverage & Reporting
💡 Examples
Basic TDD Workflow
# 1. Setup (one-time) php artisan tdd:init # 2. Create failing test (Red phase) php artisan tdd:make "User can register with valid email" # 3. Run tests and implement code (Green phase) php artisan tdd:test --filter="register" # 4. List and manage your tests php artisan tdd:list --details # 5. Promote stable tests to CI php artisan tdd:promote tdd-20250727142530-Abc123
Advanced Usage
For comprehensive examples including:
- Real-world TDD workflows
- Advanced filtering techniques
- Team collaboration patterns
- Integration with CI/CD
- Performance optimization
👉 Visit our Examples Wiki
🧪 Testing
Laravel TDDraft follows its own philosophy - all tests are organized using the TDD workflow with complete isolation between test environments:
Test Architecture
tests/
├── Feature/ # Package's production tests (for CI)
├── Unit/ # Package's production tests (for CI)
└── TDDraft/ # Draft tests (isolated, never affects CI)
Running Tests
# Install dependencies composer install # Run the main CI test suite (production tests only) pest # Runs tests/Unit + tests/Feature pest --coverage # With coverage for production tests # Run specific production test groups pest --group=unit # Unit tests only pest --group=feature # Feature tests only # TDDraft workflow (completely separate) php artisan tdd:test # Runs only tests/TDDraft/** tests php artisan tdd:list # Manage draft tests
Test Isolation Benefits
For Package Development:
- Production tests (
tests/Unit/,tests/Feature/) ensure package stability - CI pipeline only runs production tests - never broken by experimental code
- Draft tests demonstrate package capabilities without affecting main suite
For Package Users:
- Your existing
tests/Unit/andtests/Feature/remain unchanged - TDDraft adds
tests/TDDraft/for safe TDD practice - No interference between production and draft test environments
Writing Tests for This Package
If you're contributing to Laravel TDDraft itself, follow the same TDD principles:
- Write failing tests first
- Implement minimal code to make them pass
- Refactor while keeping tests green
The package tests itself using the standard Laravel/Pest approach, while providing TDDraft workflow for users.
🔧 Requirements
- PHP: ^8.3
- Laravel: ^12.0
- Pest: ^3.0 (for testing framework)
Optional Dependencies
- PHPUnit: ^11.0 (alternative to Pest)
- Docker: For containerized development (optional)
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
🔒 Security
If you discover a security vulnerability, please review our Security Policy before disclosing it.
📄 License
Laravel TDDraft is open-sourced software licensed under the MIT license.
Made with ❤️ for the Laravel community
Resources
Community Links
- CODE_OF_CONDUCT.md - Our code of conduct
- CONTRIBUTING.md - How to contribute
- SECURITY.md - Security policy
- RELEASES.md - Release notes and changelog
grazulex/laravel-tddraft 适用场景与选型建议
grazulex/laravel-tddraft 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 3, 最近一次更新时间为 2025 年 07 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「testing」 「TDD」 「laravel」 「test-driven-development」 「pest」 「clean-code」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 grazulex/laravel-tddraft 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 grazulex/laravel-tddraft 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 grazulex/laravel-tddraft 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Helper that decorates any SUS with a phpspec lazy object wrapper
Provides access to magento2 object manager from behat and allows to change magento config settings temporarly
Testing Suite For Lumen like Laravel does.
The PHP SDK for Checkmango
Lumen fork of orchestra/testbench-core - Testing Helper for Lumen Development
Alfabank REST API integration
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 37
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-18
