Update Resemble.js 3.2.4 > 4.0.0

Resemble.JS 3.2.4 has support for Node.JS rendering which is done via
canvas, canvas, which depends on cairo and in turn requires system
libraries to be available. The missing libraries cause the build to
fail.  Since image-diff is a browser plugin, we do not need the canvas
dependency.

I tried to find a way to use `yarn install --ignore-optional`, but short
of editing the Gerrit main WORKSPACE, I could not find any way to do it.

Eventually I have found a later version of Resemble.js changes canvas to
an optional dependencies:
https://github.com/rsmbl/Resemble.js/commit/35e294dab95ad6bb531138eb5613355571805aa9

It was released with version 4.0.0 of Resemble.JS and removes the
dependency upon system libraries.

I have noticed the `yarn.lock` is still pointing to resemble@1.2.1 which
clearly got forgotten. I don't know how the build still work since Gerrit
`yarn_install` refers to that lock file. I have regenerated it with
Gerrit 3.5 using:

bazel run @yarn//:yarn install -- --cwd plugins/image-diff install

The `package-lock.json` has been regenerated with npm 7.21.0 within the
Gerrit stable-3.5 branch (for polymer-bridges).

Change-Id: I924b66b535619a4072039b7396850ca34caf9e3e
4 files changed
tree: 6382021589737153a1c9a01781696de93eb7863f
  1. assets/
  2. gr-image-diff-tool/
  3. gr-opacity-diff-mode/
  4. gr-resemble-diff-mode/
  5. test/
  6. .eslintrc.json
  7. .gitignore
  8. bower.json
  9. BUILD
  10. LICENSE
  11. package-lock.json
  12. package.json
  13. plugin.js
  14. README.md
  15. rollup.config.js
  16. yarn.lock
README.md

Image Diff

A plugin that provides a rich image diffing experience in PolyGerrit. Currently, the plugin features two modes: Highlight Mode and Onion Skin.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Build

The build requires to be done from an existing Gerrit tree. All commands below are relative to the root of a copy of Gerrit.

  1. Clone the image-diff repository into the plugins folder of the gerrit repo, or link the image-diff plugin folder to gerrit/plugins folder.
  2. Override Gerrit plugins/package.json with the plugin package.json:
ln --symbolic --force image-diff/package.json plugins/package.json

You can remove all depDependencies from plugins/package.json as they are not needed for the build (they are only needed for running wct tests).

  1. run bazel build plugins/image-diff

Highlight Mode

Highlight example

This mode uses the Resemble.JS library.

The following features are included in this mode:

  • Percentage of difference between the images
  • Ability to ignore color in the comparison
  • Ability to make the diff color more discernible
  • Change the diff color
  • View the diff in full screen

Onion Skin

Opacity example

Onion Skin mode is a great way for users to notice changes in the images that might be overlooked when you look at them side by side. By overlaying the new image on top of the old image, the users can change the opacity to see the transition that were made.

The following features are included in this mode:

  • Scale the new image to the same size as the old image
  • Changing the opacity of the top image

Testing

This plugin uses polymer-cli to test.

Inside your image-diff repo, run polymer serve to start a local web server and open localhost:8080/test to view your tests. See here for more info.

Or run npm run wct-test to run all your tests.

Development

Reference here on how to set up your Gerrit testsite and here for PolyGerrit plugin development.

To update dependencies amend package.json then from the root of the Gerrit repository execute yarn to refresh the yarn.lock lock file:

bazel run @yarn//:yarn install -- --cwd plugins/image-diff install
git add package.json yarn.lock

Then since developers tend to use npm directly, refresh the package-lock.json as well:

npm update

Add package.json, package-lock.json and yarn.lock to your git commit.

Authors

  • Jack Zheng
  • Raeggin Williams
  • Kasper Nilsson