用途:针对已部署的 OroCommerce 6.1 应用(staging、QA、prod 克隆或 prod)运行端到端 Behat 测试。与本地功能/集成测试不同,e2e 测试禁用全部隔离器,仅通过 Mink + ChromeDriver 与浏览器交互,不加载 fixture、不直接调用服务。
关键区分是隔离标志:--skip-isolators 为纯 e2e,禁用数据库、缓存和服务容器隔离;--skip-isolators-but-load-fixtures 为混合模式,保留 fixture-loader 隔离器,需 ORO_DB_DSN 指向远程数据库,且本地源码的迁移必须与部署版本完全匹配,否则会静默写入错误数据。若步骤定义调用了服务而非浏览器,纯 e2e 运行会失败,除非该服务可通过环境变量访问。
运行方式:先以 chromedriver --url-base=wd/hub --port=4444 启动 ChromeDriver;纯 e2e 用 php bin/behat --skip-isolators -- path/to/feature.feature;混合模式加 --skip-isolators-but-load-fixtures。可通过 composer require oro/e2e-tests --dev -n 安装官方预置 e2e 场景与 .behat-secrets.yml.dist 模板。
密钥:凭据存放在应用根目录的 .behat-secrets.yml,特性中以 Secret:login.username 引用,切勿提交该文件,应加入 .gitignore。
自愈与 watch:默认提供 Reload Page Healer,OpenAI Healer 需手动开启,自定义 healer 实现 HealerInterface 并加 oro_test.behat.healer 服务标签;watch 模式在出错时暂停并提示从第 N 行继续。
限制与注意:不加 --skip-isolators 就直接运行 e2e 可能静默改坏远端应用;环境文件名 .app-env.local 与 .env-app.test.local 在不同文档中不一致,选错会导致 DSN 不生效;本地迁移与部署版本不匹配会产生难以排查的数据问题;e2e 测试会永久改变状态,无回滚,绝不要对真实客户数据运行。第七版相关说明见参考资料,环境文件不一致问题上游尚未解决。