Editorial checks: Validate that content creation workflows still function
after the upgrade. All test content created in this step is deleted at the end.
a. Discover a content type: Run drush entity:list --type=node_type (or
visit /admin/structure/types) to find available content types. Pick the
most common one (e.g., article, page, or the project's primary type).
b. Create a test node: Navigate to /node/add/<type> with playwright-cli.
Fill in the required fields (at minimum the title, e.g.,
[UPGRADE-TEST] Editorial Check). If a body field exists, enter a short
paragraph. Submit the form. Verify the node saves and the canonical page
renders. Take a screenshot and record the new node's ID from the URL.
c. Upload a test media item: Navigate to /admin/content/media and use
the "Add media" action (or /media/add/image if known). Upload a small
test image, fill in required fields (name:
[UPGRADE-TEST] Media Check), and save. Verify the media entity appears
in the media library. Record the media ID.
d. Edit the test node: Navigate to /node/<nid>/edit. Change the title
(e.g., append - Edited). Save and verify the updated title renders on
the canonical page. Take a screenshot.
e. Custom module smoke tests: Custom modules are the most likely source of
upgrade regressions. Perform lightweight checks on each custom module:
i. Discover custom modules: List modules under web/modules/custom/
(and addons/ if it exists). For each enabled custom module, gather:
- Routes: check <module>.routing.yml for custom page/form routes
- Entity types: check for @ContentEntityType or @ConfigEntityType
annotations/attributes in src/Entity/
- Plugins: check for block, field formatter, or field widget plugins
in src/Plugin/
ii. Visit custom routes: For each route that defines an accessible
page (not an API endpoint or callback), navigate to it with
playwright-cli. Verify the page renders without a fatal error
(no white screen, no Drupal error page). Take a screenshot.
iii. Test custom entity forms: If a custom module defines content
entities with add/edit forms, navigate to the add form. Verify
the form renders and all fields are present. If the entity is
simple enough (just a title/label), create a test entity with
the [UPGRADE-TEST] prefix, verify it saves, then add it to
the cleanup list. Do not attempt complex multi-field entity
creation -- the goal is a smoke test, not exhaustive testing.
iv. Verify custom blocks: If a custom module provides block plugins,
check that the blocks appear on the block layout page
(/admin/structure/block) and are instantiable.
Record pass/fail per custom module. If a module has no routes, entities,
or visible plugins, note it as "no testable surface" and skip.
f. Cleanup -- delete test content: Delete all test content created in this
phase: the test node, test media item, and any custom entities created
during the custom module smoke tests. Use the admin UI or drush commands:
drush entity:delete node <nid>
drush entity:delete media <mid>
drush entity:delete <entity_type> <id> # for each custom entity
Verify each is gone by confirming 404/403 on their canonical URLs.
g. Record editorial results: Note pass/fail for each step (create, upload,
edit, custom module checks, cleanup). If any step fails, record the error
and take a screenshot.