shouldReceive('getId') ->andReturn(ComponentId::create('counter', 'demo')); $mockComponent->shouldReceive('getData') ->andReturn(ComponentData::fromArray(['initialValue' => 5])); $mockComponent->shouldReceive('getRenderData') ->andReturn(new ComponentRenderData('counter-template', ['value' => 5])); // Mock LiveComponent Registry $liveComponentRegistry = Mockery::mock(ComponentRegistryInterface::class); $liveComponentRegistry->shouldReceive('isRegistered') ->with('counter') ->andReturn(true); $liveComponentRegistry->shouldReceive('getClassName') ->with('counter') ->andReturn('TestCounterComponent'); $liveComponentRegistry->shouldReceive('resolve') ->andReturn($mockComponent); $liveComponentRegistry->shouldReceive('renderWithWrapper') ->with($mockComponent) ->andReturn('
Before
After
'; echo "Input HTML:\n$html\n\n"; // Parse HTML to AST $document = $parser->parse($html); echo "Parsed to AST ✓\n\n"; // Transform x-components $transformedDocument = $transformer->transform($document); echo "Transformed x-components ✓\n\n"; // Render back to HTML $outputHtml = $renderer->render($transformedDocument); echo "Output HTML:\n$outputHtml\n\n"; // Verify result if (str_contains($outputHtml, 'data-component-id="counter:demo"')) { echo "✓ SUCCESS: Component rendered correctly!\n"; } else { echo "✗ FAIL: Component not found in output\n"; } if (str_contains($outputHtml, 'Before
')) { echo "✓ SUCCESS: Content before component preserved!\n"; } else { echo "✗ FAIL: Content before component missing\n"; } if (str_contains($outputHtml, 'After
')) { echo "✓ SUCCESS: Content after component preserved!\n"; } else { echo "✗ FAIL: Content after component missing\n"; }