createLicensedUser(['name' => 'Tenant User']); $warehouse = $this->createWarehouseFor($user, ['name' => 'North Warehouse', 'code' => 'NORTH']); $this->createWarehouseRule($warehouse, ['name' => 'Batch number required']); $pages = [ ['route' => 'dashboard', 'heading' => $user->company->name, 'expected' => ['Warehouses', 'Validation rules']], ['route' => 'warehouses.index', 'heading' => 'Warehouses', 'expected' => ['North Warehouse', 'NORTH']], ['route' => 'warehouse-rules.index', 'heading' => 'Warehouse validation rules', 'expected' => ['Batch number required', 'stock.location.required']], ]; $this->browse(function (Browser $browser) use ($user, $pages): void { $browser->loginAs($user); foreach ($pages as $page) { $browser->visitRoute($page['route']); $this->eachBreakpoint($browser, function (Browser $browser, string $breakpoint) use ($page): void { $browser->assertSee($page['heading']); foreach ($page['expected'] as $text) { $browser->assertSee($text); } if ($this->isMobileNavigationBreakpoint($breakpoint)) { $browser->assertVisible('[data-wms-mobile-open]'); } else { $browser->assertVisible('[data-wms-sidebar]'); } }); } }); } public function test_user_can_create_a_warehouse_from_the_ui(): void { $user = $this->createLicensedUser(); $this->browse(function (Browser $browser) use ($user): void { $browser ->loginAs($user) ->visitRoute('warehouses.index') ->type('code', 'PICK') ->type('name', 'Picking Warehouse') ->select('status', 'active') ->press('Create') ->waitForText('Picking Warehouse') ->assertSee('PICK') ->assertSee('Picking Warehouse'); }); } public function test_user_can_create_a_validation_rule_from_the_ui(): void { $user = $this->createLicensedUser(); $warehouse = $this->createWarehouseFor($user, ['name' => 'Rules Warehouse', 'code' => 'RULES']); $this->browse(function (Browser $browser) use ($user, $warehouse): void { $browser ->loginAs($user) ->visitRoute('warehouse-rules.index') ->select('warehouse_id', (string) $warehouse->id) ->type('name', 'Pallet scan required') ->type('rule_key', 'pallet.scan.required') ->select('severity', 'warning') ->press('Add') ->waitForText('Pallet scan required') ->assertSee('pallet.scan.required') ->assertSee('warning'); }); } }