$ ps-lando

Recipes catalog

Every bundled recipe in detail — what it does, what it touches, idempotency.

ps-lando ships 6 recipes out of the box. This page is the per-recipe deep dive — for the conceptual overview, see Hooks & recipes.

How to read this page

Each entry covers:

  • Phaseinit (runs before smoke test) or post (runs after).
  • Requires — prerequisites the recipe assumes (e.g. Panda must be installed).
  • What it does — high-level effect.
  • Tables touched — DB tables the recipe writes to.
  • Idempotency — safe to re-run? Y/N + caveat.

demo-catalog-10

FieldValue
Phaseinit
RequiresPanda installed
Tables touchedps_category, ps_category_lang, ps_product, ps_product_lang, ps_image, ps_image_lang, ps_stock_available
IdempotencyNo — re-running creates duplicates. Run clean-seed first if you need to reset.

Creates a "Demo" category with 10 demo products. Images are pulled from picsum.photos in grayscale, deterministic by seed (the same product always gets the same image). Useful for sandbox demos and screenshot tests where you don't want to commit real product images.

demo-customer-with-orders

FieldValue
Phaseinit
Requires
Tables touchedps_customer, ps_address, ps_orders, ps_order_detail, ps_order_history, ps_cart, ps_cart_product
IdempotencyNo — creates a fresh customer + 3 orders each run.

Seeds:

  • A demo customer (test email + password).
  • A Spain-format address attached to that customer.
  • 3 orders in different states (pending payment, processing, shipped) so you can test order-list filters and state transitions in the BO.

Compatible with clean-seed since 0.4.1 (which now uses an email allow-list rather than an id_customer range — see the changelog entry for context).

demo-cms-pages

FieldValue
Phaseinit
Requires
Tables touchedps_cms, ps_cms_lang, ps_cms_shop, ps_cms_category
IdempotencyNo — INSERTs without dedup.

Creates 3 standard CMS pages — About, Contact, Terms — in ES + EN. Useful for footer-link smoke tests and theme template development.

spain-taxes

FieldValue
Phaseinit
Requires
Tables touchedps_tax, ps_tax_lang, ps_tax_rule, ps_tax_rules_group, ps_tax_rules_group_lang, ps_configuration
IdempotencyPartial — uses INSERT IGNORE where it can. Re-running won't duplicate the tax groups but will refresh the configuration values.

Creates the 3 Spanish IVA tax-rule groups (21%, 10%, 4%) and sets:

  • Default country → ES.
  • Default currency → EUR.

Run this on any Spanish-market sandbox before importing real products.

clean-seed

FieldValue
Phaseinit
Requires
Tables touchedps_product, ps_product_lang, ps_image, ps_image_lang, ps_stock_available, ps_customer, ps_orders (where applicable)
IdempotencyYes — DELETE is idempotent. Safe to re-run.

Wipes PrestaShop's built-in demo data:

  • Products 1-9 (the default demo catalog shipped with PS).
  • Demo customers by email allow-list (currently pub@prestashop.com, PS 8.2.x-only). anonymous@psgdpr.com is intentionally preserved because the GDPR module requires it for anonymisation — it's not seed data.
  • Orphan images referenced by deleted products.

The email allow-list approach (since 0.4.1) replaced an earlier id_customer BETWEEN 2 AND 4 range delete. The range was destroying customers seeded by demo-customer-with-orders. Safe to chain with that recipe in either order now.

cache-warmup

FieldValue
Phasepost
Requires
Tables touchedNone — read-only HTTP.
IdempotencyYes — pure HTTP GET.

Hits a curated list of URLs with curl to prime Symfony's container cache:

  • Front-page (/)
  • Back-office (/<admin_dir>/)
  • A category page
  • The cart
  • The contact page

Reduces first-paint latency for whoever opens the BO right after create. Particularly noticeable on PS 9 with the larger admin container.

Compatibility matrix

Every bundled recipe is validated against PS 8.2.5 and PS 9.1.0 live sandboxes. PS 9.0.x is listed as "expected OK" — it shares the 9.x schema but hasn't been exercised in our smoke runs.

RecipePS 8.2.xPS 9.0.xPS 9.1.x
demo-catalog-10expected OK
demo-customer-with-ordersexpected OK
demo-cms-pagesexpected OK
spain-taxesexpected OK
clean-seedexpected OK
cache-warmupexpected OK

Running them

Three ways:

# At create time, interactive multiselect.
ps-lando create

# At create time, by name (non-interactive).
ps-lando create -y --recipes spain-taxes,demo-cms-pages

# On an existing sandbox.
ps-lando hooks run spain-taxes

See Hooks & recipes for the full operator-side overview, including hooks install <name> to copy a recipe into your project's init-scripts/ for repeatable runs.

Next steps

On this page