Saltar al contenido principal

Las comparaciones "golden" específicas de la web ya no son compatibles

La clase `WebGoldenComparator` y la instancia de nivel superior `webGoldenComparator` están deprecadas, pendientes de eliminación, y los backends de renderizado web (incluyendo tanto CanvasKit como skWasm) ahora usan `GoldenFileComparator` y `goldenFileComparator` directamente.

Resumen

#

El paquete flutter_test y la herramienta flutter ya no utilizarán la variable de nivel superior webGoldenComparator, y en su lugar usarán la variable de nivel superior original goldenFileComparator (al igual que las plataformas que no son web).

Para los usuarios de flutter_test, estos cambios se realizarán automáticamente.

Contexto

#

Originalmente, WebGoldenComparator se añadió para el backend HTML de Flutter web, ya que no era posible crear un PNG codificado (búfer de bytes) y se necesitaba una nueva API. Dado que el backend HTML se está deprecando y eliminando, esta API separada ya no es necesaria.

Guía de migración

#

Para la mayoría de los usuarios, no se requieren cambios (aparte de migrar fuera del backend HTML, lo cual no se cubre aquí), la herramienta flutter configurará automáticamente goldenFileComparator y lo utilizará (cuando se use un backend web que no sea HTML).

Para los usuarios que implementan un WebGoldenComparator personalizado, deberán migrar la implementación a GoldenFileComparator. Afortunadamente, los backends Canvas Kit y SkWasm ya requerían métodos similares (compareButes y updateBytes).

Por ejemplo:

dart
// Before
class MyWebGoldenComparator extends WebGoldenComparator {
  @override
  Future<bool> compare(double width, double height, Uri golden) {
    // will be removed in the migration
  }

  @override
  Future<bool> update(double width, double height, Uri golden) {
    // will be removed in the migration
  }

  @override
  Future<bool> compareBytes(Uint8List bytes, Uri golden) {
    // will be renamed "compare"
  }

  @override
  Future<bool> updateBytes(Uint8List bytes, Uri golden) {
    // will be renamed "update" and the parameter orders swapped
  }
}

// After
class MyGenericGoldenComparator extends GoldenFileComparator {
  @override
  Future<bool> compare(Uint8List bytes, Uri golden) {
    // used to be "compareBytes"
  }

  @override
  Future<bool> update(Uri golden, Uint8List bytes) {
    // used to be "updateBytes"
  }
}

Timeline

#

Introducido en la versión: 3.29.0-0.0.pre
En la versión estable: 3.29

Referencias

#

Issues relevantes:

  • Issue 145954, donde el renderizador HTML fue deprecado.
  • Issue 160261, donde se propuso consolidar GoldenFileComparator y WebGoldenComparator.

PRs relevantes:

  • PR 161196, donde WebGoldenComparator fue deprecado y la CLI de flutter comenzó a usar goldenFileComparator.