110 lines
4.3 KiB
PHP
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'],
|
|
];
|
|
}
|
|
}
|