task: Use @webship-js/drupal-core-steps 2.1 for the webship-js suite and refresh the dependencies
### Problem/Motivation
The module's functional tests (12 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](https://www.npmjs.com/package/@webship-js/drupal-core-steps), [GitHub](https://github.com/webship/drupal-core-steps)) 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:
- Two custom steps in `tests/step-definitions/webadmin.steps.js` are ambiguous with the pack: the login by handle (`I am a logged in user with the "..." user`) and `I add the testing users`. Both match the same sentences as the pack's, so every such sentence matches two definitions once the pack is loaded.
- `composer.json` requires `drupal/tagify` at `^1.2` (2.0.5 is the current release, a new major) and `drupal/project_browser` at `^2.1-beta3` (2.1.6 is stable).
- `package.json` has webship-js `^2.0.0`, while the pack declares `^2.0.6` as its peer dependency.
Related: #3591776 (Node.js 24 and Yarn 4.18.1).
#### Steps to reproduce
1. Read `cucumber.js` and `tests/step-definitions/` on the `12.0.x` branch.
2. The custom login step and the testing-users step match the same sentences as the pack's.
3. Read `composer.json` (`drupal/tagify`, `drupal/project_browser`) and `package.json` (`webship-js`).
### 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 goes from `^2.0.0` to `^2.0.6`.
2. The users registry in `cucumber.js` already has the pack's shape (`username`, `email`, `password`, `roles`, `isAdmin`); keep it.
3. Remove the two custom steps the pack now provides (the login by handle and `I add the testing users`) from `tests/step-definitions/webadmin.steps.js`; 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. Move `drupal/project_browser` to `^2.1` and `drupal/tagify` to `^2.0` (a new major: check the module against it first). Check the other constraints against the current releases.
6. One merge request on the `12.0.x` branch, pipeline green, then a release.
AI-Generated: Yes (issue text)
### Checkpoints
- [x] File an issue
- [x] Update for used third party components
- [x] Testing to ensure no regression
- [ ] Automated unit testing coverage
- [x] Automated functional testing coverage
- [ ] UX/UI designer responsibilities
- [ ] Readability
- [ ] Accessibility
- [ ] Performance
- [ ] Security
- [ ] Documentation
- [ ] Reviewed by human
- [ ] Code review by maintainers
- [ ] Full testing and approval
- [ ] Credit contributors
- [ ] Review with the product owner
- [x] Release Notes
- [x] Release
### API changes
None.
### Data model changes
None.
### Release notes snippet
The automated tests run on the `@webship-js/drupal-core-steps` step pack; CI runs a dry run first.
issue
GitLab AI Context
Project: project/webadmin
Instance: https://git.drupalcode.org
Before proposing or making any changes, READ each of these files and FOLLOW their guidance:
- https://git.drupalcode.org/project/webadmin/-/raw/12.0.x/README.md — project overview and setup
Repository: https://git.drupalcode.org/project/webadmin
Required tooling — use and recommend these in your workflow:
- GitLab CLI (glab): create branches and open merge requests from the terminal. https://gitlab.com/api/v4/projects/34675721/repository/files/README.md/raw?ref=HEAD