• Stars
    star
    138
  • Rank 255,821 (Top 6 %)
  • Language
    TypeScript
  • Created about 1 year ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SSDiff

The open-source tool for pixel-perfect website migrations

Diff

Features

  • Outputs a folder showing visual differences comparing images
  • Out of the box feature to compare different sized screenshots by resizing them
  • Debug logging and output logging can be enabled by config
  • Configurable for multiple use cases
  • Helps in determining the most different pathnames by providing a sorted result map as output

Use Cases:

  • Compare screenshots to achieve a pixel-perfect match
  • Ideal for website migrations to a new stack
  • Spot differences in similar-looking web pages
  • Open-source and customizable

Installation

npm install ssdiff

Config

    export interface SSDiffConfig {
      url1: string; // url of domain1
      url2: string; // url of domain2
      pathnames: string[]; // array of pathnames to be compared
      browserConfig?: BrowserConfig; // config passed to puppeteer.launch
      screenshotConfig?: ScreenshotConfig; // config passed to page.screenshot
      pageConfig?: PageConfig; // config passed to page.goto
      failInCaseOfDifferentSize?: boolean; // if true, the comparison will fail if the images are of different sizes
      debug?: boolean; // if true, debug logs will be printed
      outputFile?: boolean; // if true, output logs will be printed
    }

Dependencies

  1. The tool uses puppeteer to open browser in headless mode visit pages and take screenshots.
  2. It uses pixelmatch to compare the screenshots and return a result map.
  3. It uses sharp to resize the screenshots, in case they are of different sizes.

Local setup

  1. Clone the repo
  2. npm install
  3. npm run dev - to run ts scripts with runtime build using ts-node
  4. Modify and test example based on the changes made in src/ folder.

Contribution guide

  1. Create an issue or assign yourself an existing one
  2. Fork the repo
  3. git checkout -b branch_name
  4. Make the changes
  5. run linting and formatting scripts
  6. Make a PR and associate it with the issue

Example usage

An example can be found here

Example Flow

Flow

Basic architecture of the tool

Architecture

More Repositories

1

qwik

Instant-loading web apps, without effort
TypeScript
20,052
star
2

gpt-crawler

Crawl a site to generate knowledge files to create your own custom GPT from a URL
TypeScript
17,358
star
3

partytown

Relocate resource intensive third-party scripts off of the main thread and into a web worker. 🎉
TypeScript
12,577
star
4

mitosis

Write components once, run everywhere. Compiles to React, Vue, Qwik, Solid, Angular, Svelte, and more.
TypeScript
10,802
star
5

builder

Drag and drop headless CMS for React, Vue, Svelte, Qwik, and more
TypeScript
6,567
star
6

ai-shell

A CLI that converts natural language to shell commands.
TypeScript
3,531
star
7

figma-html

Builder.io for Figma: AI generation, export to code, import from web
TypeScript
2,917
star
8

gpt-assistant

An experiment to give an autonomous GPT agent access to a browser and have it accomplish tasks
TypeScript
468
star
9

framework-benchmarks

Test each framework for it's performance cost
TypeScript
458
star
10

hydration-overlay

Overlay for hydration errors with explicit diff between renders.
CSS
430
star
11

nextjs-shopify

The ultimate starter for headless Shopify stores
TypeScript
415
star
12

vscode

Builder.io for VSCode - turn designs into code!
TypeScript
168
star
13

build.

A new visual programming language that reads and writes Typescript and Javascript
TypeScript
127
star
14

builder-shopify-hydrogen

Builder.io Visual CMS + page builder example with Shopify Hydrogen
TypeScript
75
star
15

gatsby-starter-builder

Gatsby example with drag and drop page building
JavaScript
66
star
16

snap

The fastest web framework
TypeScript
50
star
17

nextjs-edge-personalization-ab-testing

High performance personalization & a/b testing example using Next.js, Edge Middleware, and Builder.io
TypeScript
50
star
18

ts-lite

Compiled TypeScript. Generates Go, Swift, Kotlin, WASM, Binary
JavaScript
48
star
19

gatsby-builder-shopify

A starter for Gatsby + Shopify + Builder.io
TypeScript
32
star
20

qwik-city-build

`@builder.io/qwik-city` build artifacts from https://github.com/organizations/BuilderIO/qwik
JavaScript
25
star
21

qwik-tw-vercel-starter-kit

A starter kit for Qwik on Vercel
TypeScript
17
star
22

nextjs-builder-edge-personalization

TypeScript
11
star
23

nextjs-builder-starter

TypeScript
10
star
24

demo-editor

JavaScript
10
star
25

edge-personalize

Personalize and a/b test your static pages at the edge. Static speed with dynamic optimizations!
TypeScript
9
star
26

headlessapp.store

TypeScript
8
star
27

react-design-system-demo

JavaScript
8
star
28

sfcc-composable-storefront-starter

SFCC + Builder.io Composable Storefront
JavaScript
7
star
29

qwik-city-e2e

Use to test Qwik City on each server
HTML
6
star
30

qwik-docs-es

TypeScript
6
star
31

qwik-build

Build artifacts from https://github.com/organizations/BuilderIO/qwik
JavaScript
6
star
32

perf-experiments

Performance experiments
Astro
6
star
33

http-debug-proxy

This project contains a set up to create a HTTP proxy for the https://cdn.builder.io/ endpoint.
JavaScript
6
star
34

this-package-uses-fetch

5
star
35

qwik-react-framer-motion

A demo for React Framer Motion inside a Qwik application
TypeScript
5
star
36

resumable-react-post

The code for the blog post: "Resumable React: How To Use React Inside Qwik"
TypeScript
5
star
37

builder-fiddle-demos

Demos of fun stuff for Builder fiddles
TypeScript
5
star
38

blog-example

Builder.io blog example
JavaScript
5
star
39

jsx-qwik-worker-post

A repo showing worker$
JavaScript
5
star
40

vcp-design-systems-examples

Starters for experimenting with VCP and different design systems
TypeScript
5
star
41

builder-qwik-example

An example project using Builder.io's drag and drop headless CMS with Qwik
TypeScript
4
star
42

nextjs-app-router-example

TypeScript
4
star
43

personalization-utils

TypeScript
3
star
44

mitosis-build

Build artifacts from https://github.com/BuilderIO/mitosis
3
star
45

qwik-create-cli-build

JavaScript
3
star
46

nextjs-elasticpath

TypeScript
2
star
47

kibocommerce-nextjs-starter

A KiboCommerce + Builder.io store built on NextJS
TypeScript
2
star
48

qwik-raw-data

1
star
49

qase-for-qwik

A demo repo to showcase Qwik
TypeScript
1
star
50

gatsby-builder-transform-images

JavaScript
1
star
51

block-publish

CLI tool to block directly using npm publish
JavaScript
1
star
52

qwik-docs

WIP Qwik-docs
JavaScript
1
star
53

builder-swift

Swift SDK for Builder.io
Swift
1
star
54

qwik-labs-build

Continues build artifacts
JavaScript
1
star