feat: sledování objednávek přes Wolt
CI / Generate TypeScript types (push) Successful in 13s
CI / Server unit tests (push) Successful in 25s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 53s
CI / Notify (push) Successful in 2s
CI / Generate TypeScript types (push) Successful in 13s
CI / Server unit tests (push) Successful in 25s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 53s
CI / Notify (push) Successful in 2s
Vedle Bolt Food jde nově sledovat i objednávka z Woltu — stačí u objednané skupiny vložit odkaz z track.wolt.com. Logika sledování je zobecněná do registru rozvozových služeb (trackingProviders.ts): každá služba umí vytáhnout kód ze sdílecího odkazu a dotázat se svého API, scheduler i stepper jsou společné. - pole skupiny bolt* přejmenována na tracking* + nové trackingProvider - endpoint /groups/setBoltTracking → /groups/setTracking - Wolt: čas doručení z delivery_eta v časové zóně objednávky, 404 ukončí sledování, stav kurýra odvozen z is_delivering/is_delivering_other_order - DEV simulace zůstává jen pro Bolt Food
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { loginViaApi } from './helpers';
|
||||
|
||||
const BOLT_LABEL = 'Upozornění na doručení objednávky (Bolt Food)';
|
||||
const DELIVERY_LABEL = 'Upozornění na doručení objednávky (Bolt Food / Wolt)';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await loginViaApi(page, 'e2e-user');
|
||||
@@ -15,24 +15,24 @@ async function openSettings(page: import('@playwright/test').Page) {
|
||||
await expect(page.locator('.modal-title')).toContainText('Nastavení', { timeout: 5_000 });
|
||||
}
|
||||
|
||||
test('Přepínač doručení Bolt je pod výběrem času připomínky', async ({ page }) => {
|
||||
test('Přepínač doručení objednávky je pod výběrem času připomínky', async ({ page }) => {
|
||||
await openSettings(page);
|
||||
|
||||
const reminderGroup = page.locator('.modal-body .mb-3').filter({ hasText: 'Připomínka výběru oběda' });
|
||||
const boltGroup = page.locator('.modal-body .mb-3').filter({ hasText: BOLT_LABEL });
|
||||
const deliveryGroup = page.locator('.modal-body .mb-3').filter({ hasText: DELIVERY_LABEL });
|
||||
await expect(reminderGroup).toBeVisible();
|
||||
await expect(boltGroup).toBeVisible();
|
||||
await expect(deliveryGroup).toBeVisible();
|
||||
|
||||
// Přepínač musí v DOM následovat až za skupinou s časem připomínky
|
||||
const order = await page.evaluate((label) => {
|
||||
const groups = Array.from(document.querySelectorAll('.modal-body .mb-3'));
|
||||
return {
|
||||
reminder: groups.findIndex(g => g.textContent?.includes('Připomínka výběru oběda')),
|
||||
bolt: groups.findIndex(g => g.textContent?.includes(label)),
|
||||
delivery: groups.findIndex(g => g.textContent?.includes(label)),
|
||||
};
|
||||
}, BOLT_LABEL);
|
||||
}, DELIVERY_LABEL);
|
||||
expect(order.reminder).toBeGreaterThanOrEqual(0);
|
||||
expect(order.bolt).toBe(order.reminder + 1);
|
||||
expect(order.delivery).toBe(order.reminder + 1);
|
||||
|
||||
// Výchozí stav je vypnuto
|
||||
await expect(page.locator('#boltDeliveredCheckbox')).not.toBeChecked();
|
||||
|
||||
Reference in New Issue
Block a user