Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
netresearch avatar

Oro E2e Testing

  • 3 installs
  • 2 repo stars
  • Updated July 22, 2026
  • netresearch/orocommerce-skill

Runs OroCommerce 6.1 end-to-end Behat tests against a deployed app using isolator-skip flags, ChromeDriver plumbing, .behat-secrets.yml, and watch-mode healers.

About

Configures and runs Behat against deployed OroCommerce 6.1 instances (staging/QA/prod-clone) with --skip-isolators variants, remote-browser setup, secrets handling, and self-healing HealerInterface classes. A developer uses it for e2e Behat against a real deployment rather than a local or CI container stack.

  • --skip-isolators vs --skip-isolators-but-load-fixtures distinction
  • behat-secrets.yml authoring and Reload/OpenAI healer classes

Oro E2e Testing by the numbers

  • 3 all-time installs (skills.sh)
  • +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,649 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/netresearch/orocommerce-skill --skill oro-e2e-testing

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3
repo stars2
Last updatedJuly 22, 2026
Repositorynetresearch/orocommerce-skill

What it does

Runs OroCommerce 6.1 end-to-end Behat tests against a deployed app using isolator-skip flags, ChromeDriver plumbing, .behat-secrets.yml, and watch-mode healers.

Files

SKILL.mdMarkdownGitHub ↗

OroCommerce v6.1 End-to-End Behat Testing

Overview

E2e tests drive a real browser against a deployed Oro application. Unlike functional/integration Behat (local, service-isolated, DB rolled back per scenario), e2e tests disable all isolators and interact with the app exclusively through Mink + ChromeDriver. The target can be staging, a dedicated QA instance, or a throwaway production clone.

The load-bearing distinction is the isolation flag:

  • --skip-isolatorspure e2e. Disables DB, cache, and service-container isolation entirely. Tests only talk to the browser. No fixture loading. No direct service calls.
  • --skip-isolators-but-load-fixtureshybrid. Keeps the fixture-loader isolator active, disables everything else. Requires ORO_DB_DSN pointing at the remote DB and local source code whose migrations exactly match the deployed version. Mismatch produces silent garbage data.

If a step definition calls a service (not the browser), it will fail on a pure e2e run unless that service is reachable via env vars.

Hero behat.yml

imports:
  - ./behat.yml.dist

default: &default
  extensions: &default_extensions
    Behat\MinkExtension:
      base_url: "https://staging.example.com"
    Oro\Bundle\TestFrameworkBundle\Behat\ServiceContainer\OroTestFrameworkExtension:
      artifacts:
        handlers:
          local:
            directory: '%paths.base%/public/media/behat'
            base_url: ~
            auto_clear: false

Start ChromeDriver with Oro's expected endpoint (not selenium-standalone):

chromedriver --url-base=wd/hub --port=4444

Running Tests

# Pure e2e against the remote app
php bin/behat --skip-isolators -- path/to/feature.feature

# E2e that also loads Alice fixtures into the remote DB
php bin/behat --skip-isolators-but-load-fixtures -- path/to/feature.feature

# Install Oro's pre-built e2e scenarios and a .behat-secrets.yml.dist template
composer require oro/e2e-tests --dev -n
php bin/behat --skip-isolators -- vendor/oro/e2e-tests/Tests/Behat/Features/create_mailchimp_integration.feature

Secrets

Credentials live in .behat-secrets.yml at the application root, referenced from features as <Secret:login.username>. Never commit this file — a .behat-secrets.yml.dist template ships with the oro/e2e-tests package. See secret-management.md.

Self-Healing

Oro ships Reload Page Healer by default; OpenAI Healer is opt-in. Custom healers implement HealerInterface and get the oro_test.behat.healer service tag. See self-healing.md.

Watch Mode

Interactive development mode pauses on error with a "continue from line N" prompt and a cyclic retry loop. See watch-mode.md.

Key Pitfalls

1. Running e2e without `--skip-isolators` — the default isolators try to manage DB state on the remote app: dropping schema, loading fixtures, clearing caches. At best the run aborts; at worst it mutates the target silently. 2. `.app-env.local` vs `.env-app.test.local` — Oro's own documentation is internally inconsistent on the env file name. The e2e docs use .app-env.local for ORO_DB_DSN; the functional-test docs use .env-app.test.local. Pick the wrong one and the DSN isn't picked up — the fixture loader silently falls back to no DB. Full explanation in remote-db.md. 3. Committing `.behat-secrets.yml` — once in git history, rotation is the only remedy. Add it to .gitignore immediately; only commit the .dist template. 4. Local source mismatch with `--skip-isolators-but-load-fixtures` — the fixture loader runs locally but writes to the remote DB. If your local migrations differ from the deployed version's schema, rows land in columns that don't exist or skip columns that do. Fixtures appear to load; assertions fail later with baffling data. Always check out the exact deployed tag locally. 5. Testing production with real customer accounts — e2e tests mutate state permanently. No rollback exists. Create dedicated test users/customers/orders and never point a run at a real customer's data.

See Also

  • references/secret-management.md.behat-secrets.yml schema, <Secret:> syntax, installing the e2e tests package
  • references/self-healing.md — Reload Page Healer, OpenAI Healer config, writing custom healers
  • references/remote-db.md — env-file naming conflict, ORO_DB_DSN format, local-code-matches-deployed warning
  • references/watch-mode.md--watch prompt, line numbering, cyclic error recovery
  • references/v6.1.md — ChromeDriver setup, oro/e2e-tests package, artifact handlers
  • references/v7.0.md — 7.1-dev notes (env-file inconsistency not resolved upstream)
  • oro-behat-testing skill — integration/functional Behat with full isolation
  • oro-behat-debugging skill — screenshots, verbose output, Xdebug for failing steps

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.