test: #3612501 Add functional tests for the ECA Workflow Modeler swap
Adds a webship-js (Playwright + Cucumber-js) isolation acceptance suite for the Varbase Content Base recipe's ECA editor swap.
Issue
https://www.drupal.org/project/varbase_content_base/issues/3612501 — Add functional tests for the ECA Workflow Modeler swap
Follows up on the merged swap: https://www.drupal.org/project/varbase_content_base/issues/3612486 (MR !10 (merged)) replaced BPMN.iO with the Workflow Modeler but shipped with no automated test proving it.
What this adds
tests/features/01-eca-workflow-modeler/— 3 feature files, 6 scenarios:- the ECA add screen resolves straight to the Workflow Modeler;
- the shipped
redirect_403_to_loginmodel opens and renders React Flow nodes in the Workflow Modeler with zero JavaScript errors; modeler+modeler_api+eca+eca_uiare enabled andbpmn_iois not, no configuration object name contains "bpmn", and both shipped ECA models are taggedmodeler_id: workflow_modeler.
tests/step-definitions/eca-workflow-modeler.steps.js— 5 custom steps (admin login viadrush uli+ 4 recipe-contract state checks), everything else reuses webship-js built-in steps.package.json,cucumber.js,playwright.config.ts,tsconfig.json,.gitignore— the webship-js (~2.0.0) test tooling..gitlab-ci.yml— additive only. The existingbuild:composer-validateandvalidate:yaml-lintjobs are byte-identical to the live1.0.xfile; this MR only adds theteststage and one new job,"🧪 Recipe acceptance (Workflow Modeler)".
The suite is isolation-scoped
These scenarios are written for the recipe applied on its own (a plain Drupal site where the Workflow Modeler is the only ECA editor), not the full Varbase project template where both editors may coexist. See tests/features/01-eca-workflow-modeler/README.md for the distinction.
CI job is opt-in
The new test stage job only runs as a real gate when the RUN_RECIPE_BROWSER_TESTS CI/CD variable is set to 1 (project / MR / manual pipeline run); otherwise it's exposed as an optional manual button. The default fast pipeline (build:composer-validate + validate:yaml-lint) is untouched and stays the only automatic gate.
The suite was validated green (all 6 scenarios) against a live site with the recipe applied and the Workflow Modeler swap in place. The .gitlab-ci.yml job itself has not yet run in a GitLab runner — it needs a first manual pipeline run to confirm the CI build steps (Drupal site build via Composer, SQLite install, recipe apply, wait-on, cucumber-js) work end to end in that environment.
AI-Generated: Yes (Claude Code drafted the test suite, step definitions, and the opt-in CI job; a human reviews before merge).
Checkpoints
- File an issue about this project
- Addition/Change/Update/Fix to this project
- Testing to ensure no regression
- Automated unit/functional testing coverage
- Developer Documentation support on feature change/addition
- User Guide Documentation support on feature change/addition
- UX/UI designer responsibilities
- Accessibility and Readability
- Reviewed by a human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Update Release Notes
- Release