Loki vs Roborazzi
Loki
loki.js.orgRoborazzi
github.comSide by side
| Figure | Loki | Roborazzi |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | Yes | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| iOS | Yes | Yes |
| Android | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Visual Regression Testing Software | 8.6 (#4) | 8.5 (#5) |
| Spec score · Visual Testing | 8.7 (#3) | 8.5 (#4) |
| CI | Loki is designed to run on continuous integration servers, where tests can require reference images. | The documentation describes integrating Roborazzi with GitHub Actions to store, verify, and compare screenshots. |
| License | The project repository identifies Loki as MIT licensed. | The repository identifies Roborazzi as licensed under Apache License 2.0. |
| Purpose | Loki tests Storybook projects for visual regressions by comparing screenshots with reference images. | Roborazzi is an open-source library for making JVM Android integration tests visible through screenshot testing. |
| Security | The command-line reference documents a `chromeDockerWithoutSeccomp` option, which defaults to false. | The AI assertion documentation advises passing API keys through environment variables rather than hard-coding them in code. |
Plans
In their own words
Loki
Loki is a free, MIT-licensed tool for checking Storybook projects for visual regressions. It captures story screenshots and compares them with reference images, producing visual differences for review. The workflow is to create reference screenshots, run comparisons, review the differences, and approve updated references. Loki is designed for continuous integration, where tests can fail if reference images are missing. Capture targets include Chrome in Docker or locally, Chrome in AWS Lambda, the iOS simulator, and the Android emulator; an AWS Lambda renderer is available for large test suites. Node 16 or later is required. Recent Storybook versions need no extra integration for non-React Native projects, while React Native setup uses an import in `storybook/storybook.js`. Projects can configure Loki in a `package.json` section or supported Loki configuration files. Loki does not start Storybook or simulator and emulator servers, so they need to be running before tests. Documented animation limitations include looping requestAnimationFrame animations, GIFs, SVG animations, native Lottie animations, and React Native Animated.
Roborazzi
Roborazzi is an open-source library for screenshot testing in JVM-based Android integration tests. It records images, compares them with saved baselines and can fail verification when a screenshot differs. Through Robolectric, Android tests can run as JVM tests without a device or emulator. Capture options include Jetpack Compose nodes, Espresso views, Android Views and Compose lambdas; the library can also create screenshot tests for Compose previews and common Compose Multiplatform previews. It supports Compose Desktop and JVM preview tests, rendering images with the host’s Skia, while Compose Multiplatform iOS support is experimental. Gradle tasks cover recording, comparison and verification, and the project documents GitHub Actions workflows for screenshot checks in CI. An IDE plugin shows test screenshots in IntelliJ IDEA and Android Studio. Optional capabilities include UI-tree JSON output, accessibility checks, animated GIF or APNG capture, and experimental AI image assertions. Roborazzi is free, available on Maven Central and licensed under Apache License 2.0. It has no direct Bazel support, and graphics may render differently across operating systems.