Commerce QA catalogue
Search every storefront and back-office case. Coverage counts cases that already have an automated spec.
709 cases · 487 automated · 222 manual
| Case | Area | Title | Kind | Coverage |
|---|---|---|---|---|
| AC-893-01 | catalogue | P29.1 Commerce mode per workspace: English safety net (P23.0) shows zero diff for a workspace with commerce off.Steps
Expected English safety net (P23.0) shows zero diff for a workspace with commerce off. OMNIZONE-893 · P29.1 | Happy path | Automated |
| AC-893-02 | catalogue | P29.1 Commerce mode per workspace: Turning commerce on for spacecraft shows the commerce tabs; turning off hides them with…Steps
Expected Turning commerce on for spacecraft shows the commerce tabs; turning off hides them with data intact. OMNIZONE-893 · P29.1 | Happy path | Automated |
| AC-893-03 | catalogue | P29.1 Commerce mode per workspace: Role matrix + plan gate tests (403 plan_required when the plan lacks the group).Steps
Expected Role matrix + plan gate tests (403 plan_required when the plan lacks the group). OMNIZONE-893 · P29.1 | Negative | Automated |
| AC-893-04 | catalogue | P29.1 Commerce mode per workspace: Side table org_commerce_settings (org_settings is at the 100-column cap): enabled, enabl…Steps
Expected Side table org_commerce_settings (org_settings is at the 100-column cap): enabled, enabled_at, default_store_channel_id. Off for every existing workspace (backfill explicit rows with enabled=0). OMNIZONE-893 · P29.1 | Edge case | Automated |
| AC-893-05 | catalogue | P29.1 Commerce mode per workspace: New permission group commerce in shared/permissions.ts (pages: store, promotions, shippi…Steps
Expected New permission group commerce in shared/permissions.ts (pages: store, promotions, shipping, payments-online, online orders views) and plan entitlement in billing_plans.module_group_ids_json + BILLING_… OMNIZONE-893 · P29.1 | Happy path | Automated |
| AC-893-06 | catalogue | P29.1 Commerce mode per workspace: Settings → Modules: 'Online store (e-commerce)' toggle, gated by plan; turning it off hi…Steps
Expected Settings → Modules: 'Online store (e-commerce)' toggle, gated by plan; turning it off hides commerce UI but never deletes data. OMNIZONE-893 · P29.1 | Negative | Automated |
| AC-893-07 | catalogue | P29.1 Commerce mode per workspace: Items form/detail: when commerce is off, keep today's simple item screens exactly (no ne…Steps
Expected Items form/detail: when commerce is off, keep today's simple item screens exactly (no new tabs/fields shown). When on, show the commerce tabs from #704/#744 (SEO, categories, attributes, media, channe… OMNIZONE-893 · P29.1 | Happy path | Automated |
| AC-893-08 | catalogue | P29.1 Commerce mode per workspace: Expose commerceEnabled in bootstrap; one helper isCommerceEnabled(org) server + client.Steps
Expected Expose commerceEnabled in bootstrap; one helper isCommerceEnabled(org) server + client. OMNIZONE-893 · P29.1 | Happy path | Automated |
| AC-894-01 | accounts | P30.1 Client address book: Existing invoices/PDFs unchanged (safety net); a client with 3 addresses can pick any on…Steps
Expected Existing invoices/PDFs unchanged (safety net); a client with 3 addresses can pick any on a sales order. OMNIZONE-894 · P30.1 | Happy path | Automated |
| AC-894-02 | accounts | P30.1 Client address book: Table client_addresses: label, kind (billing/shipping/both), contact_name, company, phon…Steps
Expected Table client_addresses: label, kind (billing/shipping/both), contact_name, company, phone, email, line1, line2, city, region, postal_code, country_code, lat/lng, is_default_billing, is_default_shippin… OMNIZONE-894 · P30.1 | Happy path | Automated |
| AC-894-03 | accounts | P30.1 Client address book: Backfill: each client's existing address text becomes one default billing+shipping addre…Steps
Expected Backfill: each client's existing address text becomes one default billing+shipping address (parsed best-effort, raw kept in line1) — clients.address column kept and mirrored from the default billing a… OMNIZONE-894 · P30.1 | Edge case | Automated |
| AC-894-04 | accounts | P30.1 Client address book: Client detail → Addresses tab; client picker in documents can choose bill-to / ship-to a…Steps
Expected Client detail → Addresses tab; client picker in documents can choose bill-to / ship-to address; public API /v1/clients includes addresses (additive). OMNIZONE-894 · P30.1 | Happy path | Automated |
| AC-894-05 | accounts | P30.1 Client address book: Country list and address format per country come from jurisdiction data, not code.Steps
Expected Country list and address format per country come from jurisdiction data, not code. OMNIZONE-894 · P30.1 | Happy path | Automated |
| AC-895-01 | channels | P29.2 Online store = a sales channel: A store channel appears in Channels with kind own_store; listing/publish/margin reports…Steps
Expected A store channel appears in Channels with kind own_store; listing/publish/margin reports work unchanged for it. OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-02 | channels | P29.2 Online store = a sales channel: No new orders/listings tables were created — reuse sales_channels, channel_listings, cha…Steps
Expected No new orders/listings tables were created — reuse sales_channels, channel_listings, channel_orders. OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-03 | channels | P29.2 Online store = a sales channel: Adapter contract tests (#707) pass for the omnizone adapter.Steps
Expected Adapter contract tests (#707) pass for the omnizone adapter. OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-04 | channels | P29.2 Online store = a sales channel: Add platform omnizone to the channel adapter registry (functions/_lib/channels) as a loc…Steps
Expected Add platform omnizone to the channel adapter registry (functions/_lib/channels) as a local adapter: publish = mark channel_listings published; pull/import = no-op; orders arrive from checkout (P32.3) OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-05 | channels | P29.2 Online store = a sales channel: Side table store_settings (1:1 with sales_channels where platform='omnizone'): store nam…Steps
Expected Side table store_settings (1:1 with sales_channels where platform='omnizone'): store name, default language, enabled languages, default + enabled currencies, prices include tax flag, stock location(s) OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-06 | channels | P29.2 Online store = a sales channel: Channels page: 'Create online store' (only when commerce mode is on); a workspace may ha…Steps
Expected Channels page: 'Create online store' (only when commerce mode is on); a workspace may have more than one store (e.g. brands or countries). Store settings screen reuses settings form patterns. OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-895-07 | channels | P29.2 Online store = a sales channel: Seeder: new workspaces get no store; spacecraft seed gets one in P37.5.Steps
Expected Seeder: new workspaces get no store; spacecraft seed gets one in P37.5. OMNIZONE-895 · P29.2 | Happy path | Automated |
| AC-896-01 | storefront | P29.3 Category tree management: Tree of 3+ levels manageable; moving a parent moves its subtree; deleting a category wit…Steps
Expected Tree of 3+ levels manageable; moving a parent moves its subtree; deleting a category with items asks to reassign. OMNIZONE-896 · P29.3 | Happy path | Manual |
| AC-896-02 | storefront | P29.3 Category tree management: Export/import of categories round-trips (used by P36.8).Steps
Expected Export/import of categories round-trips (used by P36.8). OMNIZONE-896 · P29.3 | Happy path | Manual |
| AC-896-03 | storefront | P29.3 Category tree management: Extend existing item_categories (0328): description_html, image_file_id, banner_file_id,…Steps
Expected Extend existing item_categories (0328): description_html, image_file_id, banner_file_id, meta_title, meta_description, is_featured, show_in_menu, name_i18n/description_i18n per P27.5 convention. No se… OMNIZONE-896 · P29.3 | Happy path | Manual |
| AC-896-04 | storefront | P29.3 Category tree management: Items → Categories page: tree with drag reorder/re-parent, create/edit drawer, active to…Steps
Expected Items → Categories page: tree with drag reorder/re-parent, create/edit drawer, active toggle, item counts; CRUD API /api/item-categories with keyset listing. OMNIZONE-896 · P29.3 | Happy path | Manual |
| AC-896-05 | storefront | P29.3 Category tree management: Item form: multi-select categories with primary flag (item_category_links); Items listin…Steps
Expected Item form: multi-select categories with primary flag (item_category_links); Items listing filter by category (incl. descendants); bulk assign/remove categories from bulk actions. OMNIZONE-896 · P29.3 | Happy path | Manual |
| AC-896-06 | storefront | P29.3 Category tree management: Channel imports (#708, #709) map platform categories into this tree (no duplicates by sl…Steps
Expected Channel imports (#708, #709) map platform categories into this tree (no duplicates by slug/path). OMNIZONE-896 · P29.3 | Edge case | Manual |
| AC-897-01 | catalogue | P29.4 Brands and tags as managed lookups (no free text): Existing items show the same brand/tag text as before (parity check); filters by brand/t…Steps
Expected Existing items show the same brand/tag text as before (parity check); filters by brand/tag work in Items listing. OMNIZONE-897 · P29.4 | Happy path | Manual |
| AC-897-02 | catalogue | P29.4 Brands and tags as managed lookups (no free text): Table brands (name, slug, logo_file_id, description_html, website, meta fields, name_i18…Steps
Expected Table brands (name, slug, logo_file_id, description_html, website, meta fields, name_i18n, active); items.brand_id; backfill: create one brand per distinct existing items.brand text per workspace and… OMNIZONE-897 · P29.4 | Edge case | Manual |
| AC-897-03 | catalogue | P29.4 Brands and tags as managed lookups (no free text): Tags lookup item_tags + links, backfilled from items.tags_json.Steps
Expected Tags lookup item_tags + links, backfilled from items.tags_json. OMNIZONE-897 · P29.4 | Happy path | Manual |
| AC-897-04 | catalogue | P29.4 Brands and tags as managed lookups (no free text): Settings → Catalogs gets Brands and Tags kinds (reuse catalogs/[kind] pattern); item for…Steps
Expected Settings → Catalogs gets Brands and Tags kinds (reuse catalogs/[kind] pattern); item form uses pickers with inline create. OMNIZONE-897 · P29.4 | Happy path | Manual |
| AC-898-01 | catalogue | P29.5 Variant matrix: Creating 3×4 colour/size matrix produces 12 items with correct attributes, unique SKUs,…Steps
Expected Creating 3×4 colour/size matrix produces 12 items with correct attributes, unique SKUs, and no stock or posting change on the parent. OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-898-02 | catalogue | P29.5 Variant matrix: Woo/Shopify variation import (#708/#746) lands in the same structure.Steps
Expected Woo/Shopify variation import (#708/#746) lands in the same structure. OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-898-03 | catalogue | P29.5 Variant matrix: Build on the #641 model (variant = real item with parent_item_id + variant_label). No se…Steps
Expected Build on the #641 model (variant = real item with parent_item_id + variant_label). No second variant system. OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-898-04 | catalogue | P29.5 Variant matrix: On a parent item: pick variant-axis attributes (item_attributes.is_variant_axis) and val…Steps
Expected On a parent item: pick variant-axis attributes (item_attributes.is_variant_axis) and values → preview the cartesian matrix → create missing variants with generated SKU pattern (setting), inherit field… OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-898-05 | catalogue | P29.5 Variant matrix: Variants grid: inline edit SKU, barcode, price/compare-at, cost, weight, stock (via exis…Steps
Expected Variants grid: inline edit SKU, barcode, price/compare-at, cost, weight, stock (via existing adjustment engine), active, image; disable combinations; add a value later creates only the new combination… OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-898-06 | catalogue | P29.5 Variant matrix: variant_label derived from attribute values and kept in sync; POS variant picker (#641)…Steps
Expected variant_label derived from attribute values and kept in sync; POS variant picker (#641) and channel imports keep working. OMNIZONE-898 · P29.5 | Happy path | Automated |
| AC-899-01 | catalogue | P29.7 Rich product content: XSS payloads in descriptions are stripped (tests); imported Woo/Shopify HTML renders saf…Steps
Expected XSS payloads in descriptions are stripped (tests); imported Woo/Shopify HTML renders safely. OMNIZONE-899 · P29.7 | Happy path | Automated |
| AC-899-02 | catalogue | P29.7 Rich product content: Rich-text editor for long_description (headings, lists, tables, links, images from item…Steps
Expected Rich-text editor for long_description (headings, lists, tables, links, images from item media, embeds allow-list) stored as sanitized HTML; one shared sanitizer (server is authoritative; same allow-li… OMNIZONE-899 · P29.7 | Happy path | Automated |
| AC-899-03 | catalogue | P29.7 Rich product content: Specifications block generated from attribute values (grouped, with units) plus free row…Steps
Expected Specifications block generated from attribute values (grouped, with units) plus free rows; used by storefront and PDFs. OMNIZONE-899 · P29.7 | Happy path | Automated |
| AC-899-04 | catalogue | P29.7 Rich product content: Short description stays plain text with length guidance; both translatable (P29.9).Steps
Expected Short description stays plain text with length guidance; both translatable (P29.9). OMNIZONE-899 · P29.7 | Happy path | Automated |
| AC-900-01 | shipping | P30.2 Ship-to on sales documents: Converting quote→SO→invoice keeps the same ship-to; English PDF baselines unchanged for…Steps
Expected Converting quote→SO→invoice keeps the same ship-to; English PDF baselines unchanged for documents without ship-to. OMNIZONE-900 · P30.2 | Happy path | Automated |
| AC-900-02 | shipping | P30.2 Ship-to on sales documents: Add bill_to_address_json and ship_to_address_json snapshots (plus ship_to_address_id) to…Steps
Expected Add bill_to_address_json and ship_to_address_json snapshots (plus ship_to_address_id) to sales_quotes, sales_orders, invoices; carried through quote→order→invoice conversion and channel order import. OMNIZONE-900 · P30.2 | Happy path | Automated |
| AC-900-03 | shipping | P30.2 Ship-to on sales documents: Pick lists / packing slips / delivery documents print ship-to; delivery trips (field ops…Steps
Expected Pick lists / packing slips / delivery documents print ship-to; delivery trips (field ops) use ship-to as the stop address. OMNIZONE-900 · P30.2 | Happy path | Automated |
| AC-900-04 | shipping | P30.2 Ship-to on sales documents: PDF templates show ship-to only when it differs from bill-to (no change for existing doc…Steps
Expected PDF templates show ship-to only when it differs from bill-to (no change for existing documents). OMNIZONE-900 · P30.2 | Happy path | Automated |
| AC-901-01 | promotions | P31.2 Promotions and coupons: Migration additive/idempotent; schema validation rejects impossible conditions.Steps
Expected Migration additive/idempotent; schema validation rejects impossible conditions. OMNIZONE-901 · P31.2 | Negative | Automated |
| AC-901-02 | promotions | P31.2 Promotions and coupons: Tables promotions (name, kind automatic/code, reward: percent, fixed amount, fixed price…Steps
Expected Tables promotions (name, kind automatic/code, reward: percent, fixed amount, fixed price, free shipping, buy X get Y, tiered spend; conditions JSON validated by a shared schema: min subtotal/qty, item… OMNIZONE-901 · P31.2 | Happy path | Automated |
| AC-901-03 | promotions | P31.2 Promotions and coupons: Names avoid collision with billing_coupons (platform SaaS) — document the difference in…Steps
Expected Names avoid collision with billing_coupons (platform SaaS) — document the difference in docs/COUPONS.md. OMNIZONE-901 · P31.2 | Happy path | Automated |
| AC-901-04 | promotions | P31.2 Promotions and coupons: Backup schema + promote updated.Steps
Expected Backup schema + promote updated. OMNIZONE-901 · P31.2 | Happy path | Automated |
| AC-902-01 | pricing | P31.8 Cross-sell, up-sell, related and frequently-bought-together: Manual links override automatic; FBT job runs within D1 limits on a 100k-line dataset.Steps
Expected Manual links override automatic; FBT job runs within D1 limits on a 100k-line dataset. OMNIZONE-902 · P31.8 | Edge case | Automated |
| AC-902-02 | pricing | P31.8 Cross-sell, up-sell, related and frequently-bought-together: Item detail → Linked products: manage item_links kinds related, upsell, cross_sell, acce…Steps
Expected Item detail → Linked products: manage item_links kinds related, upsell, cross_sell, accessory (table exists from #745) with ordering. OMNIZONE-902 · P31.8 | Happy path | Automated |
| AC-902-03 | pricing | P31.8 Cross-sell, up-sell, related and frequently-bought-together: Automatic fill rules per store (same category, same brand) when no manual links.Steps
Expected Automatic fill rules per store (same category, same brand) when no manual links. OMNIZONE-902 · P31.8 | Happy path | Automated |
| AC-902-04 | pricing | P31.8 Cross-sell, up-sell, related and frequently-bought-together: Nightly job computes frequently-bought-together from invoiced sales lines (set-based, bo…Steps
Expected Nightly job computes frequently-bought-together from invoiced sales lines (set-based, bounded), stored as kind fbt with score. OMNIZONE-902 · P31.8 | Happy path | Automated |
| AC-902-05 | pricing | P31.8 Cross-sell, up-sell, related and frequently-bought-together: Storefront API returns them per context (product page, cart).Steps
Expected Storefront API returns them per context (product page, cart). OMNIZONE-902 · P31.8 | Happy path | Automated |
| AC-903-01 | catalogue | P29.6 Product media: Product with 6 images + 1 uploaded video + 1 YouTube link renders in item detail; varian…Steps
Expected Product with 6 images + 1 uploaded video + 1 YouTube link renders in item detail; variant switch shows its images. OMNIZONE-903 · P29.6 | Happy path | Automated |
| AC-903-02 | catalogue | P29.6 Product media: Channel image import (import-channel-images.ts) still works.Steps
Expected Channel image import (import-channel-images.ts) still works. OMNIZONE-903 · P29.6 | Happy path | Automated |
| AC-903-03 | catalogue | P29.6 Product media: Extend item_images (0310) rather than a new table: media_kind (image / video / external_…Steps
Expected Extend item_images (0310) rather than a new table: media_kind (image / video / external_video), external_url (YouTube/Vimeo), poster_file_id, duration_s, variant_item_id (assign image to variant), alt… OMNIZONE-903 · P29.6 | Happy path | Automated |
| AC-903-04 | catalogue | P29.6 Product media: Upload limits and accepted types are settings; storage counts against plan storage (bill…Steps
Expected Upload limits and accepted types are settings; storage counts against plan storage (billing-plan-limits). OMNIZONE-903 · P29.6 | Edge case | Automated |
| AC-903-05 | catalogue | P29.6 Product media: Image derivatives via Cloudflare Image Resizing URLs (width set from a settings list, We…Steps
Expected Image derivatives via Cloudflare Image Resizing URLs (width set from a settings list, WebP/AVIF), used by back office thumbnails, POS tiles (#710) and the storefront. OMNIZONE-903 · P29.6 | Happy path | Automated |
| AC-903-06 | catalogue | P29.6 Product media: Item media panel: drag reorder, set primary, assign to variants, add video by upload or…Steps
Expected Item media panel: drag reorder, set primary, assign to variants, add video by upload or URL with preview. OMNIZONE-903 · P29.6 | Happy path | Automated |
| AC-904-01 | catalogue | P29.8 Slugs and redirects: Renaming a product keeps the old URL working via 301; duplicate slugs are rejected with…Steps
Expected Renaming a product keeps the old URL working via 301; duplicate slugs are rejected with a clear error. OMNIZONE-904 · P29.8 | Negative | Automated |
| AC-904-02 | catalogue | P29.8 Slugs and redirects: One slug service for items, categories, brands and CMS pages (P35.4): unique per (org, s…Steps
Expected One slug service for items, categories, brands and CMS pages (P35.4): unique per (org, store, entity kind, language); auto-generate from name (Unicode-safe, Arabic kept or transliterated per store set… OMNIZONE-904 · P29.8 | Edge case | Automated |
| AC-904-03 | catalogue | P29.8 Slugs and redirects: Table commerce_redirects (from_path, to_path, status 301/302, hits); changing a slug wri…Steps
Expected Table commerce_redirects (from_path, to_path, status 301/302, hits); changing a slug writes a redirect automatically; manual redirects UI under store settings. OMNIZONE-904 · P29.8 | Happy path | Automated |
| AC-904-04 | catalogue | P29.8 Slugs and redirects: Backfill slugs for existing items/categories (items.slug from #745 is reused, not replac…Steps
Expected Backfill slugs for existing items/categories (items.slug from #745 is reused, not replaced). OMNIZONE-904 · P29.8 | Edge case | Automated |
| AC-905-01 | language | P29.9 Translations for catalogue content: An item with EN/FR/AR content shows the right language in item detail, export and API; n…Steps
Expected An item with EN/FR/AR content shows the right language in item detail, export and API; no data lost from translations_json (migration test). OMNIZONE-905 · P29.9 | Edge case | Automated |
| AC-905-02 | language | P29.9 Translations for catalogue content: Move what #745 stored in items.translations_json into the P27.5 columns (name_i18n, shor…Steps
Expected Move what #745 stored in items.translations_json into the P27.5 columns (name_i18n, short/long description_i18n, meta_title_i18n, meta_description_i18n, slug per language via P29.8); keep translations… OMNIZONE-905 · P29.9 | Happy path | Automated |
| AC-905-03 | language | P29.9 Translations for catalogue content: Language tabs on item, category and brand forms (enabled store languages only); 'Transla…Steps
Expected Language tabs on item, category and brand forms (enabled store languages only); 'Translate with AI' uses the P23.13 translation function when available. OMNIZONE-905 · P29.9 | Happy path | Automated |
| AC-905-04 | language | P29.9 Translations for catalogue content: Channel imports fill translations (#830 contract).Steps
Expected Channel imports fill translations (#830 contract). OMNIZONE-905 · P29.9 | Happy path | Automated |
| AC-906-01 | accounts | P30.3 Shop customer accounts: Brute-force and enumeration protections tested; an account cannot read another account's…Steps
Expected Brute-force and enumeration protections tested; an account cannot read another account's orders (tests). OMNIZONE-906 · P30.3 | Negative | Automated |
| AC-906-02 | accounts | P30.3 Shop customer accounts: Table shop_accounts (store channel, email, password_hash via existing auth helpers, emai…Steps
Expected Table shop_accounts (store channel, email, password_hash via existing auth helpers, email_verified_at, client_id, locale, marketing_consent + timestamp, status) and shop_sessions; never mixed with sta… OMNIZONE-906 · P30.3 | Negative | Automated |
| AC-906-03 | accounts | P30.3 Shop customer accounts: Login by password or email one-time code (reuse loyalty-portal OTP/token code paths and…Steps
Expected Login by password or email one-time code (reuse loyalty-portal OTP/token code paths and rate limits, Turnstile on sign-up); password reset; email verification; lockout. OMNIZONE-906 · P30.3 | Edge case | Automated |
| AC-906-04 | accounts | P30.3 Shop customer accounts: Account ↔ client link: one client per account (created on first order or sign-up per sto…Steps
Expected Account ↔ client link: one client per account (created on first order or sign-up per store setting). OMNIZONE-906 · P30.3 | Happy path | Automated |
| AC-906-05 | accounts | P30.3 Shop customer accounts: Storefront API endpoints for account (used by P35.9).Steps
Expected Storefront API endpoints for account (used by P35.9). OMNIZONE-906 · P30.3 | Happy path | Automated |
| AC-907-01 | pricing | P31.1 Store prices: Golden tests in cents for each precedence step, VAT-inclusive lists not taxed twice (reg…Steps
Expected Golden tests in cents for each precedence step, VAT-inclusive lists not taxed twice (regression of #343). OMNIZONE-907 · P31.1 | Edge case | Automated |
| AC-907-02 | pricing | P31.1 Store prices: One function resolveStorePrices(store, customer, items) on top of existing resolvePrices…Steps
Expected One function resolveStorePrices(store, customer, items) on top of existing resolvePrices: store channel price list → customer group price list → per-listing override → sale_price window → compare_at;… OMNIZONE-907 · P31.1 | Happy path | Automated |
| AC-907-03 | pricing | P31.1 Store prices: Tax-inclusive/exclusive display per store using the existing VAT resolver; rounding rule…Steps
Expected Tax-inclusive/exclusive display per store using the existing VAT resolver; rounding rules per currency. OMNIZONE-907 · P31.1 | Edge case | Automated |
| AC-907-04 | pricing | P31.1 Store prices: Presentment currency: convert with exchange_rates for display; orders are charged in the…Steps
Expected Presentment currency: convert with exchange_rates for display; orders are charged in the store's currency(ies) configured in store settings. OMNIZONE-907 · P31.1 | Happy path | Automated |
| AC-908-01 | catalogue | P31.9 Bundles and kits: Selling 2 bundles of (1×A + 2×B) moves 2×A and 4×B; COGS correct; inventory↔G/L variance…Steps
Expected Selling 2 bundles of (1×A + 2×B) moves 2×A and 4×B; COGS correct; inventory↔G/L variance zero. OMNIZONE-908 · P31.9 | Happy path | Automated |
| AC-908-02 | catalogue | P31.9 Bundles and kits: catalog_product_type bundle/grouped (exists): components stored as item_links kind bundl…Steps
Expected catalog_product_type bundle/grouped (exists): components stored as item_links kind bundle_component with qty_milli; price fixed or sum-of-components minus %, set on the bundle. OMNIZONE-908 · P31.9 | Happy path | Automated |
| AC-908-03 | catalogue | P31.9 Bundles and kits: Availability = min over components; on delivery/POS sale, stock moves are posted for com…Steps
Expected Availability = min over components; on delivery/POS sale, stock moves are posted for components through the existing stock engine (bundle holds no stock); revenue allocation across components configur… OMNIZONE-908 · P31.9 | Happy path | Automated |
| AC-908-04 | catalogue | P31.9 Bundles and kits: Grouped products = a parent page listing child items each added separately.Steps
Expected Grouped products = a parent page listing child items each added separately. OMNIZONE-908 · P31.9 | Happy path | Automated |
| AC-909-01 | payments | P33.1 Payment provider framework: Mock provider passes contract tests incl. duplicate and out-of-order webhooks.Steps
Expected Mock provider passes contract tests incl. duplicate and out-of-order webhooks. OMNIZONE-909 · P33.1 | Edge case | Automated |
| AC-909-02 | payments | P33.1 Payment provider framework: Tables store_payment_methods (store, provider, display name/i18n, credentials_ref via cr…Steps
Expected Tables store_payment_methods (store, provider, display name/i18n, credentials_ref via credential-crypto, mode test/live, countries, currencies, min/max amount, fee rules, sort, active) and payment_tra… OMNIZONE-909 · P33.1 | Happy path | Automated |
| AC-909-03 | payments | P33.1 Payment provider framework: Adapter contract (createPayment → redirect/embedded, handleReturn, handleWebhook with si…Steps
Expected Adapter contract (createPayment → redirect/embedded, handleReturn, handleWebhook with signature verification, capture, refund, void) + mock provider + contract tests, mirroring the channel adapter pat… OMNIZONE-909 · P33.1 | Happy path | Automated |
| AC-909-04 | payments | P33.1 Payment provider framework: Webhook endpoint per provider, idempotent by provider event id.Steps
Expected Webhook endpoint per provider, idempotent by provider event id. OMNIZONE-909 · P33.1 | Edge case | Automated |
| AC-910-01 | shipping | P34.1 Shipping zones, methods and rates: Lebanon (by city), GCC and rest-of-world example zones configurable without code.Steps
Expected Lebanon (by city), GCC and rest-of-world example zones configurable without code. OMNIZONE-910 · P34.1 | Happy path | Automated |
| AC-910-02 | shipping | P34.1 Shipping zones, methods and rates: Tables shipping_zones (countries, regions, cities, postal patterns), shipping_methods (s…Steps
Expected Tables shipping_zones (countries, regions, cities, postal patterns), shipping_methods (store, zone, kind: flat / weight table / subtotal table / free over threshold / local pickup / own fleet / carrie… OMNIZONE-910 · P34.1 | Happy path | Automated |
| AC-910-03 | shipping | P34.1 Shipping zones, methods and rates: Shipping classes become a lookup (items.shipping_class backfilled) with per-class surcha…Steps
Expected Shipping classes become a lookup (items.shipping_class backfilled) with per-class surcharges. OMNIZONE-910 · P34.1 | Happy path | Automated |
| AC-910-04 | shipping | P34.1 Shipping zones, methods and rates: Settings → Store → Shipping screen.Steps
Expected Settings → Store → Shipping screen. OMNIZONE-910 · P34.1 | Happy path | Automated |
| AC-911-01 | shipping | P34.3 Shipments: Partial shipment of 2 of 3 lines leaves the order partially delivered; stock moves only…Steps
Expected Partial shipment of 2 of 3 lines leaves the order partially delivered; stock moves only once. OMNIZONE-911 · P34.3 | Edge case | Automated |
| AC-911-02 | shipping | P34.3 Shipments: Table shipments (sales order, carrier, service, tracking_no, label_file_id, status, cost…Steps
Expected Table shipments (sales order, carrier, service, tracking_no, label_file_id, status, cost_cents, shipped_at, delivered_at) linked to WMS pick_packages when WMS is used, or created by quick-ship for wor… OMNIZONE-911 · P34.3 | Happy path | Automated |
| AC-911-03 | shipping | P34.3 Shipments: Dispatching a pick list (dispatchPickList) creates/updates shipments; delivery posts via…Steps
Expected Dispatching a pick list (dispatchPickList) creates/updates shipments; delivery posts via the existing delivery flow and applySalesOrderDeliveryRollup — no second stock path. OMNIZONE-911 · P34.3 | Happy path | Automated |
| AC-911-04 | shipping | P34.3 Shipments: Shipments panel on sales order detail; shipments listing.Steps
Expected Shipments panel on sales order detail; shipments listing. OMNIZONE-911 · P34.3 | Happy path | Automated |
| AC-912-01 | domains | P35.1 Store hosting and domains: A store is reachable on its free domain and on a custom domain with valid SSL; the works…Steps
Expected A store is reachable on its free domain and on a custom domain with valid SSL; the workspace app host is unaffected. OMNIZONE-912 · P35.1 | Happy path | Automated |
| AC-912-02 | domains | P35.1 Store hosting and domains: Store host resolution in the Worker: platform setting for the store apex (not code) give…Steps
Expected Store host resolution in the Worker: platform setting for the store apex (not code) gives each store a free {store-slug}.{store-apex}; custom domains via Cloudflare for SaaS custom hostnames (DNS veri… OMNIZONE-912 · P35.1 | Happy path | Automated |
| AC-912-03 | domains | P35.1 Store hosting and domains: Never collides with workspace hosts ({slug}.omnizone.app) or admin; follow omnizone-work…Steps
Expected Never collides with workspace hosts ({slug}.omnizone.app) or admin; follow omnizone-workspace-domains.mdc (wildcard, no per-slug mass attach). OMNIZONE-912 · P35.1 | Negative | Automated |
| AC-912-04 | domains | P35.1 Store hosting and domains: Store status: draft (password page), live, maintenance.Steps
Expected Store status: draft (password page), live, maintenance. OMNIZONE-912 · P35.1 | Happy path | Automated |
| AC-913-01 | catalogue | P29.10 Catalogue readiness: Publishing 500 items in bulk is set-based (no N+1); unpublished items never appear in th…Steps
Expected Publishing 500 items in bulk is set-based (no N+1); unpublished items never appear in the Storefront API. OMNIZONE-913 · P29.10 | Negative | Automated |
| AC-913-02 | catalogue | P29.10 Catalogue readiness: Readiness checks per item per store (configurable list): price > 0, primary image, categ…Steps
Expected Readiness checks per item per store (configurable list): price > 0, primary image, category, short description, weight when requires_shipping, slug, stock or backorders, translations for store languag… OMNIZONE-913 · P29.10 | Happy path | Automated |
| AC-913-03 | catalogue | P29.10 Catalogue readiness: Items listing: readiness column/filter for a selected store; bulk publish/unpublish → ch…Steps
Expected Items listing: readiness column/filter for a selected store; bulk publish/unpublish → channel_listings (published/draft) via the existing publish engine. OMNIZONE-913 · P29.10 | Happy path | Automated |
| AC-913-04 | catalogue | P29.10 Catalogue readiness: Per-store overrides already in channel_listings (price_override_cents, stock_buffer_mill…Steps
Expected Per-store overrides already in channel_listings (price_override_cents, stock_buffer_milli) editable here. OMNIZONE-913 · P29.10 | Happy path | Automated |