Ibexa\Core\Test\* classes), which are incompatible with Laravel’s ecosystem.Ibexa\Core\Test\Repository\ContentServiceTest) that assume Ibexa’s ContentService.Mockery or Laravel’s MockBuilder) and bypass this package entirely.Http::test()) instead of this package.| Risk Area | Assessment |
|---|---|
| License Compliance | High. Requires Ibexa BUL or TTL license (not open-source). Unauthorized use violates terms. |
| Dependency Bloat | Medium. Pulling this package into Laravel would drag in Ibexa’s heavy dependencies (e.g., Symfony, Doctrine, Ibexa’s core libraries). |
| Maintenance Overhead | High. Ibexa’s internal APIs may change unpredictably (package is "experimental"). |
| Testing Isolation | Critical. Tests written for Ibexa DXP cannot run in Laravel’s environment without a full Ibexa DXP install. |
| Performance Impact | High. Ibexa’s test suite is designed for a full CMS stack, not lightweight Laravel apps. |
Why Laravel?
License Clarity
Alternative Testing Strategies
Http::test(), DatabaseMigrations, Mockery)?Long-Term Viability
Hybrid Architecture
| Component | Compatibility | Notes |
|---|---|---|
| Laravel | ❌ No | Ibexa’s test utilities are Symfony/Ibexa-specific. |
| PHPUnit | ⚠️ Partial | Tests can run in PHPUnit, but require Ibexa’s environment. |
| Symfony | ❌ No | Laravel’s DI container is incompatible with Ibexa’s. |
| Doctrine ORM | ⚠️ Partial | Ibexa uses Doctrine, but schema/models are Ibexa-specific. |
| Composer | ✅ Yes | Can be installed, but will fail without Ibexa DXP. |
Assess Use Case:
Laravel\Testing\TestCase).Isolation Strategy:
partialMock() or Mockery to simulate Ibexa’s ContentService, LocationService, etc.$contentService = Mockery::mock(Ibexa\Core\Repository\Values\Content\Content::class);
$this->app->instance(Ibexa\Core\Repository\ContentService::class, $contentService);
Http::fake() or Http::test().Hybrid Testing Setup:
ezcontentobject, ezlocation). Laravel’s migrations would conflict.Ibexa\Core\Test\Service\ContentServiceProvider). Laravel’s AppServiceProvider cannot override these.Phase 1: Evaluate Alternatives
create() for factories, Http::test() for API tests).Phase 2: Mock Ibexa Services (If Hybrid)
// Before (Ibexa-specific)
$content = $contentService->load($contentId);
// After (Mocked)
$mockContent = Mockery::mock(Ibexa\Core\Repository\Values\Content\Content::class);
$mockContent->shouldReceive('getId')->andReturn(123);
Phase 3: CI/CD Integration
jobs:
laravel-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout
- run: composer install
- run: php artisan test
ibexa-tests:
runs-on: ubuntu-latest
needs: laravel-tests
services:
ibexa:
image: ibexa/dxp:latest
ports:
- 8080:80
steps:
- uses: actions/checkout
- run: ./vendor/bin/phpunit -c ibexa-test-config.xml
Ibexa\Core\Test → Laravel’sHow can I help you explore Laravel packages today?