Pest Browser hosts on 127.0.0.1:port while Storage::url used http://localhost, so screenshots captured broken images. Use relative /storage URLs for media and absolutize only OG tags via url(). Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.3 KiB
PHP
37 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\SiteSetting;
|
|
use Database\Seeders\VisualContentSeeder;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
it('exposes public disk urls as same-origin storage paths', function (): void {
|
|
expect(Storage::disk('public')->url('visual/og/og-default.jpg'))
|
|
->toStartWith('/storage/')
|
|
->not->toContain('http://localhost');
|
|
});
|
|
|
|
it('links seeded visual fixtures into public storage', function (): void {
|
|
Artisan::call('storage:link', ['--force' => true]);
|
|
Artisan::call('db:seed', ['--class' => VisualContentSeeder::class, '--force' => true]);
|
|
|
|
$settings = SiteSetting::instance();
|
|
$path = (string) $settings->default_og_image_path;
|
|
|
|
expect($path)->not->toBeEmpty()
|
|
->and(is_file(public_path('storage/'.$path)))->toBeTrue()
|
|
->and(mime_content_type(public_path('storage/'.$path)))->toBe('image/jpeg');
|
|
});
|
|
|
|
it('renders home media with same-origin storage urls', function (): void {
|
|
Artisan::call('db:seed', ['--class' => VisualContentSeeder::class, '--force' => true]);
|
|
|
|
$html = $this->get('/')->assertOk()->getContent();
|
|
|
|
expect($html)
|
|
->toContain('src="/storage/visual/')
|
|
->not->toContain('src="http://localhost/storage/');
|
|
});
|