build_bucket_golden_scraper
Given logging on Flutter's CI, scrapes the log for golden file changes.
$ dart bin/main.dart <path to log file, which can be http or a file> Wrote 3 golden file changes: testing/resources/performance_overlay_gold_60fps.png testing/resources/performance_overlay_gold_90fps.png testing/resources/performance_overlay_gold_120fps.png
It can also be run with --dry-run
to just print what it would do:
$ dart bin/main.dart --dry-run <path to log file, which can be http or a file> Found 3 golden file changes: testing/resources/performance_overlay_gold_60fps.png testing/resources/performance_overlay_gold_90fps.png testing/resources/performance_overlay_gold_120fps.png Run again without --dry-run to apply these changes.
You're recommended to still use git diff
to verify the changes look good.
git diff
By default, git diff
is not very helpful for binary files. You can install imagemagick
and configure your local git client to make git diff
show a PNG diff:
# On MacOS. $ brew install imagemagick # Create a comparison script. $ cat > ~/bin/git-imgdiff <<EOF #!/bin/sh echo "Comparing $2 and $5" # Find a temporary directory to store the diff. if [ -z "$TMPDIR" ]; then TMPDIR=/tmp fi compare \ "$2" "$5" \ /tmp/git-imgdiff-diff.png # Display the diff. open /tmp/git-imgdiff-diff.png EOF # Setup git. git config --global core.attributesfile '~/.gitattributes' # Add the following to ~/.gitattributes. cat >> ~/.gitattributes <<EOF *.png diff=imgdiff *.jpg diff=imgdiff *.gif diff=imgdiff EOF git config --global diff.imgdiff.command '~/bin/git-imgdiff'
Due to https://github.com/flutter/flutter/issues/53784, on non-Linux OSes there is no way to get golden-file changes locally for a variety of engine tests.
This tool, given log output from a Flutter CI run, will scrape the log for:
Golden file mismatch. Please check the difference between /b/s/w/ir/cache/builder/src/flutter/testing/resources/performance_overlay_gold_90fps.png and /b/s/w/ir/cache/builder/src/flutter/testing/resources/performance_overlay_gold_90fps_new.png, and replace the former with the latter if the difference looks good.
S
See also the base64 encoded /b/s/w/ir/cache/builder/src/flutter/testing/resources/performance_overlay_gold_90fps_new.png:
iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAABHNCSVQICAgIfAhkiAAAIABJREFUeJzs3elzFWeeJ/rnHB3tSEILktgEBrPvYBbbUF4K24X3t (...omitted)
And convert the base64 encoded image into a PNG file, and overwrite the old golden file with the new one.