105 lines
4.6 KiB
PHP
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');
|
|
});
|
|
}
|
|
}
|