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:
- Phase —
init(runs before smoke test) orpost(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
| Field | Value |
|---|---|
| Phase | init |
| Requires | Panda installed |
| Tables touched | ps_category, ps_category_lang, ps_product, ps_product_lang, ps_image, ps_image_lang, ps_stock_available |
| Idempotency | No — 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
| Field | Value |
|---|---|
| Phase | init |
| Requires | — |
| Tables touched | ps_customer, ps_address, ps_orders, ps_order_detail, ps_order_history, ps_cart, ps_cart_product |
| Idempotency | No — 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
| Field | Value |
|---|---|
| Phase | init |
| Requires | — |
| Tables touched | ps_cms, ps_cms_lang, ps_cms_shop, ps_cms_category |
| Idempotency | No — 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
| Field | Value |
|---|---|
| Phase | init |
| Requires | — |
| Tables touched | ps_tax, ps_tax_lang, ps_tax_rule, ps_tax_rules_group, ps_tax_rules_group_lang, ps_configuration |
| Idempotency | Partial — 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
| Field | Value |
|---|---|
| Phase | init |
| Requires | — |
| Tables touched | ps_product, ps_product_lang, ps_image, ps_image_lang, ps_stock_available, ps_customer, ps_orders (where applicable) |
| Idempotency | Yes — 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.comis 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
| Field | Value |
|---|---|
| Phase | post |
| Requires | — |
| Tables touched | None — read-only HTTP. |
| Idempotency | Yes — 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.
| Recipe | PS 8.2.x | PS 9.0.x | PS 9.1.x |
|---|---|---|---|
demo-catalog-10 | ✓ | expected OK | ✓ |
demo-customer-with-orders | ✓ | expected OK | ✓ |
demo-cms-pages | ✓ | expected OK | ✓ |
spain-taxes | ✓ | expected OK | ✓ |
clean-seed | ✓ | expected OK | ✓ |
cache-warmup | ✓ | expected 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-taxesSee 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.