Saltar al contenido principal

Se cambiaron los comparadores predeterminados de archivos golden en las pruebas de integración en Android e iOS.

Al usar `package:integration_test` para ejecutar una prueba _en_ un dispositivo o emulador Android, o un dispositivo o simulador iOS, el `goldenFileComparator` predeterminado ha cambiado y utiliza correctamente el sistema de archivos del host.

Resumen

#

A menos que se establezca un goldenFileComparator definido por el usuario, ya sea manualmente en una prueba o mediante un archivo flutter_test_config.dart, los dispositivos Android e iOS y emuladores/simuladores tienen un nuevo valor predeterminado que actúa como proxy del sistema de archivos del host local, corrigiendo un error antiguo (#143299).

Contexto

#

El paquete integration_test, y su integración con flutter_test, ha tenido históricamente un error donde usar matchesGoldenFile u APIs similares arrojaba una FileSystemException.

Es posible que algunos usuarios hayan solucionado este problema escribiendo y usando un goldenFileComparator personalizado:

dart
import 'package:integration_test/integration_test.dart';
import 'package:my_integration_test/custom_golden_file_comparator.dart';

void main() {
  goldenFileComparator = CustomGoldenFileComparatorThatWorks();

  // ...
}

Dichas soluciones temporales ya no son necesarias y, si se comprueba el tipo del predeterminado, ya no funcionará como antes:

dart
if (goldenFileComparator is ...) {
  // The new default is a new (hidden) type that has not existed before.
}

Guía de migración

#

En la mayoría de los casos, esperamos que los usuarios no tengan que hacer nada; esto será, en cierto sentido, una nueva funcionalidad que reemplaza a la funcionalidad que no funcionaba y causaba una excepción no controlada que hacía fallar la prueba.

En los casos en que los usuarios hayan escrito infraestructura de pruebas y comparadores personalizados, considera en su lugar eliminar las sustituciones de goldenFileComparator y basarte en el (nuevo) valor predeterminado que debería funcionar como se espera:

dart
import 'package:integration_test/integration_test.dart';
import 'package:my_integration_test/custom_golden_file_comparator.dart';

void main() {
  goldenFileComparator = CustomGoldenFileComparatorThatWorks();

  // ...
}

Dato curioso: Se reutilizó el código existente que se usaba para la plataforma web.

Timeline

#

Introducido en la versión: 3.29.0-0.0.pre
Lanzamiento estable: 3.32

Referencias

#

APIs relevantes:

  • flutter_test, que habla sobre flutter_test_config.dart y sus capacidades.
  • goldenFileComparator, que implementa la comparación y es configurable por el usuario.

Issues relevantes:

PRs relevantes:

  • PR 160215, donde se refactorizó la implementación de la herramienta web para hacerla genérica.
  • PR 160484, que utiliza el protocolo del servicio VM de Dart para actuar como proxy entre el dispositivo y el host.