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.
This commit is contained in:
Jeppe Bundgaard
2026-04-09 14:03:46 +02:00
parent 2bf1f5b385
commit 157c3dbf60
32 changed files with 2030 additions and 538 deletions
+14
View File
@@ -38,6 +38,14 @@ async function primeSession(page, { token, permissions, sessionData = {} }) {
});
}
async function expectDesktopOrderItemsTable(scope) {
await expect(scope.getByTestId("pos-order-panel-cart")).toBeVisible();
await expect(scope.getByTestId("pos-order-detail-items-table")).toBeVisible();
await expect(scope.getByTestId("pos-order-metadata-grid")).toBeVisible();
await expect(scope.getByTestId("pos-order-total")).toBeVisible();
await expect(scope.locator('[data-auto-excel-export-button="1"]')).toHaveCount(0);
}
function createPosFixture() {
const customer = {
id: 1,
@@ -623,6 +631,7 @@ test.describe("POS flow", () => {
await page.locator('[data-testid="pos-next-step"]:visible').click();
await expect(page.getByTestId("pos-step-2")).toBeVisible({ timeout: 10_000 });
await expect(page).toHaveURL(/step=2/);
await expectDesktopOrderItemsTable(page.getByTestId("pos-step-2"));
await page.getByTestId("pos-product-card-53").click();
await expect(page.getByTestId("pos-add-to-cart-53")).toBeVisible({ timeout: 10_000 });
@@ -638,6 +647,7 @@ test.describe("POS flow", () => {
await page.locator('[data-testid="pos-next-step"]:visible').click();
await expect(page.getByTestId("pos-step-3")).toBeVisible({ timeout: 10_000 });
await expect(page).toHaveURL(/step=3/);
await expectDesktopOrderItemsTable(page.getByTestId("pos-step-3"));
const markCompletedRequest = page.waitForRequest((request) => {
return request.method() === "POST" && request.url().includes("/orders/mark_as_completed");
@@ -654,6 +664,10 @@ test.describe("POS flow", () => {
}
return "pending";
}, { timeout: 10_000 }).not.toBe("pending");
if (await page.getByTestId("pos-step-4").isVisible()) {
await expectDesktopOrderItemsTable(page.getByTestId("pos-step-4"));
}
});
});