uuid: - value: 190e33fc-0d42-49fd-8f4d-1cfd174b988a langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:36+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: | Tests make upgrades less risky created: - value: '2023-08-07T00:00:00+00:00' changed: - value: '2025-05-11T09:00:36+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2023/08/07/tests-make-upgrades-less-risky langcode: en body: - value: |

I recently reviewed a client's Drupal 9 website to gather information about upgrading it to Drupal 10.

The site has a number of custom modules. They all require changes to make them Drupal 10-compatible - some are a core_version_requirement update, and some are more complex.

None of these modules have automated tests.

If they did, I'd be able to run them and see if they pass, make my changes, and rerun the tests to verify they still pass, and the module works as it did previously.

But I can't.

I'd need to test each module beforehand to understand what it does manually and again after making the changes.

This is more time-consuming, riskier, and easier for me to introduce regressions or new bugs.

Whether it's a major CMS version upgrade, updating a contrib module or refactoring custom code, having a passing test suite you can use and rely on makes updates easier and less risky.

format: full_html processed: |

I recently reviewed a client's Drupal 9 website to gather information about upgrading it to Drupal 10.

The site has a number of custom modules. They all require changes to make them Drupal 10-compatible - some are a core_version_requirement update, and some are more complex.

None of these modules have automated tests.

If they did, I'd be able to run them and see if they pass, make my changes, and rerun the tests to verify they still pass, and the module works as it did previously.

But I can't.

I'd need to test each module beforehand to understand what it does manually and again after making the changes.

This is more time-consuming, riskier, and easier for me to introduce regressions or new bugs.

Whether it's a major CMS version upgrade, updating a contrib module or refactoring custom code, having a passing test suite you can use and rely on makes updates easier and less risky.

summary: null field_daily_email_cta: { }