Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Test Core Laravel Package

ibexa/test-core

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Purpose: This package is an internal/experimental Ibexa DXP testing utility, not a standalone Laravel/PHP library. It is tightly coupled to Ibexa’s proprietary CMS architecture (e.g., eZ Platform Enterprise).
  • Laravel Compatibility: Low to none. Ibexa DXP is a Symfony-based CMS, not Laravel. The package assumes Ibexa’s kernel, services, and testing infrastructure (e.g., Ibexa\Core\Test\* classes), which are incompatible with Laravel’s ecosystem.
  • Use Case Fit: Only relevant if:
    • Building a hybrid Laravel-Ibexa DXP system (e.g., Laravel as a frontend/backend with Ibexa as a CMS backend).
    • Migrating from Ibexa DXP to Laravel (where this package could inform legacy test migration strategies).
    • Extending Ibexa DXP with Laravel (e.g., custom modules using Laravel’s tooling while leveraging Ibexa’s test suite).

Integration Feasibility

  • Direct Laravel Integration: Not feasible without significant refactoring. Ibexa’s test utilities rely on:
    • Ibexa’s Service Container (Symfony-based).
    • Database schema and entity models specific to Ibexa DXP.
    • Testing utilities (e.g., Ibexa\Core\Test\Repository\ContentServiceTest) that assume Ibexa’s ContentService.
  • Workarounds:
    • Mock Ibexa Services: If Laravel needs to test interactions with Ibexa DXP, you could mock Ibexa’s services (e.g., using Mockery or Laravel’s MockBuilder) and bypass this package entirely.
    • Hybrid Testing: If using Laravel + Ibexa DXP together, you might run tests in parallel (Laravel’s PHPUnit + Ibexa’s test suite) but not mix them.
  • API/Contract-Based Integration: If Ibexa exposes a REST/GraphQL API, consider testing that via Laravel’s HTTP clients (e.g., Http::test()) instead of this package.

Technical Risk

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.

Key Questions

  1. Why Laravel?

    • Is the goal to replace Ibexa DXP with Laravel, or extend Ibexa with Laravel?
    • If replacing, how will you migrate Ibexa’s test suite to Laravel’s ecosystem?
  2. License Clarity

    • Have you secured an Ibexa BUL or TTL license for this package?
    • Is the package’s usage aligned with Ibexa’s commercial terms?
  3. Alternative Testing Strategies

    • Can you achieve the same testing goals using:
      • Laravel’s built-in testing tools (Http::test(), DatabaseMigrations, Mockery)?
      • PestPHP or PHPUnit with custom Ibexa service mocks?
      • API-driven tests (if Ibexa exposes endpoints)?
  4. Long-Term Viability

    • Ibexa DXP is proprietary and evolving. Will this package remain stable, or will it require constant updates?
    • Is there a community or maintained fork of this package for Laravel?
  5. Hybrid Architecture

    • If using Laravel + Ibexa DXP together, how will you:
      • Share test data between the two systems?
      • Handle CI/CD pipelines for dual-stack testing?

Integration Approach

Stack Fit

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.

Migration Path

  1. Assess Use Case:

    • If replacing Ibexa DXP, prioritize rewriting tests in Laravel’s ecosystem (e.g., Laravel\Testing\TestCase).
    • If extending Ibexa DXP, consider:
      • Running Ibexa’s tests in a separate CI pipeline.
      • Using Docker/Kubernetes to spin up Ibexa DXP for testing.
  2. Isolation Strategy:

    • Option A: Mock Ibexa Services
      • Use Laravel’s partialMock() or Mockery to simulate Ibexa’s ContentService, LocationService, etc.
      • Example:
        $contentService = Mockery::mock(Ibexa\Core\Repository\Values\Content\Content::class);
        $this->app->instance(Ibexa\Core\Repository\ContentService::class, $contentService);
        
    • Option B: API Contract Testing
      • If Ibexa exposes APIs, test them via Laravel’s Http::fake() or Http::test().
  3. Hybrid Testing Setup:

    • Docker Compose: Run Laravel and Ibexa DXP in separate containers.
    • Shared Database: Use a read-only replica of Ibexa’s DB for Laravel tests.
    • Test Suites:
      • Laravel tests → Laravel’s PHPUnit.
      • Ibexa tests → Ibexa’s test runner (separate process).

Compatibility

  • Database Schema: Ibexa’s test utilities assume Ibexa’s schema (e.g., ezcontentobject, ezlocation). Laravel’s migrations would conflict.
  • Service Providers: Ibexa’s test utilities register Ibexa-specific service providers (e.g., Ibexa\Core\Test\Service\ContentServiceProvider). Laravel’s AppServiceProvider cannot override these.
  • Event System: Ibexa uses Symfony Events; Laravel’s events are incompatible.

Sequencing

  1. Phase 1: Evaluate Alternatives

    • Audit existing tests to identify Ibexa-specific dependencies.
    • Replace Ibexa-centric tests with Laravel-native alternatives (e.g., create() for factories, Http::test() for API tests).
  2. Phase 2: Mock Ibexa Services (If Hybrid)

    • Gradually replace direct Ibexa service calls with mocked interfaces.
    • Example:
      // Before (Ibexa-specific)
      $content = $contentService->load($contentId);
      
      // After (Mocked)
      $mockContent = Mockery::mock(Ibexa\Core\Repository\Values\Content\Content::class);
      $mockContent->shouldReceive('getId')->andReturn(123);
      
  3. Phase 3: CI/CD Integration

    • Add a separate test stage for Ibexa DXP tests (if hybrid).
    • Example GitHub Actions workflow:
      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
      

Operational Impact

Maintenance

  • License Renewal: Requires active Ibexa subscription (BUL/TTL). Non-compliance risks legal action.
  • Dependency Updates:
    • Ibexa’s internal packages may break Laravel compatibility with minor updates.
    • Example: Ibexa updates Ibexa\Core\Test → Laravel’s
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle