Cómo solucionar el error de dependencia con behat/mink-selenium2-driver y su versión 1.4.x-dev

Hoy he estado tratando con un caso particular actualizando el módulo Webform a su mas reciente versión, una tarea que debía tomar solo unos minutos me tomó mas de una hora por un error un poco extraño en el proceso, me apareció el siguiente problema.

Error Update behat/mink-selenium2-driver 1.3.x-dev

Lo que se entiende leyendo el mensaje arrojado es que behat/mink-selenium2-driver require la versión 1.4.x-dev pero webflo/drupal-core-require-dev en su mas reciente versión 8.8.8 requiere la versión 1.3.x-dev un problema un poco complejo teniendo en cuenta que aparentemente es algo del core.

Analizando el archivo composer.json veo que webflo/drupal-core-require-dev está en el aparatado de require-dev.

dependencia en require-dev de composer.json

Al ser algo del core de Drupal me di a la tarea de buscar entre los comentarios den drupal.org y un incidente en partícular me dio la pista de lo que estaba pasando, no era el primero al que le pasaba y el usuario @smutek comentaba que la dependencia podría removerse aunque en su caso le había dado un error, no así los siguientes que probaron a todos les funcionó la opción, así que decidí probarlo.

Comentario que confirma que funciona

La ejecución fue exitosa, eliminó un grupo de paquetes y actualizó otro tanto, el paquete de behat se fue y entonces ya todo debería estar Ok.

Teniendo en cuenta que en mi caso se trataba de un sitio instalado usando la plantilla de proyecto composer de Drupal, quise revisar como estaba el composer.json de la mas reciente versión ya que era muy probable que hubiese cambiado, ya en otro artículo había hablado de como actualizar el core en esta plantilla tenía una variación y este seguro no era la excepción, aunque en mi caso de trataba de un módulo contribuido.

Revisando encontré que en la mas reciente versión el paquete drupal/core-dev era el que había entrado a reemplazar a webflo/drupal-core-require-dev, aunque según leo en un caso abierto en Drupal.org, realmente no son necesarios para un sitio en producción ya que solo se usa para entornos de desarrollo y será removido en Drupal 9.

Require dev new

 

Como aún no estamos en Drupal 9 no se que pueda romper de forma no intencional, preferí agregarlo al composer.json manualmente y reconstruir el composer.lock con la variación.

$ composer update --lock

Removido el paquete problema, finalmente procedí con la actualización del módulo webform con:

$ composer update drupal/webform

Y finalmente la actualización fue posible.

Conclusiones

  • El problema de fondo era por estar usando un paquete obsoleto en el composer.json, debía ser reemplazado.
  • Hay que poner atención a los cambios que va teniendo el composer.json con cada actualización del core a fin de no quedar desactualizados.
  • Quizá el paquete de desarrollo no sea necesario pero por precacución lo dejé.

 

 

Aldibier_Morales