Improving Simplytest's maintainability
Things have been pretty quiet on the Simplytest front. But I want to bring a fresh round of changes that will make it an easier project to maintain.
Things have been pretty quiet on the Simplytest front. But I want to bring a fresh round of changes that will make it an easier project to maintain.
In my previous blog post, Using DDEV snapshots to speed up GitHub Actions workflows, I explained how DDEV snapshots can be used to speed up continuous integration workflows for end-to-end tests.
It has been a little over a month since I announced Retrofit. The project provides a compatibility layer to allow legacy Drupal 7 code to run within a Drupal 10 code base.
I have been reading The Pragmatic Programmer and just finished the Concurrency chapter.
My projects all use DDEV for local development. Regarding end-to-end testing, as part of my continuous integration process, I also use DDEV! This way, my scripts for running Cypress are the same locally and in my CI.
One of my favorite development tasks is performance engineering. I love taking an application and analyzing it to increase performance. Application performance monitoring (APM) tools like New Relic and Blackfire.io are tools every developer should have in their toolkit.
Drupal has a key-value database table that stores information about the current environment. The values stored are serialized PHP objects or arrays. That makes inspecting them nearly impossible by just querying the database. Luckily, Drush provides a state:get command for retrieving those values.
Drupal's service container for dependency injection allows modules to register services and parameters to the service container or alter and modify the service container.
Check out the Retrofit for Drupal project website for more information: https://retrofit-drupal.com/
Last week I wrote about dependency injection anti-patterns in Drupal. These anti-patterns occur when your service's constructor has logic that interacts with the injected dependent services beyond assigning them to properties.