Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - ryancyq/rodiff: A ruby image comparison tool powered by ODiff in OCamel. · GitHub
Skip to content

Repository files navigation

rodiff

VersionCICoverageMaintainability

A ruby image comparison tool powered by Odiff in OCamel.

Motivation

Impressive benchmarks from Odiff.

A strong candidate against the veteran players like pixelmatch and ImageMagick

Getting Started

Install the gem and add to the application's Gemfile by executing:

bundle add rodiff

If bundler is not being used to manage dependencies, install the gem by executing:

gem install rodiff

This gem wraps the standalone executable of the Odiff. These executables are platform specific, there are separate gems per platform, but the suitable gem will automatically be selected for your machine.

Supported platforms are:

  • arm64-darwin (macos-arm64)
  • x64-mingw32 (windows-x64)
  • x64-mingw-ucrt (windows-x64)
  • x86_64-darwin (macos-x64)
  • x86_64-linux (linux-x64)

Using a local installation of Odiff

If you are not able to use the vendored standalone executables, a local installation of the Odiff executable can be configured by setting an environment variable named ODIFF_INSTALL_DIR to the directory path containing the executable.

For example, if you've installed the odiff-bin npm package and had the binaries downloaded at /path/to/node_modules/bin/odiff, then you should set your environment variable like so:

ODIFF_INSTALL_DIR=/path/to/node_modules/bin

or, for relative paths like ./node_modules/.bin/odiff:

ODIFF_INSTALL_DIR=node_modules/.bin

Configuration

Rodiff automatically discovers and loads configuration from .rodiff.yml files in your project.

Configuration File Discovery

Rodiff searches for .rodiff.yml starting from the current directory and traversing upward to your home directory:

/home/username/projects/myapp/src/tests/.rodiff.yml ← checks here first
/home/username/projects/myapp/src/.rodiff.yml
/home/username/projects/myapp/.rodiff.yml ← typically found here
/home/username/projects/.rodiff.yml
/home/username/.rodiff.yml ← stops here (home directory)

Configuration Options

Create a .rodiff.yml file in your project root:

# File patterns for image comparison (supports glob patterns)include_pattern: "screenshots/**/*.png"exclude_pattern: "screenshots/archived/**"# Comparison settingscolor_threshold: 0.1# 0.0 - 1.0 (lower = stricter)ignore_antialiasing: false # Ignore antialiasing differencesoutput_diff_mask: false # Output black/white mask instead of diff image# Error handlingfail_if_no_comparison: false # Exit with error if no images foundexit_code_error: 1# Exit code for errors (not image differences)

Programmatic Configuration

You can also configure Rodiff programmatically:

Rodiff.configuredo |config|
config.include_pattern="**/*.png"config.color_threshold=0.15config.ignore_antialiasing=trueend

Or override specific values:

config=Rodiff::Configuration.newconfig.overrides(color_threshold: 0.2,output_diff_mask: true)

Development

bin/setup
bundle exec rake spec # run all tests (RSpec)
bundle exec rake rubocop # lint
bundle exec rake coverage # run tests with coverage + collate report

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Troubleshooting

ERROR: Cannot find the odiff executable for supported platform

Some users are reporting this error even when running on one of the supported platforms:

  • arm64-darwin
  • x64-mingw32
  • x64-mingw-ucrt
  • x86_64-darwin
  • x86_64-linux

Check Bundler PLATFORMS

A possible cause of this is that Bundler has not been told to include gems for your current platform. Please check your Gemfile.lock file to see whether your native platform is included in the PLATFORMS section. If necessary, run:

bundle lock --add-platform <platform-name>

and re-bundle.

Check BUNDLE_FORCE_RUBY_PLATFORM

Another common cause of this is that bundler is configured to always use the "ruby" platform via the BUNDLE_FORCE_RUBY_PLATFORM config parameter being set to true. Please remove this configuration:

bundle config unset force_ruby_platform
# or
bundle config set --local force_ruby_platform false

and re-bundle.

See https://bundler.io/man/bundle-config.1.html for more information.

License

Rodiff is released under the MIT License. Odiff is released under the MIT License.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ryancyq/rodiff.

About

A ruby image comparison tool powered by ODiff in OCamel.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages