Skip to main content

oro-behat-testing

Use when writing, configuring or running Behat integration tests for Oro Commerce 6.1 bundles against a LOCAL app — suites, contexts, elements, page objects, Alice fixtures, `bin/behat`. Covers auto-discovery vs `symfony_bundle` registration, `shared_contexts`, `behat.yml.dist` vs `behat.yml`, `--strict`/`--consumers`/`-s`, `@fixture-Bundle:file.yml`, `oro_behat_extension`, `OroMainContext`, feature-tag mocking, `config_behat_test.yml`, Mink, ChromeDriver, isolators. Triggers on "suite shows 0 features", "element not found", "step undefined", "fixture not loading".

Quellinformationen

Repository
netresearch/orocommerce-skill
Letzte Quellaktivität
29. September 2026 um 22:21
Erkannte Sprache von SKILL.md
Englisch
Sterne
3
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
7 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
oro-behat-testing
description
Use when writing, configuring or running Behat integration tests for Oro Commerce 6.1 bundles against a LOCAL app — suites, contexts, elements, page objects, Alice fixtures, `bin/behat`. Covers auto-discovery vs `symfony_bundle` registration, `shared_contexts`, `behat.yml.dist` vs `behat.yml`, `--strict`/`--consumers`/`-s`, `@fixture-Bundle:file.yml`, `oro_behat_extension`, `OroMainContext`, feature-tag mocking, `config_behat_test.yml`, Mink, ChromeDriver, isolators. Triggers on "suite shows 0 features", "element not found", "step undefined", "fixture not loading".
# OroCommerce v6.1 Behat Integration Testing Oro adds auto-discovered suites, elements over Mink, Alice fixtures, tag-driven mocking and per-scenario DB isolation. A bundle's assets live under `Tests/Behat/`. ## Canonical suite config — `Tests/Behat/behat.yml` ```yaml oro_behat_extension: shared_contexts: [ ...\Context\OroMainContext ] suites: AcmeDemoBundle: # key = bundle name -> auto-discovered contexts: [ ... ] paths: [ '@AcmeDemoBundle/Tests/Behat/Features' ] elements: Demo Login Form: { selector: '#login-form', class: ...\Element\Form } pages: Demo Dashboard: { class: ...\Page\DemoDashboard, route: acme_demo_dashboard } ``` Element `mapping`, nested xpath and delegation: `references/suite-config.md`. ## Two Suite Registration Forms Auto-discovery applies when the suite key matches a registered bundle and `paths` points at `@BundleName/…` inside it. Otherwise — different name, several suites per bundle, odd paths — register manually with `type: symfony_bundle` plus `bundle:` (`references/suite-config.md`). ## behat.yml.dist vs behat.yml `bin/behat` prefers a gitignored local `behat.yml` over the committed `.dist`; never commit the local one. `config/config_behat_test.yml` is **application** config, active only with the `@behat-test-env` tag and `--behat-test-env`. ## Fixtures and References Alice fixtures sit in `Tests/Behat/Features/Fixtures/`, loaded by a feature tag: `@fixture-OroUserBundle:user.yml`. **The colon is mandatory** — without it nothing loads, silently. `?user=admin` applies it under a security context. Four references need no fixture: `@admin`, `@adminRole`, `@organization`, `@business_unit`; custom ones via `oro_behat.reference_repository_initializer` (`references/fixtures.md`). ## Running Tests Oro's Jenkins pipeline runs: ```bash bin/behat -vv -f pretty -o std -f junit -o var/logs/behat --strict \ --consumers=2 -s AcmeDemoBundle ``` The dual formatter is standard — `pretty` for humans, `junit` for CI; without it CI collects no results. `--strict` fails on undefined or pending steps; `--consumers=2` runs the MQ consumer inside the Behat process, alongside any `consumer` container. Step discovery: `-di` with examples, `-dl` names only. Chrome flags and the test-DB `oro:install`: `references/chrome-setup.md`, `references/v6.1.md`. Mocking an external API: declare candidates in `Tests/Behat/parameters.yml`, and `oro_test.behat.feature_tag_aware_factory` picks by tag — `@use-paypal-mock` gets the stub. Never hand-roll interception (`references/feature-tag-mocking.md`). ## Key Pitfalls 1. **`@fixture-file.yml` without the bundle prefix** — Alice loads nothing, silently; the scenario runs against an empty database and you chase missing-entity errors. 2. **Skipping `shared_contexts` on a new suite** — without it the suite lacks `OroMainContext`, so "I login as admin" throws UndefinedStep at run time, not config time. 3. **No Elasticsearch or MessageQueue isolator, by design** — the database is reset between scenarios, the search index and MQ state are not, so those features leak into the next scenario. 4. **Raw CSS selectors inside step definitions** — name an Element instead, so a template change breaks one place loudly (`references/suite-config.md`). 5. **`--skip-isolators-tag` does not exist in 6.1** — the CLI rejects it (`references/v6.1.md`). ## See Also `references/`: `suite-config.md` · `fixtures.md` · `feature-tag-mocking.md` · `chrome-setup.md` · `v6.1.md` · `v7.0.md`
Auf GitHub ansehen