Commit Graph
100 Commits
Author SHA1 Message Date
Jeppe Bundgaard 6c4b9cb599 Add and improve e2e tests for Edge Gateway flows and configure pre-commit hooks:
- Introduced live smoke tests for Edge Gateways, verifying gateway routes and destructive-action prevention.
- Added e2e scenarios for deep-link navigation, unavailable gateway recovery, token rotation, and background page refresh.
- Refactored test helpers for streamlined functional validation in gateway scenarios.
- Updated `EdgeGatewayTerminal.vue` with test IDs for enhanced testability.
- Added and configured Husky pre-commit hooks for automated test file formatting and validation.
2026-04-16 10:52:56 +02:00
Jeppe Bundgaard 95a8f114bc Refactor e2e test fixtures and formatting for consistency:
- Removed unnecessary string quotes from numeric keys in `cvrSearchResponses` across `mobilePos.js` and related test files.
- Reformatted multiline function chaining and object initialization for improved readability.
- Enhanced fixture setup logic to ensure consistent mock data handling across test scenarios.
2026-04-15 09:23:25 +02:00
Jeppe Bundgaard 6b91097f98 Add unit and e2e tests for auto-selecting non-barred customer suggestions and update POS vehicle forms:
- Implemented unit tests for `VehicleCustomerSuggestionsPos` to validate auto-selection and manual override behaviors.
- Added e2e scenarios to verify auto-application of non-barred customer suggestions in desktop POS.
- Refactored customer suggestion handling logic to support new `selectionSource`.
- Updated POS and booking components to improve multi-department booking handling and prevent cross-department conflicts.
- Enhanced booking match validation and streamlined customer suggestion methods.
2026-04-15 09:16:43 +02:00
Jeppe Bundgaard 00151ec237 Add unit tests and e2e coverage for POS mobile add-customer autofill functionality:
- Added unit tests for `applyPosAddCustomerSearchResult` to handle autofill field updates, manual overrides, and stale response rejection.
- Implemented a new e2e scenario for preserving manual edits during autofill updates and ignoring stale delayed responses.
- Refactored `mobilePos.js` fixture setup to include CVR search and customer registration mock logic.
- Added and integrated `PosDesktopCustomerConflictModal.vue` for UI handling of customer conflicts.
2026-04-15 08:56:30 +02:00
Jeppe Bundgaard b5a8199472 Reduce default Vitest batch size to 5, enforce single-threaded execution, and refactor unit test wait conditions:
- Adjusted `run-vitest-unit-batches.mjs` to lower default batch size from 10 to 5 and enforce single-threaded execution for more predictable test behavior.
- Updated GitHub workflows to align with new batch size defaults.
- Introduced `waitForCondition` helper in unit tests to replace arbitrary delays with predicate-based waiting.
- Refactored `useEdgeGatewayTerminal` for improved session handling, including idle delay for shell polling and cleanup of request queuing logic.
2026-04-14 17:55:38 +02:00
Jeppe Bundgaard c8f917ac30 Add batch support for Vitest unit tests and update workflows:
- Introduced `run-vitest-unit-batches.mjs` script for running unit tests in batches with configurable batch size.
- Updated `package.json` to replace `test:unit` command with the batch runner and added `test:unit:single` for direct execution.
- Tweaked GitHub workflows (`tests.yml`, `code_quality.yml`) to use updated actions and support batch testing.
- Minor formatting improvements in Vue components and workflows for consistent style.
2026-04-14 17:46:00 +02:00
Jeppe Bundgaard 586aba8531 Refactor collectedOrderInvoiceManageStripe.vue to integrate economic queue job for Stripe invoice booking:
- Replaced refs with computed properties for status determination (paid, draft, booked, etc.).
- Integrated `useEconomicQueueJob` for stripe transfer management, including enqueue, retry, and transport error handling.
- Streamlined Stripe payment data mapping with `computed` for enhanced maintainability.
- Updated template to include improved UI elements for transfer status and error feedback.
- Added progress indicators and notifications for queue operations.
2026-04-14 17:34:46 +02:00
Jeppe Bundgaard bf7c01ce25 Update Vite SCSS config: enable quietDeps and expand silenceDeprecations list 2026-04-14 17:30:39 +02:00
Jeppe Bundgaard 1236770513 Refactor e2e tests for improved readability and formatting consistency:
- Reformatted callback and function parameters across booking flow, POS, and visual test files.
- Enhanced readability by aligning multiline arguments with consistent indentation.
- Updated test messages for clarity and better context.
2026-04-14 17:24:54 +02:00
Jeppe Bundgaard 3d8203945d Skip unstable test scenarios for Firefox desktop and WebKit mobile; update visual snapshots. 2026-04-14 17:10:28 +02:00
Jeppe Bundgaard 2be33c89a7 Add Edge Broker service and configuration defaults
Introduced the Edge Broker service in the Docker Compose setup, configured to run on port 4300. Updated `.env.example` to include default environment variables for the Edge Broker and adjusted tests to validate the new configuration. Updated visual snapshot tests to reflect related UI changes.
2026-04-14 16:48:40 +02:00
Jeppe Bundgaard 631e9c4488 Enhance POS mobile e2e tests:
- Added fallback actions to handle missing customer selection and attachment toggles.
- Introduced visibility checks for crucial elements (e.g., "Take Picture" and "Close" actions).
- Updated visual test snapshots for duplicate warnings on desktop.
2026-04-14 16:32:16 +02:00
Jeppe Bundgaard 1afdda2650 Refactor POS workflows and improve booking flow:
- Updated `PayWithStripeButton` to handle setup requirements and improved error state handling.
- Enhanced POS mobile popup completion flow with added callback support and fallback actions.
- Introduced booking safety seal and improved step navigation logic.
- Added new e2e tests for booking confirmation, order completion, and error scenarios.
- Adjusted POS e2e and visual tests for updated workflows and UI changes.
- Refactored POS component logic for consistency and improved readability.
2026-04-14 16:19:11 +02:00
Jeppe Bundgaard 6f23941ea4 Add unit tests for ActionSettingsWheelButton i18n key coverage:
- Introduced validation to ensure all literal translation keys in the component are present across active locales.
- Enhanced coverage by integrating locale JSONs and adding missing key detection.
- Refactored button test setup with extracted `SETTINGS_WHEEL_TRANSLATION_KEYS` and reusable helper methods.
2026-04-14 14:32:01 +02:00
Jeppe Bundgaard 983585ede7 Refactor and cleanup:
- Migrate postinstall script to `postinstall-sync-playwright-root-links.mjs` for streamlined path resolution.
- Replace `axios` v1.15.0 with v1.13.5 and downgrade `vite` from v8.0.5 to v7.1.11.
- Update testing code for consistent formatting and enhanced readability (e.g., `poll` and `catch` calls).
- Remove unused or redundant dependency flags and align `package-lock.json` with new configuration.
2026-04-14 14:17:28 +02:00
Jeppe Bundgaard b01f400d2c Add e2e visual snapshots for Edge Gateways and POS workflows. 2026-04-14 13:50:25 +02:00
Jeppe Bundgaard ecec624aea Update axios to v1.15.0 and vite to v8.0.5; modify dependency flags for improved build configuration. 2026-04-14 13:48:43 +02:00
Jeppe Bundgaard bbbad2c634 Remove dependency on the ws module.
Deleted the entire `ws` library and its associated files. This likely reflects a move away from the WebSocket library, possibly signaling an alternate implementation or unused/legacy code cleanup.
2026-04-14 13:45:15 +02:00
Jeppe Bundgaard 4963fed0b5 Add unit and e2e tests for POS mobile popups:
- Introduced `headerCloseTestId` and `showHeaderClose` properties in visible-header popups for improved testability.
- Added unit tests to validate header close button behavior across popups.
- Enhanced e2e tests to verify popup visibility and header close functionality in mobile workflows.
2026-04-14 10:58:27 +02:00
Jeppe Bundgaard a4676f8f87 Add e2e and unit tests for i18n coverage and POS workflows:
- Introduced i18n key usage validation with `tests/e2e/i18n.views.spec.ts` for deterministic locale coverage.
- Added `viewI18nKeyScanner` utility to scan and validate view translation keys.
- Created `PosDepartmentStep1` unit tests for duplicate warnings and booking selection flow.
- Enhanced POS mobile popup with `SelectOrderBookingPopupProps` and new header close options.
- Updated e2e tests with scenarios to verify booking selections, duplicate handling, and locale alignment.
- Added new `test:e2e:i18n:views` npm script for targeted i18n test execution.
2026-04-14 10:49:20 +02:00
Jeppe Bundgaard 7533622fb1 Please provide the corresponding diff so I can generate an appropriate commit message. 2026-04-14 10:28:46 +02:00
Jeppe Bundgaard 90518308f8 Add e2e tests for POS desktop card payment flow:
- Added tests for handling misconfigured terminal locations with superuser and operator guidance.
- Verified behavior for zero readers, existing payment intents (`requires_capture` and `succeeded`), and happy path payment flows.
- Introduced `bootDesktopCardPayment` helper for streamlined test setup.
2026-04-14 10:28:29 +02:00
Jeppe Bundgaard e88c2d14d5 Refactor POS booking flow and error handling:
- Improved error state management with `normalizeErrorState` and `clearErrorState` utilities.
- Enhanced Stripe payment flow with clear status messaging and support for terminal setup requirements.
- Updated POS component templates (`PosDepartmentStep3.vue`, `PayWithStripeButton.vue`) for better error messages and UX.
- Added `pos-step-4` navigation and tests in e2e flows.
- Introduced utility `toPositiveInteger` for robust numeric validation in bookings.
2026-04-14 10:27:29 +02:00
Jeppe Bundgaard c14f0cc1c4 Add utilities and tests for mobile order management and Subuser navigation:
- Introduced `mobileOrderCompletion.js` for mobile order metadata handling with safety seal syncing, metadata persistence, and booking linking utilities.
- Added tests for Subuser navigation menu (`navigation-menu-items-user-subusers.spec.js`) to validate links and permission gating.
- Created unit and end-to-end tests for Subuser grant permissions and management, including permission nodes and invites (`subuser-grant-permission-nodes.spec.js`, `subuser-management.spec.ts`).
- Implemented `SubuserCompleteRegistrationPage.vue` with validation, token handling, and registration flow for Subuser setup.
- Enhanced Playwright e2e tests for Subuser features (`subuserCompleteRegistration.spec.ts`).
2026-04-14 10:09:10 +02:00
Jeppe Bundgaard a93b0dc954 Add tests and utilities for dynamic booking preload handling in POS flow:
- Introduced logic and utilities to fetch exact plate bookings beyond initial preload (`ensureVehiclePlateBookingsLoaded`, `mergePendingBookings`).
- Enhanced booking dropdown and chooser to handle dynamically loaded data for desktop POS.
- Updated e2e tests (`pos-flow.spec.js`) with scenarios for exact and partial plate matches in booking preload handling.
- Refactored `network.js` to support paginated and filtered responses for bookings based on registration fields.
- Improved UX and display logic in booking selectors (`LicensePlateReg1Input.vue`, `PosDepartmentProcess.vue`).
2026-04-13 21:53:16 +02:00
Jeppe Bundgaard 6549eb5015 Refactor POS booking flow and dropdown logic:
- Enhanced order booking sorting with improved date handling and validation (`getOrderBookingSortDateValue`, `hasOrderBookingSortDateValue`).
- Updated dropdown interaction in `LicensePlateReg1Input.vue` for better selection behavior and UX.
- Revamped test data and assertions in e2e tests with added coverage for new booking scenarios.
- Improved dropdown styling and responsiveness in `LicensePlateReg1Input.vue`.
2026-04-13 21:42:18 +02:00
Jeppe Bundgaard 0f37b0632a Add POS order booking modal and utilities with tests:
- Introduced `PosDesktopOrderBookingSelectorModal.vue` to streamline booking selection for desktop POS.
- Added `orderBookingDisplay.js` utility for handling booking display and reference value normalization.
- Created unit test `select-vehicle-form-pos.spec.js` to validate booking selection flow and registration matching.
- Implemented `run-playwright-ci-parallel.mjs` script to optimize Playwright CI with parallel testing.
- Updated styles and responsiveness for enhanced booking modal UX.
2026-04-13 21:12:34 +02:00
Jeppe Bundgaard 7d9d928a2d Normalize license plate input value handling in LicensePlateInput.vue:
- Ensured input field values are updated consistently with `props.actualValue`.
- Replaced raw `newValue` usage with normalized string values for better data integrity.
- Improved checks for synchronization and validation logic (`checkLicensePlateValid`, `searchCustomerRegistrationNumbers`).
2026-04-13 18:02:06 +02:00
Jeppe Bundgaard ce049d9196 Enhance POS booking flow logic and tests:
- Added support for trailers (`reg_2`) in booking selection and vehicle matching logic.
- Implemented logic to prioritize bookings from registered vehicles and trailers.
- Enhanced booking dropdown with date labels and validation for booked vehicles.
- Improved e2e tests to cover booking date, trailer registration, and vehicle-search scenarios.
- Refactored Vue components for consistency in booking handling and dropdown interaction.
2026-04-13 17:56:19 +02:00
Jeppe Bundgaard 8f3ec2cf09 Add booking selection popup and refactor POS booking flow logic:
- Introduced `PosDepartmentStepMobilePopupSelectOrderBooking.vue` for mobile booking selection.
- Refactored vehicle and booking handling in `SelectVehicleFormPOS.vue` with better plate matching, booking persistence, and customer association logic.
- Updated `PosVehicle` object type to include booking matches.
- Enhanced POS transaction history and booking views with improved readability, functionality, and `data-testid` attributes.
- Adjusted `PosPopup.vue` components to support the new booking popup.
2026-04-13 17:27:37 +02:00
Jeppe Bundgaard ecfe27571c Refactor booking flow tests and enhance product category filtering logic:
- Improved vehicle type selection handling with better validation and polling in `bookingFlow.ts`.
- Updated product card selectors for enhanced visibility and interaction in booking flow tests.
- Added `matchesProductCategory` utility in `network.js` for flexible and accurate product category filtering.
2026-04-13 15:44:15 +02:00
Jeppe Bundgaard 53d1ae114f Enhance booking flow and add customer validation handling:
- Introduced `ensureVehicleTypeSelection` utility to streamline vehicle type selection in `bookingFlow.ts`.
- Updated booking flow to conditionally handle vehicle type selection for desktop wizards.
- Added customer number validation logic in `network.js` to simulate backend responses for `/guest/validation/customer-number`.
2026-04-13 15:34:17 +02:00
Jeppe Bundgaard 653aa63899 Refactor POS components and implement new features:
- Replaced `POSOrderReference.vue` with `OrderAttachmentsActionButton.vue` and added new features like attachment preview, upload, and management.
- Introduced `POSOrderCustomerWishes.vue` for handling customer wishes fields with autosave behavior.
- Added Playwright global setup/teardown scripts for managing dev server lifecycle during tests.
- Enhanced booking flow test utilities and adjusted visibility rules in `bookingFlow.ts`.
2026-04-13 15:27:34 +02:00
Jeppe Bundgaard 8a25dcd97d Update attachment actions in orders table and e2e tests:
- Modified attachment controls to display "+" button when no attachments exist and ensured proper alignment with settings button.
- Refactored `shouldShowOrderAttachmentsButton` logic for improved clarity and access determination.
- Enhanced Vue component (`ordersTable.vue`) to handle attachment addition and visibility, adding support for dynamic labels and icons.
- Updated e2e tests (`admin-pos-orders.spec.ts`) to verify alignment, visibility, and interaction of attachment controls in desktop order list.
- Added CSS rules to improve positioning and responsiveness of order actions.
2026-04-13 14:45:29 +02:00
Jeppe Bundgaard 3e8a7ee3db Update POS styling and refactor Vue component for consistency:
- **CSS Enhancements:** Added `.pos-registration-control` class, improved styling for registration fields, and enhanced responsiveness for `.pos-order-items--order-detail`.
- **Vue Refactor:** Standardized imports, object keys, and quotes in `ActionSettingsWheelButton.vue` to align with consistent formatting and readability.
2026-04-13 14:28:12 +02:00
Jeppe Bundgaard 295f69ee41 Implement POS registration field and autosave utility:
- Added `PosOrderRegistrationField.vue` for managing inline registration field inputs with autosave behavior.
- Introduced `useOrderMetadataAutosave.js` composable for seamless value normalization, dirty tracking, and delayed persistence.
- Refactored mobile and desktop POS components to integrate `useOrderMetadataAutosave` for improved field management (e.g., `POSOrderReference.vue`, `PosOrderLicensePlates.vue`).
- Updated e2e tests to cover registration field scenarios, including input normalization and persistence (`pos-mobile-order-flow.spec.js`, `admin-pos-orders.spec.ts`).
- Enhanced styling and responsiveness for registration fields in `pos.css`.
2026-04-13 14:20:36 +02:00
Jeppe Bundgaard ade565cbca Introduce completeBookingCreationFlow utility and refactor booking flow tests:
- Added `completeBookingCreationFlow` utility to streamline booking creation logic in `bookingFlow.ts`.
- Refactored `userBookings.spec.ts` to replace inline booking creation steps with the new utility for improved readability and consistency.
- Applied `data-testid` attributes across booking-related components for enhanced testability and test coverage.
- Enhanced Playwright navigation error handling with `isBenignNavigationError` and `settleAuthenticatedNavigation` utilities to improve resilience and test robustness.
2026-04-13 13:39:48 +02:00
Jeppe Bundgaard 828e2fd312 Add test cases for internationalization, orders table rendering, and error handling:
- **Internationalization:** Added end-to-end test `i18n.smoke.spec.ts` to validate Danish locale translations. Ensured normalization and removed unexpected strings in the `da` locale file.
- **Orders Table:** Created unit test `orders-table.spec.js` to verify sparse data handling, invoice collection preloading, and rendering correctness.
- **Error Handling:** Enhanced connectivity issue UI (`ConnectivityIssue.vue`) with `data-testid` attributes for improved testability.
- **E2E Playwright Tests:** Updated and simplified e2e test utilities. Replaced `seedAuthenticatedState` with `primeMockSession` for session preparation. Added new tests for `/user/orders` and `/user/invoices` pages focusing on edge cases and maintaining structure consistency.
2026-04-13 12:44:06 +02:00
Jeppe Bundgaard 2969305dd5 Refactor POS desktop order workspace layout and add phone normalization utilities:
- Improved structure and layout in `PosDesktopOrderWorkspace.vue` with refined column handling and responsiveness.
- Added `resolveNormalizedPhoneNumber` utility in `POSDepartmentProcess.vue` for consistent phone number normalization across customer records.
- Updated e2e tests to validate layout changes and phone handling behavior.
- Upgraded Playwright to version 1.58.2 and adjusted related configurations.
- Ensured consistent formatting and added `postinstall` script for syncing Playwright root links.
- Strengthened POS customer rule tests with edge case validations for phone number objects.
2026-04-13 09:44:50 +02:00
Jeppe Bundgaard b39b458f4f Add .prettierrc.json and refactor test files for improved formatting consistency:
- Introduced `.prettierrc.json` to enforce consistent code formatting across the project.
- Updated unit and e2e test files to address formatting issues, improve readability, and ensure alignment with the new Prettier configuration.
2026-04-13 09:13:27 +02:00
Jeppe Bundgaard f040614f46 Refactor module paths, layout responsiveness, and testing configurations:
- Replaced repetitive department module URL logic with `buildDepartmentModulePath` utility in `DepartmentModulesDisplay.vue`.
- Enhanced layouts and responsive behavior across components, including `PosDepartmentStep1MobileTransactionHistory.vue` and `DepartmentDailyReport.vue`.
- Removed unused `SuperuserInvoicingLocalStore.vue` and refactored to `SuperuserInvoicingLocalStore.ts`.
- Updated media query handling and card layout adjustments in `DepartmentDailyReport.vue`.
- Added new Playwright configurations (`playwright.prod.config.ts` and `playwright.live.config.ts`) for e2e release workflows.
- Extended e2e and unit test coverage for mobile POS and department modules.
2026-04-09 16:32:25 +02:00
Jeppe Bundgaard e8bd2f5478 Add employee fixtures, mobile POS customer note popup, and alignment updates:
- Introduced employee fixtures in `mobilePos.js` for testing workflows involving employee data.
- Enhanced `PosDepartmentStep1MobileCustomerNotes.vue` with translated labels and data-test attributes.
- Added e2e tests for customer notes popup and translated label validation.
- Improved alignment and responsiveness for `PaginationDisplayGeneralSearchReload.vue` and related e2e tests.
- Updated button logic and styles in `GenericButton.vue` and other mobile POS components for consistent UI behavior.
2026-04-09 14:47:43 +02:00
Jeppe Bundgaard 64aa94ebc3 Add alignment utilities and enhance mobile POS e2e tests:
- Introduced helper functions (`expectHorizontallyCentered`, `expectSameRow`, `expectAboveFixedActions`) for alignment checks in `pos-mobile-order-flow.spec.js`.
- Enhanced e2e tests with layout validations for titles, subtitles, and form inputs.
- Added `reserveSpace` prop and CSS variable handling to `PosDepartmentStepMobileFixedBottomControl.vue` for better spacing control.
- Improved layouts and responsiveness in mobile POS components like `PosDepartmentStepMobile2.vue` and `ScannerInstructions.vue`.
2026-04-09 14:14:56 +02:00
Jeppe Bundgaard 157c3dbf60 Add enhanced POS desktop workspace with customer rail and order summary:
- Introduced `PosDesktopOrderWorkspace.vue` for improved order and customer management.
- Added `PosOrderItemsDefaultTable.vue` with detailed row actions, price tooltips, and order item grouping.
- Enhanced `LicensePlateReg1Input.vue` to preserve customer selection when switching license plates.
- Improved `PosDepartmentStep3.vue` with updated desktop layout using the new POS workspace.
- Added e2e test for customer rules tab to verify dynamic attribute reloading.
2026-04-09 14:03:46 +02:00
Jeppe Bundgaard 2bf1f5b385 Add enhanced department complaint functionality with category and date support alongside POS improvements:
- Introduced `departmentDailyReportComplaintCategories.js` for managing complaint categories with validation utilities.
- Added category and wash date fields to the complaint editing interface with validation in `DepartmentDailyReportComplaints.vue`.
- Developed `PosOrderDetailItemsTable.vue` for displaying order details with inline actions and price highlighting.
- Implemented `PosOrderItemEditModal.vue` for editable order items with validations for price and quantity.
- Created unit tests for `PosLastScannedLicensePlatesV2.vue` to verify scanning, caching, and error handling behaviors.
2026-04-09 12:55:30 +02:00
Jeppe Bundgaard 78648a0b7f Add customer complaints, edge gateway terminal, and mobile POS functionalities with e2e and unit test coverage:
- Implemented `departmentDailyReportComplaintCustomers.js` module for handling customer complaint data, including search, normalization, and API integration.
- Added `EdgeGatewayTerminal.vue` for root shell access with session approval, dynamic status handling, and user feedback.
- Developed `mobilePos.js` for simulating mobile POS fixtures and workflows in e2e tests.
- Introduced relevant e2e and unit tests to ensure functionality and error handling across modules.
2026-04-09 11:35:18 +02:00
Jeppe Bundgaard 90427c631f Add customer complaints page for superusers with pagination, filtering, and e2e test coverage:
- Implemented `CustomerComplaints.vue` and `CustomerComplaintsPagination.vue` for managing complaints with department filters, search functionality, and sorting.
- Added `CustomerComplaintsTable.vue` for displaying complaint details with edit and delete actions.
- Introduced `DepartmentDailyReportComplaints` module for managing CRUD operations and validation.
- Added e2e tests for complaint workflows, including pagination, filtering, and customer interaction validation (`superuser-customer-complaints.spec.ts`).
- Included validation logic and error handling for phone call gate configurations (`DepartmentGates.vue`).
- Enhanced department gate e2e tests with validation scenarios (`superuser-department-gates.spec.ts`).
2026-04-08 20:41:14 +02:00
Jeppe Bundgaard 29c6c9d135 Add e2e tests for admin module functionalities:
- Introduced tests for admin daily report features, including tile rendering, complaint management, and stale response handling.
- Added department visibility tests to ensure hidden departments are excluded from UI controls.
- Implemented night wash overview tests for breakdown validation, missing hours detection, and stable range updates.
2026-04-08 19:00:24 +02:00
Jeppe Bundgaard 8eb315f439 Add comprehensive unit and e2e tests for invoice collection, queue logic, and modal interactions:
- Introduced e2e test for "Change Invoice Collection" in `change-invoice-collection.spec.ts`.
- Added unit tests for `CollectedOrderInvoiceOverview.vue` including edit flow for `closed_at`.
- Implemented tests for queue reliability, state handling, and customer actions:
  - `CollectedOrderInvoicesQueueHistory.vue`: polling, error handling, richer diagnostics, and retry logic.
  - `InvoicingBillingPeriod` views: refresh and queue state handling.
