From b3e4c4841e9c9a30922cbee5c07e91efbfdc6876 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Tue, 16 Jun 2026 21:19:22 +0100 Subject: [PATCH] tests --- phpunit.dusk.xml | 1 + phpunit.xml | 11 +- .../Concerns/InteractsWithWmsNavigation.php | 157 ------------------ .../Browser/DesktopNavigationBrowserTest.php | 133 --------------- .../Browser/MobileNavigationBrowserTest.php | 84 ---------- .../Browser/WmsResponsiveNavigationTest.php | 74 --------- 6 files changed, 11 insertions(+), 449 deletions(-) delete mode 100644 tests/tests/Browser/Concerns/InteractsWithWmsNavigation.php delete mode 100644 tests/tests/Browser/DesktopNavigationBrowserTest.php delete mode 100644 tests/tests/Browser/MobileNavigationBrowserTest.php delete mode 100644 tests/tests/Browser/WmsResponsiveNavigationTest.php diff --git a/phpunit.dusk.xml b/phpunit.dusk.xml index 4114fc86..4ffc7922 100644 --- a/phpunit.dusk.xml +++ b/phpunit.dusk.xml @@ -10,6 +10,7 @@ ./tests/Browser + ./Modules/Helpdesk/Tests/Browser diff --git a/phpunit.xml b/phpunit.xml index fdb8c5e0..16faec32 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -7,10 +7,19 @@ tests/Unit + Modules/Helpdesk/Tests/Unit + tests/Feature - Modules/*/tests/Feature + + Modules/Countries/Tests/Feature + Modules/Documentation/Tests/Feature + Modules/Helpdesk/Tests/Feature + + Modules/InternalApi/tests/Feature + Modules/Platform/tests/Feature + Modules/Warehouse/tests/Feature diff --git a/tests/tests/Browser/Concerns/InteractsWithWmsNavigation.php b/tests/tests/Browser/Concerns/InteractsWithWmsNavigation.php deleted file mode 100644 index f9da0f4a..00000000 --- a/tests/tests/Browser/Concerns/InteractsWithWmsNavigation.php +++ /dev/null @@ -1,157 +0,0 @@ - 'MPBA Limited', - ]; - - $companyValues = []; - - foreach ([ - 'slug' => 'mpba-limited', - 'timezone' => 'Europe/London', - 'billing_email' => 'platform-admin@mpba.co.uk', - 'status' => 'active', - 'is_system_company' => true, - ] as $column => $value) { - if (Schema::hasColumn('companies', $column)) { - $companyValues[$column] = $value; - } - } - - $company = $companyClass::query()->updateOrCreate($companyAttributes, $companyValues); - $companyId = $company->getKey(); - } - - $userAttributes = array_merge([ - 'name' => 'Mark Gregory', - 'email' => 'mark.gregory@mpba.co.uk', - 'password' => Hash::make('password'), - 'email_verified_at' => now(), - ], $attributes); - - if ($companyId !== null && Schema::hasColumn('users', 'company_id')) { - $userAttributes['company_id'] = $companyId; - } - - /** @var User $user */ - $user = User::factory()->create($userAttributes); - - foreach ([ - 'is_platform_admin' => true, - 'is_mpba_platform_admin' => true, - 'platform_admin' => true, - ] as $column => $value) { - if (Schema::hasColumn('users', $column)) { - $user->forceFill([$column => $value]); - } - } - - $user->save(); - - if (method_exists($user, 'assignRole')) { - try { - $user->assignRole('platform-admin'); - } catch (\Throwable) { - // Some test databases do not seed Spatie roles for Dusk; the MPBA email/company is enough for this app helper. - } - } - - return $user; - } - - protected function resetNavigatorState(Browser $browser): Browser - { - $browser->script(<<<'JS' - localStorage.setItem('wms-sidebar-state', 'expanded'); - localStorage.removeItem('wms-platform-menu-opened'); - document.documentElement.dataset.wmsSidebar = 'expanded'; - document.documentElement.dataset.wmsMobileSidebar = 'closed'; - document.body.classList.remove('wms-mobile-nav-open'); - JS); - - return $browser->pause(150); - } - - protected function openSidebarGroup(Browser $browser, string $group): Browser - { - $browser->script(<<pause(150); - } - - protected function assertSidebarGroupContains(Browser $browser, string $group, array $labels): Browser - { - $this->openSidebarGroup($browser, $group); - - foreach ($labels as $label) { - $browser->assertSee($label); - } - - return $browser; - } - - protected function openMobileNavigation(Browser $browser): Browser - { - $browser->script(<<<'JS' - const button = document.querySelector('[data-wms-mobile-open]'); - if (button) { - button.click(); - } - JS); - - return $browser->pause(250); - } - - protected function closeMobileNavigation(Browser $browser): Browser - { - $browser->script(<<<'JS' - const button = document.querySelector('[data-wms-mobile-close]'); - if (button) { - button.click(); - } - JS); - - return $browser->pause(200); - } - - protected function clickSidebarHref(Browser $browser, string $href): Browser - { - $browser->script(<<pause(300); - } -} diff --git a/tests/tests/Browser/DesktopNavigationBrowserTest.php b/tests/tests/Browser/DesktopNavigationBrowserTest.php deleted file mode 100644 index a30d58b0..00000000 --- a/tests/tests/Browser/DesktopNavigationBrowserTest.php +++ /dev/null @@ -1,133 +0,0 @@ -platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(1440, 1000) - ->visit('/admin') - ->waitFor('.wms-sidebar', 10); - - $this->resetNavigatorState($browser); - - $this->assertSidebarGroupContains($browser, 'platform', [ - 'Platform', - ]); - - $this->assertSidebarGroupContains($browser, 'operations', [ - 'Analytics', - 'Inventory', - 'Replenishment', - 'Shipping', - 'Transportation', - 'Carriers', - ]); - - $this->assertSidebarGroupContains($browser, 'integration-reporting', [ - 'M3 Integration', - 'Sentinel', - 'Documents', - 'Reporting', - ]); - - $this->assertSidebarGroupContains($browser, 'administration', [ - 'Warehouses', - 'Validation Rules', - 'Prices', - 'Configuration', - 'Security', - 'Audit', - ]); - - $this->assertSidebarGroupContains($browser, 'platform-administration', [ - 'Companies', - 'Licences', - 'Payments', - ]); - }); - } - - 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', 10); - - $this->resetNavigatorState($browser); - - $browser->script("document.querySelector('[data-wms-sidebar-toggle]')?.click();"); - $browser->pause(200) - ->assertPresent('.wms-sidebar'); - - $browser->script("document.querySelector('[data-wms-brand-toggle]')?.click();"); - $browser->pause(200); - - $this->assertSidebarGroupContains($browser, 'operations', [ - 'Analytics', - 'Inventory', - ]); - }); - } - - public function test_every_desktop_navigator_page_has_one_professional_header(): void - { - $admin = $this->platformAdminUser(); - - $paths = [ - '/admin', - '/analytics', - '/inventory-management', - '/replenishment', - '/shipping', - '/transportation', - '/carrier-management', - '/m3-integration', - '/sentinel-integration', - '/document-archive', - '/reporting', - '/warehouses', - '/warehouse-rules', - '/platform/prices', - '/configuration', - '/security', - '/audit', - '/platform/companies', - '/platform/licenses', - '/platform/payments', - ]; - - $this->browse(function (Browser $browser) use ($admin, $paths): void { - $browser->loginAs($admin)->resize(1440, 1000); - - foreach ($paths as $path) { - $browser->visit($path) - ->waitFor('.wms-page-hero', 10) - ->assertPresent('.wms-page-hero'); - - $heroCount = $browser->script("return document.querySelectorAll('.wms-page-hero').length;")[0] ?? 0; - - $this->assertSame(1, (int) $heroCount, "Expected one professional page hero on [{$path}]."); - } - }); - } -} diff --git a/tests/tests/Browser/MobileNavigationBrowserTest.php b/tests/tests/Browser/MobileNavigationBrowserTest.php deleted file mode 100644 index 2bc6ff8c..00000000 --- a/tests/tests/Browser/MobileNavigationBrowserTest.php +++ /dev/null @@ -1,84 +0,0 @@ -platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(390, 844) - ->visit('/admin') - ->waitFor('[data-wms-mobile-open]', 10); - - $this->openMobileNavigation($browser); - - $browser->assertSee('Platform'); - - $this->assertSidebarGroupContains($browser, 'administration', [ - 'Prices', - ]); - - $this->closeMobileNavigation($browser); - - $browser->assertPresent('[data-wms-mobile-open]'); - }); - } - - public function test_mobile_drawer_navigates_to_major_menu_groups(): void - { - $admin = $this->platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(390, 844) - ->visit('/admin') - ->waitFor('[data-wms-mobile-open]', 10); - - $this->openMobileNavigation($browser); - $this->assertSidebarGroupContains($browser, 'operations', ['Inventory']); - $this->clickSidebarHref($browser, '/inventory-management'); - $browser->assertSee('Inventory'); - - $this->openMobileNavigation($browser); - $this->assertSidebarGroupContains($browser, 'administration', ['Warehouses']); - $this->clickSidebarHref($browser, '/warehouses'); - $browser->assertSee('Warehouses'); - }); - } - - public function test_mobile_tablet_and_desktop_breakpoints_keep_navigation_accessible(): void - { - $admin = $this->platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - foreach ([[390, 844], [834, 1112], [1440, 1000]] as [$width, $height]) { - $browser->loginAs($admin) - ->resize($width, $height) - ->visit('/admin') - ->waitFor('.wms-app-shell', 10) - ->assertPresent('.wms-app-shell'); - - if ($width < 1024) { - $browser->assertPresent('[data-wms-mobile-open]'); - continue; - } - - $browser->assertPresent('.wms-sidebar'); - } - }); - } -} diff --git a/tests/tests/Browser/WmsResponsiveNavigationTest.php b/tests/tests/Browser/WmsResponsiveNavigationTest.php deleted file mode 100644 index b7dbeebe..00000000 --- a/tests/tests/Browser/WmsResponsiveNavigationTest.php +++ /dev/null @@ -1,74 +0,0 @@ -platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(1440, 1000) - ->visit('/admin') - ->waitFor('.wms-sidebar', 10) - ->assertSee('Platform'); - - $this->resetNavigatorState($browser); - $this->assertSidebarGroupContains($browser, 'operations', [ - 'Analytics', - 'Inventory', - ]); - - $this->clickSidebarHref($browser, '/inventory-management'); - $browser->assertSee('Inventory'); - }); - } - - public function test_mobile_menu_opens_slide_out_navigation(): void - { - $admin = $this->platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(390, 844) - ->visit('/admin') - ->waitFor('[data-wms-mobile-open]', 10); - - $this->openMobileNavigation($browser); - - $browser->assertSee('Platform'); - $this->assertSidebarGroupContains($browser, 'operations', ['Inventory']); - }); - } - - public function test_mobile_menu_overlay_closes_drawer(): void - { - $admin = $this->platformAdminUser(); - - $this->browse(function (Browser $browser) use ($admin): void { - $browser->loginAs($admin) - ->resize(390, 844) - ->visit('/admin') - ->waitFor('[data-wms-mobile-open]', 10); - - $this->openMobileNavigation($browser); - $browser->assertSee('Platform'); - - $browser->script("document.querySelector('[data-wms-mobile-close]')?.click();"); - $browser->pause(200) - ->assertPresent('[data-wms-mobile-open]'); - }); - } -}