Problem/Motivation
- The share rail rendered through three different paths (block, Drupal Canvas, custom Twig) without a single source of truth,
so improvements had to be made in multiple places. - Enabling or disabling a platform did not invalidate the anonymous page cache — changes appeared stale until a manual cache
rebuild. - The settings form id contained a dot (
webshare.config_form), producing a malformed HTML id and breaking
automation that targets the form by selector. - No automated coverage existed for Drupal CMS, where the Mercury theme delegates header and footer rendering to Drupal Canvas
page_regionentities instead of classic block layout. - The module had no reference documentation for site builders, administrators, or developers.
Proposed resolution
- Single render path: The block, the Drupal Canvas component, and a custom Twig embed all render the same
webshare:shareSingle-Directory Component. - Drupal Canvas integration: The SDC is auto-exposed to Canvas as
sdc.webshare.shareand
exercised on Canvas pages, content templates, and page-region entities. - Drupal CMS support: A dedicated test site and feature suite for the
drupal/cmsdistribution on
the Mercury theme, with the share rail placed inmercury.headerandmercury.footerCanvas
page-regions. - Cache invalidation fix: The rail now carries the
webshare_platformscache tag; saving the
settings form or adding, editing, or deleting a platform invalidates it — every cached page that contains the rail is refreshed
automatically. - Settings form fix: The form id is now
webshare_config_formand the rendered HTML id is the
cleanwebshare-config-form. - BDD test suite: 82 webship-js scenarios / 472 steps covering both flavours — smoke, front-end rendering,
all 13 platforms, accessibility, responsive layouts, admin form, platform add/edit/delete modal, access control, Canvas, and
Drupal CMS. Pure browser-driven steps backed by a 281-entry named-selector registry. - CI: Two GitLab browser-test jobs (Drupal Standard + Drupal CMS) plus validate-stage jobs (cspell, eslint,
stylelint) reproducible locally throughgitlab-ci-local. - Documentation site: MkDocs Material site under
docs/with Introduction, User, Administrator,
Developer, and FAQ sections — builds cleanly undermkdocs build --strict.
Remaining tasks
- ✅ File an issue
- ✅ Addition/Change/Update/Fix
- ✅ Merge request, Patch, or Commit
- ✅ Testing to ensure no regression
- ✅ Automated unit testing coverage
- ✅ Automated functional testing coverage
- ➖ UX/UI designer responsibilities
- ➖ Readability
- ➖ Accessibility
- ➖ Performance
- ➖ Security
- ➖ Documentation
- ✅ Code review by maintainers
- ✅ Full testing and approval
- ✅ Credit contributors
- ✅ Review with the product owner
- ✅ Release notes snippet
- ✅ Release webshare-2.0.0-alpha1
User interface changes
- N/A
API changes
- N/A
Data model changes
- N/A
Release notes snippet
- ci: #3591899 Add automated functional acceptance testing for Webshare with webship-js (Playwright + Cucumber-js), Drupal Canvas + Drupal CMS support, and MkDocs documentation
Comments
Comment #7
rajab natshahComment #8
rajab natshah✅ Released webshare-2.0.0-alpha1
Comment #9
rajab natshah