Files
WMS/tests/Browser/WmsResponsiveShellTest.php
T
2026-06-10 14:56:43 +01:00

105 lines
4.6 KiB
PHP

<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\Browser\Concerns\CreatesWmsBrowserData;
use Tests\Browser\Concerns\TestsResponsiveBreakpoints;
use Tests\DuskTestCase;
class WmsResponsiveShellTest extends DuskTestCase
{
use CreatesWmsBrowserData;
use TestsResponsiveBreakpoints;
public function test_shell_renders_correct_desktop_tablet_and_mobile_navigation(): void
{
$user = $this->createPlatformAdmin([
'name' => 'Mark Gregory',
'email' => 'mark.gregory@example.test',
]);
$this->browse(function (Browser $browser) use ($user): void {
$browser->loginAs($user)->visitRoute('dashboard');
$this->eachBreakpoint($browser, function (Browser $browser, string $breakpoint): void {
$browser
->assertPresent('[data-wms-shell]')
->assertPresent('[data-wms-sidebar]')
->assertSee('Warehouse Management System')
->assertSee('MPBA')
->assertSee('Warehouses')
->assertSee('Validation Rules')
->assertSee('Platform Admin')
->assertSee('Mark Gregory');
if ($this->isMobileNavigationBreakpoint($breakpoint)) {
$browser
->assertVisible('[data-wms-mobile-open]')
->assertScript("document.documentElement.dataset.wmsMobileSidebar || 'closed'", 'closed')
->click('[data-wms-mobile-open]')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'open'")
->assertScript("document.documentElement.dataset.wmsMobileSidebar", 'open')
->click('[data-wms-mobile-close]')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'closed'")
->assertScript("document.documentElement.dataset.wmsMobileSidebar", 'closed');
} else {
$browser->assertVisible('[data-wms-sidebar-toggle]');
}
});
});
}
public function test_desktop_sidebar_collapses_expands_and_persists_state(): void
{
$user = $this->createPlatformAdmin();
$this->browse(function (Browser $browser) use ($user): void {
$browser
->resize(1440, 900)
->loginAs($user)
->visitRoute('dashboard')
->script("localStorage.removeItem('wms-sidebar-state'); document.documentElement.dataset.wmsSidebar = 'expanded';");
$browser
->refresh()
->waitFor('[data-wms-sidebar-toggle]')
->assertScript("document.documentElement.dataset.wmsSidebar", 'expanded')
->click('[data-wms-sidebar-toggle]')
->waitUntil("document.documentElement.dataset.wmsSidebar === 'collapsed'")
->assertScript("localStorage.getItem('wms-sidebar-state')", 'collapsed')
->assertAttribute('[data-wms-sidebar-toggle]', 'aria-expanded', 'false')
->refresh()
->waitFor('[data-wms-sidebar-toggle]')
->assertScript("document.documentElement.dataset.wmsSidebar", 'collapsed')
->click('[data-wms-sidebar-toggle]')
->waitUntil("document.documentElement.dataset.wmsSidebar === 'expanded'")
->assertScript("localStorage.getItem('wms-sidebar-state')", 'expanded')
->assertAttribute('[data-wms-sidebar-toggle]', 'aria-expanded', 'true');
});
}
public function test_mobile_overlay_and_navigation_link_close_the_menu(): void
{
$user = $this->createPlatformAdmin();
$this->browse(function (Browser $browser) use ($user): void {
$browser
->resize(390, 844)
->loginAs($user)
->visitRoute('dashboard')
->waitFor('[data-wms-mobile-open]')
->click('[data-wms-mobile-open]')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'open'")
->click('[data-wms-mobile-close]')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'closed'")
->click('[data-wms-mobile-open]')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'open'")
->clickLink('Warehouses')
->waitForLocation('/warehouses')
->waitUntil("document.documentElement.dataset.wmsMobileSidebar === 'closed'")
->assertSee('Warehouses');
});
}
}