Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions frontend/e2e/pos-keyboard-shortcuts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,28 @@ test.describe('POS Keyboard Shortcuts & Rapid Cashier Ergonomics', () => {
await page.getByRole('button', { name: 'Remove', exact: true }).first().click();
});

test('Escape closes the payment queue drawer', async ({ page }) => {
await page.route('**/api/settings/multi_counter_enabled', async (route) => {
await route.fulfill({ json: { setting: { key: 'multi_counter_enabled', value: 'true' } } });
});
await page.route('**/api/counters*', async (route) => {
await route.fulfill({ json: { counters: [] } });
});
await page.reload();
await expect(page.getByTestId('pos-product-grid')).toBeVisible();

await page.getByTestId('pos-payment-queue-btn').click();
const drawer = page.getByTestId('payment-queue-drawer');
await expect(drawer).toBeVisible();

await page.getByTestId('payment-queue-search').focus();
await page.keyboard.press('Escape');
await expect(drawer).toBeVisible();
await page.keyboard.press('Escape');
await expect(drawer).toHaveCount(0);
await expect(page.getByTestId('pos-payment-queue-btn')).toBeFocused();
});

test('PrepaidCheckoutModal focused buttons are not hijacked by global Space/Enter quick-pay', async ({
page,
}) => {
Expand Down
7 changes: 7 additions & 0 deletions frontend/src/app/(dashboard)/pos/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3621,6 +3621,13 @@ export default function POSPage() {
setShowScheduledOrders(false);
return true;
}
if (showPaymentQueue) {
setShowPaymentQueue(false);
setTimeout(() => {
document.querySelector<HTMLElement>('[data-testid="pos-payment-queue-btn"]')?.focus();
}, 0);
return true;
}
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
Resolved
if (cashDrawer.open) {
cashDrawer.setOpen(false);
return true;
Expand Down
Loading