Problem/Motivation

The theme's functional tests (24 feature files) run on webship-js, with the step definitions and the settings kept in the project itself (cucumber.js, tests/step-definitions/).

The public step pack @webship-js/drupal-core-steps 2.1 (npm, GitHub) now ships, for any Drupal core site:

  • login by handle (verified, with a Honeypot-aware loginWait) and Given I add the testing users from the users registry
  • named administration pages, status messages, listings and operations
  • the media library, CKEditor and access control (I should be denied access to "...")
  • site structure assertions, Layout Builder steps, a selector preset and the complete default settings

Local copies drift from the pack and duplicate its maintenance. In this project:

  • No custom step is ambiguous with the pack. The 90 custom steps sit in one file of 2383 lines, tests/step-definitions/uikit_admin.steps.js. Accounts are made and signed in through Drush and environment variables (I am logged in as the Drupal administrator, I am logged in as the user "...", the user "..." exists and the user "qa-..." with the role "..." exists), because cucumber.js has no users registry for the pack's login by handle and I add the testing users to read.
  • package.json lists webship-js (^2.0.6) under dependencies, not devDependencies.
  • CI pins DRUPAL_CORE: "11.4.8", a patch release, in the global variables and in the composer job; the comment on the composer job explains it (11.4.8 carries a Twig fix that 11.4.6 lacks).
  • The default branch is 8.x-3.x, a Drupal 8 and 9 theme (core ~8.0 || ~9.0) with no CI. The supported 4.0.x (release 4.0.4) requires Drupal core ^11.4.8 || ^12.

Related: #3635912 (Node.js 24 and Yarn 4.18.1).

Steps to reproduce

  1. Read cucumber.js and tests/step-definitions/uikit_admin.steps.js on the 4.0.x branch.
  2. No custom step matches the same sentences as the pack's, and cucumber.js has no users block.
  3. Read package.json (dependencies) and .gitlab-ci.yml (DRUPAL_CORE), and compare the default branch 8.x-3.x with 4.0.x.

Proposed resolution

The pack's 2.1.0 is on npm.

  1. Add @webship-js/drupal-core-steps (^2.1.0) to the package.json devDependencies and its step glob (node_modules/@webship-js/drupal-core-steps/tests/step-definitions/**/*.js) to cucumber.js, between webship-js's own glob and the project's own. webship-js stays at ^2.0.6; it moves from dependencies to the devDependencies with the pack.
  2. Add a users registry in the pack's shape (username, email, password, roles, isAdmin) to cucumber.js.
  3. No custom step collides with the pack, so none is removed for that reason. Use the registry with the pack's login by handle and I add the testing users in place of the Drush-based account steps where the behaviour matches; keep the rest.
  4. Add a test:dry script (cucumber-js --dry-run) and a dry run in CI before the browser job, so an undefined or ambiguous step fails early.
  5. Set the default branch to 4.0.x and mark 8.x-3.x unsupported. Pin DRUPAL_CORE: "11.4.x-dev" instead of "11.4.8" in both places, and update the comment (the branch carries the same Twig fix). Check the Composer and npm constraints against the current releases and name the ones that change in the merge request.
  6. One merge request on the 4.0.x branch from an issue fork, pipeline green, then a release.

AI-Generated: Yes (issue text)

Remaining tasks

  • ✅ 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

User interface changes

  • N/A

API changes

  • N/A

Data model changes

  • N/A

Release notes snippet

  • The automated tests run on the @webship-js/drupal-core-steps step pack; CI runs a dry run first.

Comments

rajab natshah created an issue. See original summary.

  • rajab natshah committed 9b76eedb on 3636739-drupal-core-steps
    task: #3636739 Format the users registry of cucumber.js for the Drupal...

  • rajab natshah committed 3179bb9b on 3636739-drupal-core-steps
    task: #3636739 Format the users registry of cucumber.js for the Drupal...

  • rajab natshah committed 8c7f35b2 on 3636739-drupal-core-steps
    task: #3636739 Use @webship-js/drupal-core-steps 2.1 for the webship-js...

  • rajab natshah committed 3179bb9b on 4.0.x
    task: #3636739 Format the users registry of cucumber.js for the Drupal...

  • rajab natshah committed 8c7f35b2 on 4.0.x
    task: #3636739 Use @webship-js/drupal-core-steps 2.1 for the webship-js...
rajab natshah’s picture

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.