Files
WMS/tests/Browser/DesktopNavigationBrowserTest.php
T
2026-06-11 14:45:25 +01:00

110 lines
4.3 KiB
PHP

<?php
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\Browser\Concerns\InteractsWithWmsBrowser;
use Tests\Browser\Concerns\InteractsWithWmsData;
use Tests\DuskTestCase;
class DesktopNavigationBrowserTest extends DuskTestCase
{
use DatabaseMigrations;
use InteractsWithWmsBrowser;
use InteractsWithWmsData;
public function test_desktop_sidebar_lists_every_navigator_option(): void
{
$admin = $this->platformAdminUser();
$this->seedPlatformDashboardData();
$this->browse(function (Browser $browser) use ($admin): void {
$browser->loginAs($admin)
->visit('/admin');
$this->assertDesktopSidebarIsAvailable($browser);
foreach ([
'Platform', 'Analytics', 'Inventory', 'Replenishment', 'Shipping', 'Transportation', 'Carriers',
'M3 Integration', 'Sentinel', 'Documents', 'Reporting', 'Warehouses', 'Validation Rules',
'Pricing', 'Configuration', 'Security', 'Audit', 'Companies', 'Licences', 'Payments', 'Prices',
] as $label) {
$browser->assertSee($label);
}
});
}
public function test_desktop_sidebar_collapse_and_brand_expand_preserve_navigation(): void
{
$admin = $this->platformAdminUser();
$this->browse(function (Browser $browser) use ($admin): void {
$browser->loginAs($admin)
->resize(1440, 1000)
->visit('/admin')
->waitFor('.wms-sidebar')
->click('[data-wms-sidebar-toggle]')
->pause(250)
->assertScript('document.querySelector("[data-wms-shell]").classList.contains("is-sidebar-collapsed")')
->assertPresent('[data-wms-brand-toggle]')
->click('[data-wms-brand-toggle]')
->pause(250)
->assertScript('! document.querySelector("[data-wms-shell]").classList.contains("is-sidebar-collapsed")')
->clickLink('Analytics')
->waitForLocation('/analytics')
->assertSee('Analytics');
});
}
/**
* @dataProvider navigatorRoutes
*/
public function test_every_desktop_navigator_page_has_one_professional_header(string $path, string $title): void
{
$admin = $this->platformAdminUser();
$this->seedPlatformDashboardData();
$this->browse(function (Browser $browser) use ($admin, $path, $title): void {
$browser->loginAs($admin)
->resize(1440, 1000)
->visit($path)
->waitFor('.wms-page-hero', 5);
$this->assertSingleProfessionalHeader($browser, $title);
$browser->assertVisible('.wms-sidebar');
});
}
/**
* @return array<string, array{0: string, 1: string}>
*/
public static function navigatorRoutes(): array
{
return [
'platform' => ['/admin', 'Platform'],
'platform pricing' => ['/platform/pricing', 'Pricing'],
'companies' => ['/admin/companies', 'Companies'],
'licences' => ['/admin/licenses', 'Licence Keys'],
'payments' => ['/admin/payments', 'Payments'],
'price crud' => ['/admin/prices', 'Platform Prices'],
'warehouse dashboard' => ['/dashboard', 'Warehouse'],
'warehouses' => ['/warehouses', 'Warehouses'],
'validation rules' => ['/warehouse-rules', 'Validation Rules'],
'analytics' => ['/analytics', 'Analytics'],
'inventory' => ['/inventory-management', 'Inventory'],
'replenishment' => ['/replenishment', 'Replenishment'],
'shipping' => ['/shipping', 'Shipping'],
'transportation' => ['/transportation', 'Transportation'],
'carriers' => ['/carrier-management', 'Carriers'],
'm3' => ['/m3-integration', 'M3 Integration'],
'sentinel' => ['/sentinel-integration', 'Sentinel'],
'documents' => ['/document-archive', 'Documents'],
'reporting' => ['/reporting', 'Reporting'],
'configuration' => ['/configuration', 'Configuration'],
'security' => ['/security', 'Security'],
'audit' => ['/audit', 'Audit'],
];
}
}