feat(v3.3.0): enterprise presets, badges, notifications, rule controller, watch mode, offline healer, and WCAG 2.2 ruleset

This commit is contained in:
Enes Yakıştır
2026-09-12 10:12:05 +03:00
parent 2de1f34878
commit ef8ccb9f75
43 changed files with 2598 additions and 81 deletions
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace YakNet\AccessibilityConsole\Tests\Console;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Tester\CommandTester;
use YakNet\AccessibilityConsole\Console\Command\RulesCommand;
class RulesCommandTest extends TestCase
{
public function testListAllRules(): void
{
$command = new RulesCommand();
$tester = new CommandTester($command);
$exitCode = $tester->execute([]);
$this->assertSame(0, $exitCode);
$output = $tester->getDisplay();
$this->assertStringContainsString('Accessibility Console - Available Rules', $output);
$this->assertStringContainsString('Total rules available: 130', $output);
}
public function testFilterRulesBySearch(): void
{
$command = new RulesCommand();
$tester = new CommandTester($command);
$exitCode = $tester->execute([
'--search' => 'contrast',
]);
$this->assertSame(0, $exitCode);
$output = $tester->getDisplay();
$this->assertStringContainsString('WCAG_1_4_3_CONTRAST', $output);
$this->assertStringContainsString('Showing', $output);
}
public function testFilterRulesByStandardAndLevel(): void
{
$command = new RulesCommand();
$tester = new CommandTester($command);
$exitCode = $tester->execute([
'--standard' => 'AA',
]);
$this->assertSame(0, $exitCode);
$output = $tester->getDisplay();
$this->assertStringContainsString('AA', $output);
$this->assertStringContainsString('Showing', $output);
}
}
+49
View File
@@ -0,0 +1,49 @@
<?php
namespace YakNet\AccessibilityConsole\Tests\Console;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Tester\CommandTester;
use YakNet\AccessibilityConsole\Console\Command\WatchCommand;
class WatchCommandTest extends TestCase
{
public function testWatchCommandRunsInitialScanAndExitsWithMaxIterations(): void
{
$command = new WatchCommand();
$tester = new CommandTester($command);
$exitCode = $tester->execute([
'target' => 'demo/views-fixed/home.php',
'--max-iterations' => '1',
'--interval' => '1',
]);
$this->assertSame(0, $exitCode);
$output = $tester->getDisplay();
$this->assertStringContainsString('Accessibility Console - Real-Time Watch Mode', $output);
$this->assertStringContainsString('Initial Scan', $output);
$this->assertStringContainsString('Health Score:', $output);
}
public function testDetectChangedFiles(): void
{
$command = new WatchCommand();
$old = [
'file1.php' => 100,
'file2.php' => 200,
];
$new = [
'file1.php' => 100,
'file2.php' => 205, // modified
'file3.php' => 300, // added
];
$changed = $command->detectChangedFiles($old, $new);
$this->assertContains('file2.php', $changed);
$this->assertContains('file3.php', $changed);
$this->assertNotContains('file1.php', $changed);
}
}