- Enhanced test coverage for Stripe queue functionality and related actions.
2026-04-08 15:53:52 +02:00
Jeppe Bundgaard 2b6129db29 Add economic queue functionality with Vue component, unit tests, and e2e tests:
- Introduced `CollectedOrderInvoicesQueueHistory.vue` for displaying and managing job queue history.
- Added queue management features: polling with active status detection, error handling, retry logic, and pagination controls.
- Implemented e2e tests for economic queue workflows, including export polling, retries, validation errors, and component unmount behavior.
- Added unit tests for queue logic, payload normalization, and retry scenarios.
- Created `EconomicQueuePlaywrightHarness.vue` to support e2e testing with mock workflows.
2026-04-08 11:19:16 +02:00
Jeppe Bundgaard 1705d0d0ed Add unit tests and enhance logic for department gate capabilities and XLVask usage filtering:
- Introduced `getDepartmentOutsideGateCapabilities` with caching, input normalization, and error handling.
- Added tests for department gate detection, normalization, and fallback scenarios.
- Implemented `XLVaskUsageFilters` to filter and detect attached usage orders.
- Enhanced `XLVaskUsagePagination` with computed visible object counts and filtering functionality.
2026-04-07 14:02:34 +02:00
Jeppe Bundgaard beaf95a5b1 Add outside gate controls to SelfServeMachineRelayControls with comprehensive tests:
- Introduced `openOutsideEntranceGate` and `openOutsideExitGate` actions.
- Added dynamic button rendering based on department gate capabilities.
- Implemented unit tests for gate visibility and action triggers.
2026-04-01 17:12:00 +02:00
Jeppe Bundgaard 19501896e1 Add comprehensive test coverage for department gates and self-serve wash actions:
- Introduced unit tests for `DepartmentGates` config modal and gate commands in `useWashSessionActions`.
- Added E2E tests to verify gate commands and button functionality in self-serve in-progress flow.
- Updated localization files to include gate control labels (`open_property_access_gate`, `open_property_exit_gate`).
- Enhanced `DepartmentGates.vue` with config modal logic, field validation, and dynamic input rendering.
2026-03-26 16:32:34 +01:00
Jeppe Bundgaard ce9a209d73 Add property gate controls to self-serve wash functionality:
- Introduced `openPropertyAccessGate` and `openPropertyExitGate` actions in `useWashSessionActions.js`.
- Added Vue button components for gate control in `MyWashStart.vue`.
- Updated localization files with translations for gate control labels.
2026-03-26 16:00:32 +01:00
Jeppe Bundgaard 0fe2e19211 Extend MachineStatusType and enhance self-serve machine status logic:
- Added `UNKNOWN` and `VALID` statuses to `MachineStatusType` with corresponding icon and style mappings.
- Updated `SelfServeMachineRelayControls` to use `UNKNOWN` and `VALID` statuses for machine and customer displays.
- Introduced `decimalRound` function for precise rounding in `DepartmentWeather.vue` data rendering.
- Applied `decimalRound` to display hours with two decimal precision in department reports.
2026-03-26 15:31:28 +01:00
Jeppe Bundgaard d354ce7737 Enhance self-serve functionality with dynamic images, gate handling, and machine-scoped vehicle type filtering:
- Added dynamic image previews with query parameter handling and error recovery in `SelfServeTryModal.vue`.
- Introduced outside gate controls (`Entrance` and `Exit`) in `SelfServeMachineRelayControls.vue` with corresponding command handling logic.
- Enhanced vehicle type scoping logic in `SelfServeTasksPagination.vue` and `SelfServeConditionsPagination.vue` to ensure machine-type filtering consistency.
- Updated related unit tests to verify new dynamic image logic, gate controls, and scoping behaviors.
2026-03-26 14:13:15 +01:00
Jeppe Bundgaard 3e84421913 Introduce drag-and-drop task reordering in DepartmentSelfServeStudio.vue:
- Added drag-and-drop functionality for task prioritization, with visual indicators and reordering logic.
- Updated UI to support draggable tasks and ensure accessibility for admin users.
- Included unit tests to verify drag-and-drop behavior, task priority updates, and error handling.
2026-03-26 11:40:01 +01:00
Jeppe Bundgaard 7368c476f1 Add task priority, gate type normalization, and vehicle type logic to self-serve functionalities:
- Introduced task order priority, dynamic image thumb position, and improved task gate type handling in the self-serve studio.
- Enhanced task payload normalization with nullable fields and parameter verification.
- Updated UI with order priority controls, dynamic images configuration, and machine type-specific scoping options.
- Added and refined unit tests for task sorting, form controls, and validation rules.
2026-03-26 11:35:24 +01:00
Jeppe Bundgaard 21be6c0efd Add unit tests for legacy and machine-type scoping in DepartmentSelfServeStudio.vue:
- Introduced tests for legacy scope selectors and task submission validation.
- Added guards for vehicle type, lane, and department scoping in questions and tasks.
- Verified cache clearing and consistent data loading for self-serve studio.
- Updated navigation and localization for new self-serve paths.
2026-03-26 09:39:03 +01:00
Jeppe Bundgaard 173a0becdf Add unit tests for DepartmentSelfServeStudio.vue condition and vehicle type scoping:
- Added tests to verify legacy scope selectors for lanes and vehicle types.
- Ensured condition submission is guarded for both machine type and legacy scopes.
- Validated vehicle type scoping with product query filtering and new record defaults.
2026-03-25 19:33:08 +01:00
Jeppe Bundgaard 4d810247c5 Add vehicle type scoping to DepartmentSelfServeStudio.vue:
- Introduced `scopedProductId` for vehicle-specific filtering and configuration adjustments.
- Added `Vehicle Type` dropdown for filtering questions, conditions, and tasks.
- Enhanced validation for department, lane, and vehicle type scoping.
- Updated UI to include vehicle type scoping indicators and selection components.
- Added alignment fixes for action buttons and corresponding unit test coverage.
2026-03-25 19:32:59 +01:00
Jeppe Bundgaard 30d23aeaf8 Add DepartmentSelfServeStudio.vue for advanced self-serve configuration management:
- Introduced a new Vue component supporting versioned configuration authoring for questions, conditions, tasks, and rules.
- Implemented scoped editing with lane and machine type-specific configurations.
- Added version tracking features, including validation, publication, and rollback.
- Enhanced UI with tabbed navigation, modals for adding/editing records, and notifications for actions.
2026-03-25 17:55:17 +01:00
Jeppe Bundgaard 2c22a548e1 Extend self-serve functionality with new machine statuses, config version tracking, and detailed session displays:
- Added `INCLUDED` and `BILLABLE` statuses to `MachineStatusType` for enhanced session tracking.
- Introduced `configVersionId` and `evaluationTrace` support in self-serve logic and UI.
- Enhanced `SelfServeMachineRelayControls` with billable session parsing and UI updates.
- Updated `SelfServeMachineStatus` to reflect new statuses with appropriate icons and labels.
- Improved session summary displays with detailed evaluation trace output.
2026-03-25 16:15:19 +01:00
Jeppe Bundgaard 5b181087ff Upgrade dependencies in package-lock.json:
- Updated `@vitejs/plugin-vue`, `@vitejs/plugin-vue-jsx`, `@asamuzakjp/dom-selector`, `@azure/msal-browser`, and various `@babel` packages.
- Introduced new sub-dependencies and licenses.
- Removed legacy nested dependencies.
2026-03-25 15:23:17 +01:00
Jeppe Bundgaard c184054380 Merge remote-tracking branch 'origin/master' 2026-03-25 15:12:05 +01:00
Jeppe Bundgaard 5b440a6948 Add tooltips to relay controls for improved self-serve machine guidance:
- Enhanced `SelfServeMachineRelayControls` with detailed `b-tooltip` descriptions for Machine, Program Picker, and Cleaner relays.
- Added `b-tooltip` to `SelfServeMachine` for the "Allow Self-Serve" toggle, explaining its impact on machine accessibility.
- Updated imports to include `BTooltip` from Buefy.
2026-03-25 15:11:34 +01:00
Jeppe Bundgaard 844d57b1a5 Add unit tests and logic for department self-serve enablement:
- Implemented department self-serve status management in `SelfServeMachine` with fetching, updating, and error handling.
- Added unit tests for status retrieval, toggle behavior, and error scenarios.
- Enhanced UI with `b-switch` for self-serve enablement control.
2026-03-25 14:50:07 +01:00
Jeppe Bundgaard caec066c6c Add department self-serve management with API integration and tests:
- Introduced `DepartmentModulesDisplay` and `DepartmentModulesSetup` components for self-serve enablement management.
- Implemented `getDepartmentSelfServeEnabled` and `setDepartmentSelfServeEnabled` helpers.
- Added unit tests for self-serve status fetching, updating, and UI synchronization.
- Enhanced connectivity and relay logic with in-progress wash session handling and detailed displays.
2026-03-25 14:06:22 +01:00
Jeppe Bundgaard d03b7d86bf Add shared gate control logic and in-progress wash API integration:
- Implement shared gate relay handling in `SelfServeMachineRelayControls` with unified button for entrance/exit.
- Add unit tests for gate control variations (shared vs. separate relays).
- Extend OpenAPI with endpoints for in-progress wash session details and gate operations.
- Update `MachineType` with relay configurations for comprehensive gate handling.
2026-03-25 13:39:38 +01:00
Jeppe Bundgaard 2c0f012446 Add gate control functionality to self-serve connectivity:
- Implemented `openEntranceGate` and `openExitGate` actions in connectivity relay.
- Added gate normalization logic and error handling for invalid gate types.
- Updated components and unit tests to support entrance/exit gate opening.
2026-03-25 13:25:20 +01:00
Jeppe Bundgaard 620c4f0859 Add comprehensive unit tests for connectivity relays and machine store:
- Implemented tests for self-serve connectivity relay API wrappers, covering status retrieval, set operations, and lane commands.
- Added tests for the machine connectivity store, including relay toggling, polling, force operations, and error handling.
- Refactored relay functionality to improve maintainability and testability, introducing helper functions for lane and relay commands.
- Updated machine and connectivity-related components to align with new relay definitions and shared store logic.
2026-03-25 13:20:51 +01:00
Jeppe Bundgaard de28f2cd49 Add MachineRelayType and refactor relay handling for self-serve dashboard:
- Added `MachineRelayType` for defining relay types and statuses.
- Refactored relay logic into `SelfServeConnectivityRelay` for cleaner separation of concerns.
- Updated `MachineType` to include relay configurations for machine, program picker, and cleaner.
- Replaced inline relay handling in `SelfServeMachineConnectivity` with the reusable `SelfServeConnectivityRelay` module.
2026-03-25 12:38:34 +01:00
Jeppe Bundgaard 81bd4c8583 Add interval-based status polling and toggle functionality to SelfServeMachineRelayControls:
- Refactored relay status retrieval with a polling mechanism using `setInterval`.
- Added relay toggle controls (`b-switch`) for machine, program picker, and cleaner relays.
- Improved error handling for relay status fetch and toggle operations.
- Updated lifecycle hooks to clean up polling on component unmount.
2026-03-25 12:24:10 +01:00
Jeppe Bundgaard 97bcf73db8 Add relay machine controls and program picker integration:
- Added `relay_machine_program_picker_id` and `relay_machine_cleaner_id` fields across components, views, and localization files.
- Updated relay control logic to include program picker and cleaner relays.
- Extended e2e and unit tests to validate new relay functionalities.
- Refactored related components to handle expanded relay configurations.
2026-03-25 11:42:02 +01:00
Jeppe Bundgaard c6531076ae Add Department Self-Serve dashboard with machine relay controls and API integration:
- Implemented `DepartmentSelfServe` dashboard for managing machine statuses and relays.
- Added components for machine display, controls, and relay connectivity (`SelfServeMachine`, `SelfServeMachineControls`, `SelfServeMachineRelayControls`).
- Integrated machine relay API endpoints (`/modules/self-serve/lane/relay/machine/*`) for status retrieval and updates.
- Updated router configuration with a new route for the self-serve dashboard.
- Extended OpenAPI definition to include machine relay APIs and enhance department weather targets documentation.
2026-03-25 11:24:20 +01:00
Jeppe Bundgaard 1b97332c38 Add unit tests for shared date range synchronization and refactor DepartmentDashboardOverviewNavigation components:
- Added behavior tests covering shared date range updates across multiple components, including `DepartmentDailyReportThisWeek` and `DepartmentDailyReportSmall`.
- Updated `DepartmentDashboardOverviewNavigation` to route date updates via the shared daily report store.
- Refactored components to use shared `DepartmentDailyReportObject` for date state management.
- Adjusted e2e tests to validate date range synchronization and department goal progress tracking.
2026-03-24 16:53:16 +01:00
Jeppe Bundgaard 477688d16e Add cadence target calculation for timeframe-based goal progress resolution:
- Implemented `computeCadenceTargetForTimeframe` utility to calculate dynamic targets based on timeframe and cadence criteria.
- Extended tests to validate timeframe-specific progress key selection, slice resolution, and cadence-based targets.
- Refactored `DepartmentGoals` to integrate cadence-aware target resolution and fallback logic.
- Enhanced e2e tests to cover bi-weekly cadence goals and dynamic target updates across timeframes.
2026-03-24 16:32:35 +01:00
Jeppe Bundgaard bc043b95f9 Refactor DepartmentWeather status computation with work-hour-based thresholds: add health categories and fallback for zero hours. 2026-03-24 15:07:55 +01:00
Jeppe Bundgaard 1e6590e2df Add goal progress resolver utility with extensive tests and DepartmentGoals refactor.
- Implemented `goalProgressResolver` utility for resolving progress keys, slices, and periods.
- Refactored `DepartmentGoals` to integrate `goalProgressResolver` for improved clarity and modularity.
- Updated progress calculations with cadence-aware key handling and fallback resolution.
- Add isLoading handling and loader animations to `DepartmentWeather` and improve `GET` request concurrency.
2026-03-24 14:58:48 +01:00
Jeppe Bundgaard 8b8780bbaf Refactor DepartmentWeather for key-based rendering and summary toggle improvements:
- Added `getEntryKey` function to generate unique keys for dynamic entries.
- Enhanced `isMultiDaySelection` watcher with immediate execution option.
- Updated DOM structure for action buttons with inline export button support.
- Adjusted unit tests to cover functional changes and new test case for summary mode toggling.
2026-03-24 13:59:38 +01:00
Jeppe Bundgaard 5a0d1b7712 Add daily summary toggle to DepartmentWeather with tests and refactor:
- Implemented a daily summary toggle for multi-day selections in `DepartmentWeather`.
- Refactored state computation to support hourly and daily views with weather/status aggregation.
- Added unit tests for summary toggle functionality and entry summarization logic.
2026-03-24 13:39:15 +01:00
Jeppe Bundgaard 3cc0a5bb15 Add tests for DepartmentWeather and update daily report wiring:
- Added unit tests for `DepartmentWeather` component to validate weather API calls, state handling, and edge cases (e.g., no departments, stale responses, hidden hours).
- Updated `DepartmentDailyReport` wiring to pass `department_ids`, `date_from`, and `date_to` to `DepartmentWeather`.
- Enhanced OpenAPI definition for weather timeline API with refined query parameters (`date_from`, `date_to`) and updated descriptions.
- Improved `GoalFormModal` layout, adding `department-grid--single-scroll` for better scrolling behavior and responsiveness.
2026-03-24 13:33:17 +01:00
Jeppe Bundgaard ff944ad1f2 Refactor goal form modal, update internationalization strings, and enhance API parameters:
- Restructured goal form modal with new tabbed layout for better usability.
- Updated and corrected i18n strings across multiple languages.
- Enhanced API descriptions for department weather timeline, added support for multiple department IDs, and refined query parameter logic.
2026-03-24 13:07:26 +01:00
Jeppe Bundgaard 1ee2da7ad8 Add advanced goal criteria handling with input normalization, duration modes, and improved validation:
- Introduced target duration modes (`weeks`, `months`, `years`, `legacy`) with optional cadence.
- Implemented input normalization for department daily targets and progress alerts.
- Added validations for duration cadence and date ranges.
- Updated internationalization strings for new form fields and validation messages.
- Extended tests for goal criteria serialization, normalization, and API payload generation.
2026-03-24 12:48:54 +01:00
Jeppe Bundgaard f372e59a07 Enhance Workfeed diagnostics and localization:
- Updated `listShifts` diagnostic modal to include new filters (date range, employee, release state) with improved UI/UX.
- Simplified employee and department lookup diagnostics by removing unnecessary search inputs.
- Standardized error handling and validation messages for shift diagnostics.
- Extended localization files across all supported languages with new diagnostic strings.
- Adjusted Workfeed module logic to reflect updated query parameters (`startFrom`, `startTo`, `employeeID`, `released`).
- Updated and added unit and e2e tests to validate new diagnostic flows and parameter constraints.
2026-03-24 11:52:15 +01:00
Jeppe Bundgaard eeef782705 Simplify Workfeed schemas and endpoint descriptions:
- Removed unnecessary query parameters and pagination fields from `employees`, `shifts`, and `departments` endpoints.
- Standardized `description` fields with explicit API request details.
- Consolidated schema components (e.g., `WorkfeedPagination`) and enhanced examples for clarity.
- Updated API URL from `https://api.workfeed.io` to the new production endpoint.
- Improved shift schemas with granular fields for approvals, breaks, and comments.
2026-03-24 11:37:16 +01:00
Jeppe Bundgaard 44031da7b1 Add support for CompanyID in Workfeed configuration and update localization files:
- Extend i18n locales to include `company_id` and `company_id_desc` strings for API synchronization.
- Add `CompanyID` field to Workfeed configuration UI in `ConfigurationWorkfeed.vue`.
- Update unit and e2e tests to validate `CompanyID` functionality.
- Adjust Workfeed module logic to handle `CompanyID` get/set operations.
2026-03-24 11:22:36 +01:00
Jeppe Bundgaard 943bc8ec97 Add Workfeed module with configuration management, diagnostics, and API integration:
- Implement `Workfeed` module with endpoints for employees, shifts, departments, and diagnostics.
- Add configuration UI for enabling Workfeed, API settings (`api_url`, `api_key`), and integration diagnostics.
- Add unit tests for module schema validation, API endpoints, and diagnostics contract.
- Introduce smoke test for Workfeed configuration and modal diagnostics.
- Extend i18n locales to support Workfeed integration.
2026-03-24 11:19:09 +01:00
Jeppe Bundgaard 0949d861f9 Add detailed examples and extend schema definitions for Workfeed configurations:
- Introduced examples for `WorkfeedConfigResponse` to demonstrate configurations like `enabled`, `api_url`, `api_key`, and `CompanyID`.
- Split `WorkfeedConfigEntry` into specific schema components with updated discriminator logic for easier validation and understanding.
- Enhanced OpenAPI documentation for `Workfeed` module configuration endpoints.
2026-03-24 10:56:45 +01:00
Jeppe Bundgaard 2903cdf57d Add Workfeed module endpoints and schemas to OpenAPI:
- Introduced `Workfeed` API endpoints for employees, shifts, and departments with optional filtering and pagination.
- Added configuration endpoints for Workfeed including `getWorkfeedConfig` and `updateWorkfeedConfig`.
- Defined schema components for `WorkfeedEmployee`, `WorkfeedShift`, `WorkfeedDepartment`, and related list/pagination responses.
- Updated tags to include new `Security` and `Modules` categories.
2026-03-24 10:37:05 +01:00
Jeppe Bundgaard 66682040e7 Merge remote-tracking branch 'origin/master' 2026-03-20 13:18:39 +01:00
Jeppe Bundgaard 2685888e24 Add unit tests for ActionSettingsWheelButton and refactor user resolution logic:
- Add unit tests covering `ActionSettingsWheelButton` behavior for resolving user ID and customer lookups.
- Refactor `ActionSettingsWheelButton` to use `watch` for reactive user ID and customer number changes.
- Replace `getUserId` with `resolveUserId` for improved error handling and cancellation of outdated requests.
- Simplify `hasUser` logic using a computed property and update dependent logic accordingly.
2026-03-20 13:16:33 +01:00
Jeppe Bundgaard 43cf2b302d Add tests for EditableTableColumn and fix tooltip multiline logic:
- Add unit tests for `EditableTableColumn` covering tooltip multiline behavior with `hoverHtml`.
- Update tooltip logic to use `isTooltipMultiline` computed property for slot checks.
- Adjust `OrderBookingsTable` to fix incorrect usage of `permissionCheckFunction` arguments.
- Optimize `RequestQueueProgress` state handling by removing unused visibility logic.
- Add unit test to ensure no recursive update errors occur during large request processing.
2026-03-20 13:10:35 +01:00
Jeppe Bundgaard f9bde54956 Add component-level permission tracking and visibility handling:
- Introduce `RequiresPermission` component for permission-based UI controls.
- Add missing permission reporting logic with throttling to `requestQueueState`.
- Update `DepartmentGoals.vue` to wrap actions with `RequiresPermission`.
- Extend unit and e2e tests to validate permission handling scenarios.
2026-03-19 18:29:00 +01:00
Jeppe Bundgaard 6ea51a70d8 Add system-search:close event handling and triple-Shift dispatch for superuser:
- Handle `system-search:close` events in `NavigationMenuGlobalSearch` to close modal.
- Implement `closeSystemSearchForSuperuser` dispatch from `RequestQueueProgress` on triple-Shift.
- Update booking API logic in `NavigationMenuItemsAdmin` for refined date filtering.
- Extend unit tests to validate `system-search:close` behavior and triple-Shift handling.
2026-03-19 16:36:58 +01:00
Jeppe Bundgaard 9cccf49a4d Enhance network tracking and insights in RequestQueue and RequestQueueProgress:
- Add network totals tracking (requests, responses, and bandwidth) in `requestQueueState`.
- Introduce byte estimation functions for requests and responses.
- Update `RequestQueueProgress` layout to display network metrics and runtime insights.
- Add dedicated bottom panel for recent request latency insights (e.g., Ping, Bookings).
- Extend unit tests to verify runtime metrics and insight behavior.
2026-03-19 16:23:53 +01:00
Jeppe Bundgaard af7d894f5c Update RequestQueueProgress layout: adjust alignment and add flexbox styling for improved responsiveness 2026-03-19 15:37:08 +01:00
Jeppe Bundgaard 3ac49b4c65 Add Escape key support to close RequestQueueProgress and corresponding unit test:
- Update keyboard handler to close and reset state when Escape is pressed.
- Add unit test to validate Escape key behavior.
2026-03-19 15:33:45 +01:00
Jeppe Bundgaard cb81058611 Replace double-Alt shortcut with triple-Shift for expanding and displaying RequestQueueProgress:
- Update shortcut detection logic to use triple-Shift within a configurable time window.
- Rename variables and constants for clarity (`lastShiftKeyPressedAtMs`, `SHIFT_MULTI_PRESS_WINDOW_MS`, etc.).
- Adjust unit tests to validate new triple-Shift behavior and visibility changes.
2026-03-19 15:27:54 +01:00
Jeppe Bundgaard 23f5fdfcbf Add double-Alt shortcut to expand and display RequestQueueProgress:
- Update visibility logic with a double-Alt keypress detection.
- Introduce `isShortcutActivated` and `lastAltKeyPressedAtMs` for shortcut tracking.
- Adjust template rendering to depend on the shortcut activation state.
- Add unit tests to validate double-Alt behavior and its impact on visibility and expansion.
2026-03-19 15:25:30 +01:00