1
0

fix(error): harden logging, i18n, a11y and handler tests

This commit is contained in:
2026-03-24 22:00:14 +01:00
parent 44a357dfc4
commit a0d816caaa
10 changed files with 515 additions and 100 deletions

View File

@@ -3,10 +3,28 @@
namespace MintyPHP\Tests\Http;
use MintyPHP\Http\ErrorRenderer;
use MintyPHP\I18n;
use PHPUnit\Framework\TestCase;
class ErrorRendererTest extends TestCase
{
private string $localeBackup = '';
private string $defaultLocaleBackup = '';
protected function setUp(): void
{
$this->localeBackup = (string) (I18n::$locale ?? '');
$this->defaultLocaleBackup = (string) (I18n::$defaultLocale ?? 'en');
I18n::$defaultLocale = 'en';
I18n::$locale = 'en';
}
protected function tearDown(): void
{
I18n::$locale = $this->localeBackup;
I18n::$defaultLocale = $this->defaultLocaleBackup;
}
public function testRenderDevReturnsCompleteHtmlDocument(): void
{
$data = self::sampleData();
@@ -16,6 +34,7 @@ class ErrorRendererTest extends TestCase
$this->assertStringContainsString('</html>', $html);
$this->assertStringContainsString('<style>', $html);
$this->assertStringContainsString('<script>', $html);
$this->assertStringContainsString('<html lang="en">', $html);
}
public function testRenderDevContainsExceptionDetails(): void
@@ -37,6 +56,21 @@ class ErrorRendererTest extends TestCase
$this->assertStringContainsString('panel-request', $html);
$this->assertStringContainsString('panel-environment', $html);
$this->assertStringContainsString('panel-queries', $html);
$this->assertStringContainsString('role="tablist"', $html);
$this->assertStringContainsString('aria-controls="panel-exception"', $html);
$this->assertStringContainsString('role="tabpanel"', $html);
}
public function testRenderDevUsesAccessibleToggleButtons(): void
{
$data = self::sampleData();
$html = ErrorRenderer::renderDev($data);
$this->assertStringContainsString('app-error-debug-frame__toggle', $html);
$this->assertStringContainsString('app-error-debug-query__toggle', $html);
$this->assertStringContainsString('aria-expanded="true"', $html);
$this->assertStringContainsString('aria-controls="frame-code-0"', $html);
$this->assertStringContainsString('aria-label="Copy request ID"', $html);
}
public function testRenderDevEscapesHtmlInExceptionMessage(): void
@@ -63,9 +97,12 @@ class ErrorRendererTest extends TestCase
$html = ErrorRenderer::renderProd('abc-def-123');
$this->assertStringContainsString('<!DOCTYPE html>', $html);
$this->assertStringContainsString('<html lang="en">', $html);
$this->assertStringContainsString('abc-def-123', $html);
$this->assertStringContainsString('An unexpected error occurred', $html);
$this->assertStringContainsString('Back to start', $html);
$this->assertStringContainsString('data-copy="abc-def-123"', $html);
$this->assertStringContainsString('aria-label="Copy request ID"', $html);
}
public function testRenderProdDoesNotContainDebugInfo(): void