main 765151bbddbf cached
73 files
465.0 KB
268.7k tokens
30 symbols
1 requests
Download .txt
Showing preview only (491K chars total). Download the full file or copy to clipboard to get everything.
Repository: FRSOURCE/cypress-plugin-visual-regression-diff
Branch: main
Commit: 765151bbddbf
Files: 73
Total size: 465.0 KB

Directory structure:
gitextract_38i6esib/

├── .editorconfig
├── .github/
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .nvmrc
├── .release-please-manifest.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── eslint.config.mjs
├── examples/
│   ├── next/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── components/
│   │   │   ├── about-component.cy.tsx
│   │   │   └── about-component.tsx
│   │   ├── cypress/
│   │   │   ├── e2e/
│   │   │   │   └── app.cy.ts
│   │   │   ├── fixtures/
│   │   │   │   └── example.json
│   │   │   ├── support/
│   │   │   │   ├── commands.ts
│   │   │   │   ├── component-index.html
│   │   │   │   ├── component.ts
│   │   │   │   └── e2e.ts
│   │   │   └── tsconfig.json
│   │   ├── cypress.config.ts
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── _app.tsx
│   │   │   ├── about.tsx
│   │   │   └── index.tsx
│   │   ├── styles/
│   │   │   ├── Home.module.css
│   │   │   └── globals.css
│   │   └── tsconfig.json
│   └── webpack/
│       ├── .browserslistrc
│       ├── .gitignore
│       ├── README.md
│       ├── cypress/
│       │   ├── component/
│       │   │   └── HelloWorld.cy.ts
│       │   ├── e2e/
│       │   │   └── spec.cy.ts
│       │   └── support/
│       │       ├── commands.ts
│       │       ├── component-index.html
│       │       ├── component.ts
│       │       └── e2e.ts
│       ├── cypress.config.ts
│       ├── package.json
│       ├── public/
│       │   └── index.html
│       ├── src/
│       │   ├── App.vue
│       │   ├── components/
│       │   │   └── HelloWorld.vue
│       │   └── main.js
│       └── tsconfig.json
├── package.json
├── packages/
│   └── cypress-plugin-visual-regression-diff/
│       ├── .prettierignore
│       ├── CHANGELOG.md
│       ├── __tests__/
│       │   ├── fixtures/
│       │   │   └── prepare-screenshot-for-cleanup.spec.cy.js
│       │   └── mocks/
│       │       └── cypress.mock.ts
│       ├── package.json
│       ├── prettier.config.mjs
│       ├── src/
│       │   ├── __snapshots__/
│       │   │   ├── support.test.ts.snap
│       │   │   └── task.hook.test.ts.snap
│       │   ├── afterScreenshot.hook.test.ts
│       │   ├── afterScreenshot.hook.ts
│       │   ├── commands.ts
│       │   ├── constants.ts
│       │   ├── image.utils.ts
│       │   ├── plugins.test.ts
│       │   ├── plugins.ts
│       │   ├── screenshotPath.utils.ts
│       │   ├── support.test.ts
│       │   ├── support.ts
│       │   ├── task.hook.test.ts
│       │   ├── task.hook.ts
│       │   └── types.ts
│       ├── tsconfig.build.json
│       ├── tsconfig.json
│       └── vitest.config.ts
├── pnpm-workspace.yaml
├── release-please-config.json
└── renovate.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{js,json,yml}]
charset = utf-8
indent_style = space
indent_size = 2


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
  pull_request:
    branches:
      - main
  push:
    branches:
      - main

jobs:
  cache:
    name: CI cache
    runs-on: ubuntu-latest
    outputs:
      pnpm-cache: ${{ steps.vars.outputs.pnpm-cache }}
      key: ${{ steps.vars.outputs.key }}
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
      - id: vars
        run: |
          echo "pnpm-cache=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
          echo "key=${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}" >> $GITHUB_OUTPUT
      - name: Cache NPM and Cypress 📦
        uses: actions/cache@v4
        id: cache
        with:
          path: |
            ${{ steps.vars.outputs.pnpm-cache }}
            ~/.cache/Cypress
          key: ${{ steps.vars.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
            ${{ runner.os }}-pnpm-
      - run: pnpm install --frozen-lockfile --prefer-offline
        env:
          HUSKY: '0' # By default do not run HUSKY install

  lint:
    name: lint
    runs-on: ubuntu-latest
    needs: cache
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
      - name: Cache NPM and Cypress 📦
        uses: actions/cache@v4
        id: cache
        with:
          path: |
            ${{ needs.cache.outputs.pnpm-cache }}
            ~/.cache/Cypress
          key: ${{ needs.cache.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
            ${{ runner.os }}-pnpm-
      - run: pnpm install --frozen-lockfile --prefer-offline
        env:
          HUSKY: '0' # By default do not run HUSKY install
      - run: pnpm lint:ci
      - run: pnpm format:ci

  test:
    name: test
    runs-on: ubuntu-latest
    needs: cache
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
      - name: Cache NPM and Cypress 📦
        uses: actions/cache@v4
        id: cache
        with:
          path: |
            ${{ needs.cache.outputs.pnpm-cache }}
            ~/.cache/Cypress
          key: ${{ needs.cache.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
            ${{ runner.os }}-pnpm-
      - run: pnpm install --frozen-lockfile --prefer-offline
        env:
          HUSKY: '0' # By default do not run HUSKY install
      - run: pnpm --filter cypress-plugin-visual-regression-diff -r build
      - name: Test e2e
        run: pnpm test:e2e:ci
      - name: Test component-testing
        run: pnpm test:ct:ci
      - uses: actions/upload-artifact@v4
        with:
          name: test
          path: |
            examples/next/**/*.png
            examples/next/**/*.jpg
            examples/next/**/*.jpeg

  test-integration-coverage:
    name: test-integration-coverage
    runs-on: ubuntu-latest
    needs: cache
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
      - name: Cache NPM and Cypress 📦
        uses: actions/cache@v4
        id: cache
        with:
          path: |
            ${{ needs.cache.outputs.pnpm-cache }}
            ~/.cache/Cypress
          key: ${{ needs.cache.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
            ${{ runner.os }}-pnpm-
      - run: pnpm install --frozen-lockfile --prefer-offline
        env:
          HUSKY: '0' # By default do not run HUSKY install
      - name: Test integration (with coverage) and upload to CodeClimate
        if: ${{ github.ref == 'refs/heads/main' }}
        uses: paambaati/codeclimate-action@v4.0.0
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        with:
          debug: true
          coverageCommand: pnpm test:integration:ci
          coverageLocations: |
            ${{github.workspace}}/packages/*/coverage/lcov.info:lcov
      - name: Test integration (with coverage)
        if: ${{ github.ref != 'refs/heads/main' }}
        run: pnpm test:integration:ci

  prepare-release:
    name: detect changes, bump package versions, generate changelog and commit it to main branch
    runs-on: ubuntu-latest
    needs: [cache, lint, test, test-integration-coverage]
    if: ${{ github.actor != 'dependabot[bot]' && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
    permissions:
      contents: write
      pull-requests: write
    outputs:
      releases_created: ${{ steps.release.outputs.releases_created }}
    steps:
      - uses: google-github-actions/release-please-action@v3.7.13
        id: release
        with:
          command: manifest
          default-branch: main
          monorepo-tags: true
      
  build-and-release:
    name: build and release
    runs-on: ubuntu-latest
    needs: [cache, prepare-release]
    if: needs.prepare-release.outputs.releases_created
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
          registry-url: 'https://registry.npmjs.org'
      - name: Cache NPM and Cypress 📦
        uses: actions/cache@v4
        id: cache
        with:
          path: |
            ${{ needs.cache.outputs.pnpm-cache }}
            ~/.cache/Cypress
          key: ${{ needs.cache.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
            ${{ runner.os }}-pnpm-
      - run: pnpm install --frozen-lockfile --prefer-offline
        env:
          HUSKY: '0' # By default do not run HUSKY install
      - name: Build packages to get cross-references working 🔧
        run: pnpm build
      - name: Release package
        run: pnpm publish -r
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Yarn
.yarn/*
*/.yarn
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port


================================================
FILE: .nvmrc
================================================
20.17.0


================================================
FILE: .release-please-manifest.json
================================================
{
  "packages/cypress-plugin-visual-regression-diff": "3.3.10"
}


================================================
FILE: CHANGELOG.md
================================================
## [3.3.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.8...v3.3.9) (2023-06-12)

## [3.3.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.7...v3.3.8) (2023-06-05)

## [3.3.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.6...v3.3.7) (2023-06-05)

## [3.3.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.5...v3.3.6) (2023-06-05)

## [3.3.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.4...v3.3.5) (2023-05-29)

## [3.3.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.3...v3.3.4) (2023-05-29)

## [3.3.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.2...v3.3.3) (2023-05-29)

## [3.3.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.1...v3.3.2) (2023-05-29)

## [3.3.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.0...v3.3.1) (2023-05-21)


### Bug Fixes

* **deps:** update all non-major dependency bump ([#228](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/228)) ([845590e](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/845590e25edc8c0372fcf25333454ec03e5f167b))

# [3.3.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.15...v3.3.0) (2023-05-21)


### Bug Fixes

* **deps:** update dependency pngjs to v7 ([#215](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/215)) ([af71297](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/af71297f3d2ab180798bb64a46145919a6924c74))


### Features

* createMissingImages option ([#222](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/222)) ([2aef358](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/2aef35840e00299783ddede6f240c6005ac5bfcb)), closes [#204](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/204)
* separate versioning for images ([#221](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/221)) ([b2a7434](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/b2a74340fc2616aa16d54a4dfbd43ddbfdd24eb1)), closes [#197](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/197)

## [3.2.15](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.14...v3.2.15) (2023-05-21)

## [3.2.14](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.13...v3.2.14) (2023-03-26)

## [3.2.13](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.12...v3.2.13) (2023-03-26)

## [3.2.12](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.11...v3.2.12) (2023-03-26)


### Bug Fixes

* import meta-png cjs dependency ([#209](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/209)) ([41aeee5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/41aeee52c362e4a1817a9e364963c4aff1407d0a)), closes [#207](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/207)

## [3.2.11](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.10...v3.2.11) (2023-03-26)


### Bug Fixes

* treat maxDiffThreshold 0 as valid value ([f4d3ec9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/f4d3ec946547d648d1ec8ea9ccf9369540255adf))

## [3.2.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.9...v3.2.10) (2023-03-26)


### Bug Fixes

* add missing forceDeviceScaleFactor option ([ba7d2f1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/ba7d2f15b57390bb1ef69de6f7ed979438155444))

## [3.2.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.8...v3.2.9) (2023-03-26)

## [3.2.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.7...v3.2.8) (2022-12-18)

## [3.2.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.6...v3.2.7) (2022-12-14)

## [3.2.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.5...v3.2.6) (2022-12-11)

## [3.2.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.4...v3.2.5) (2022-12-09)

## [3.2.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.3...v3.2.4) (2022-12-04)

## [3.2.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.2...v3.2.3) (2022-11-30)


### Bug Fixes

* **deps:** update all non-major dependencies ([#191](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/191)) ([26e6d8b](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/26e6d8bce436243020dbc645e32d70fbdaca993b))

## [3.2.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.1...v3.2.2) (2022-11-29)


### Bug Fixes

* return launchOptions so they are applied ([#186](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/186)) ([b1b9056](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/b1b905613c899af6d14af920e34290533c26c545))

## [3.2.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.2.0...v3.2.1) (2022-11-29)


### Bug Fixes

* update images via GUI in Cypress 11 ([#193](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/193)) ([bdebca2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/bdebca28aea1dea63473243679a5a71e6b21f165)), closes [#187](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/187)

# [3.2.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.7...v3.2.0) (2022-11-29)


### Features

* support Cypress 11 ([#192](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/192)) ([7bd1a24](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/7bd1a24bcc5f38531d91845c141dd9a5713dec7e)), closes [#187](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/187)

## [3.1.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.6...v3.1.7) (2022-11-23)

## [3.1.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.5...v3.1.6) (2022-11-19)

## [3.1.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.4...v3.1.5) (2022-11-12)

## [3.1.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.3...v3.1.4) (2022-11-10)

## [3.1.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.2...v3.1.3) (2022-11-09)

## [3.1.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.1...v3.1.2) (2022-11-07)


### Bug Fixes

* **deps:** update dependency sharp to v0.31.2 ([#174](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/174)) ([c2bce9d](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/c2bce9dda3a70635270375f99c17d458f4cf39b8))

## [3.1.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.1.0...v3.1.1) (2022-11-04)


### Bug Fixes

* new image prefix starts at -1 ([#172](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/172)) ([8279208](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/8279208c2ec6dbbbf7dd846463f684f19dfe0df6))

# [3.1.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.0.4...v3.1.0) (2022-11-03)


### Features

* support Cypress retries functionality ([#171](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/171)) ([7d7d010](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/7d7d010938ee124e694e8cf0270aa99c89db59df)), closes [#168](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/168)

## [3.0.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.0.3...v3.0.4) (2022-11-03)


### Bug Fixes

* typings for older typescript ([#170](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/170)) ([96499ec](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/96499ecc2959bab8c39b599ba7eb87fbd79ceec3)), closes [#167](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/167)

## [3.0.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.0.2...v3.0.3) (2022-11-01)


### Bug Fixes

* ts declaration generation ([1a1e0cc](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/1a1e0ccd4c442d3e4d45f4d899139a08963e0c85))

## [3.0.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.0.1...v3.0.2) (2022-10-27)


### Bug Fixes

* **deps:** update all non-major dependencies ([#165](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/165)) ([602640f](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/602640fcca6e8173930efa116244258549aa5264))

## [3.0.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.0.0...v3.0.1) (2022-10-26)


### Bug Fixes

* reset name cache after tests run ([bfbf138](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/bfbf138fa52de06072db32a0181821b56ca5230f))

# [3.0.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.12...v3.0.0) (2022-10-26)


### Bug Fixes

* security vulnerability ([d6f849c](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/d6f849cb017e452d9f121866a6429d4bee4b5f18))


### Features

* add matchAgainstPath option ([#146](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/146)) ([7a5e3a8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/7a5e3a8ec5aa766e38ee372e11a6d1c155105126)), closes [#88](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/88)
* auto clean unused files ([#124](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/124)) ([38679a7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/38679a730edc4083b4bc751b19bc161bbb72d159)), closes [#118](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/118)
* introduce imagesPath option ([#152](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/152)) ([961e137](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/961e137099ba22aa9f0b6d36e6e73d495196a764)), closes [#147](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/147)


### BREAKING CHANGES

* deprecate imagesDir option in favor of imagesPath - see docs for additional information
* To use autocleanup feature you need to update all of the screenshots, best do it by running your test suite with cypress env 'pluginVisualRegressionUpdateImages' set to true.
* matchImage returns object containing comparison details from now on (previously was returning subject element from a chain)

## [2.3.12](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.11...v2.3.12) (2022-10-22)

## [2.3.11](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.10...v2.3.11) (2022-10-19)

## [2.3.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.9...v2.3.10) (2022-10-15)

## [2.3.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.8...v2.3.9) (2022-10-14)

## [2.3.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.7...v2.3.8) (2022-10-12)

## [2.3.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.6...v2.3.7) (2022-10-12)

## [2.3.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.5...v2.3.6) (2022-10-12)


### Bug Fixes

* **deps:** update dependency @frsource/base64 to v1.0.3 ([#144](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/144)) ([09ecbd8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/09ecbd81c9978161de2a782cf3bc735ce8d6ca3f))

## [2.3.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.4...v2.3.5) (2022-10-10)

## [2.3.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.3...v2.3.4) (2022-10-10)

## [2.3.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.2...v2.3.3) (2022-10-10)

## [2.3.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.1...v2.3.2) (2022-10-09)

## [2.3.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.3.0...v2.3.1) (2022-10-06)


### Bug Fixes

* security vulnerabilities ([d0bda44](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/d0bda44d3055cd578381406a06607bfba48ff447))

# [2.3.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.12...v2.3.0) (2022-10-06)


### Features

* show comparison for successful tests ([#137](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/137)) ([c09bab3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/c09bab3ef805de24fc7cbcc8c738137c35e3fe18)), closes [#104](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/104)

## [2.2.12](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.11...v2.2.12) (2022-10-06)


### Bug Fixes

* **deps:** update dependency sharp to v0.31.1 ([#132](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/132)) ([15f0f5d](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/15f0f5d2824cba32d4611289442abd637d8438f5))

## [2.2.11](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.10...v2.2.11) (2022-09-28)


### Bug Fixes

* **deps:** update dependency vue to v3.2.40 ([#131](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/131)) ([537fd16](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/537fd16c4507c394998c0c7f0da7cff18e2d35c5))

## [2.2.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.9...v2.2.10) (2022-09-28)

## [2.2.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.8...v2.2.9) (2022-09-27)

## [2.2.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.7...v2.2.8) (2022-09-26)

## [2.2.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.6...v2.2.7) (2022-09-26)

## [2.2.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.5...v2.2.6) (2022-09-25)


### Bug Fixes

* remove alias leftovers from dist bundles ([407ce79](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/407ce79c6a6e00b509fd504f4cf615b3e3c504c3))

## [2.2.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.4...v2.2.5) (2022-09-24)

## [2.2.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.3...v2.2.4) (2022-09-24)

## [2.2.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.2...v2.2.3) (2022-09-24)

## [2.2.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.1...v2.2.2) (2022-09-24)

## [2.2.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.2.0...v2.2.1) (2022-09-24)

# [2.2.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.1.0...v2.2.0) (2022-09-23)


### Features

* migrate to @frsource/base64 package ([e4f3a14](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/e4f3a14575648b76d4f41eeb5984b853b968c974))

# [2.1.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.0.3...v2.1.0) (2022-09-23)


### Features

* provide modern exports ([5c911a1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/5c911a113624cea79e8b09eba2e643954a04a057))

## [2.0.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.0.2...v2.0.3) (2022-09-23)

## [2.0.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.0.1...v2.0.2) (2022-09-22)

## [2.0.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v2.0.0...v2.0.1) (2022-09-17)

# [2.0.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.21...v2.0.0) (2022-09-15)


### Features

* img diff when resolution differs ([#108](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/108)) ([c8a5044](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/c8a504480d09f6ffd34321163bf14b1a2f0e7bb0)), closes [#94](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/94)


### BREAKING CHANGES

* different resolution doesn't fail test immediately - img diff is being done

## [1.9.21](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.20...v1.9.21) (2022-09-14)


### Bug Fixes

* btoa utf8 encoding/decoding error ([#114](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/114)) ([0137014](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/01370148094f3152a374f4e612e75ef5fd2bc3d8))

## [1.9.20](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.19...v1.9.20) (2022-09-13)

## [1.9.19](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.18...v1.9.19) (2022-09-12)

## [1.9.18](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.17...v1.9.18) (2022-09-09)

## [1.9.17](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.16...v1.9.17) (2022-09-08)


### Bug Fixes

* **deps:** update dependency vue to v3.2.39 ([#110](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/110)) ([8a7f055](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/8a7f0555b1d664b83c7de64d93796408646704eb))

## [1.9.16](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.15...v1.9.16) (2022-09-05)

## [1.9.15](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.14...v1.9.15) (2022-09-03)

## [1.9.14](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.13...v1.9.14) (2022-09-02)


### Bug Fixes

* image diff calculation ([529cb22](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/529cb22a22200af234bdbc1399b6f97880001d12)), closes [#107](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/107)

## [1.9.13](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.12...v1.9.13) (2022-08-31)


### Bug Fixes

* **deps:** update dependency vue to v3.2.38 ([#101](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/101)) ([e2d3c82](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/e2d3c823822ecb6738202599500435cf59f2f6d1))

## [1.9.12](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.11...v1.9.12) (2022-08-30)

## [1.9.11](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.10...v1.9.11) (2022-08-30)

## [1.9.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.9...v1.9.10) (2022-08-27)

## [1.9.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.8...v1.9.9) (2022-08-26)

## [1.9.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.7...v1.9.8) (2022-08-25)

## [1.9.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.6...v1.9.7) (2022-08-23)

## [1.9.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.5...v1.9.6) (2022-08-22)

## [1.9.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.4...v1.9.5) (2022-08-22)

## [1.9.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.3...v1.9.4) (2022-08-21)

## [1.9.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.2...v1.9.3) (2022-08-17)

## [1.9.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.1...v1.9.2) (2022-08-09)

## [1.9.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.9.0...v1.9.1) (2022-08-09)

# [1.9.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.10...v1.9.0) (2022-08-09)


### Features

* add title option to matchImage command ([#81](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/81)) ([4d03866](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/4d03866f7f171473b16b4a7c869fbca02d5f46d1))

## [1.8.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.9...v1.8.10) (2022-08-02)

## [1.8.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.8...v1.8.9) (2022-08-01)

## [1.8.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.7...v1.8.8) (2022-07-19)

## [1.8.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.6...v1.8.7) (2022-07-17)

## [1.8.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.5...v1.8.6) (2022-07-12)


### Bug Fixes

* **deps:** pin dependency vue to 3.2.37 ([#68](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/68)) ([d09a762](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/d09a762bbcf0f6e9bb886f80e4d01724bf0e3367))

## [1.8.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.4...v1.8.5) (2022-07-07)

## [1.8.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.3...v1.8.4) (2022-07-04)

## [1.8.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.2...v1.8.3) (2022-06-29)

## [1.8.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.1...v1.8.2) (2022-06-27)

## [1.8.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.8.0...v1.8.1) (2022-06-27)


### Bug Fixes

* remove automated screenshots update ([acb3ef0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/acb3ef08fb8ec5129bee9883431361dd804d23f3))

# [1.8.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.8...v1.8.0) (2022-06-27)


### Bug Fixes

* **deps:** update dependency move-file to v3 ([#62](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/62)) ([4f6eaf6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/4f6eaf64a0f3db6e54190ef7532059a451ad384f))


### Features

* make library cypress 10 compatible ([b26beb3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/b26beb391cf440d2d4b01261271b7acffa6f600e))
* make plugin Cypress 10 compatible ([a03a17d](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/a03a17d7295dd811969c10ad562dda26795fd8f2))

## [1.7.8](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.7...v1.7.8) (2022-06-24)

## [1.7.7](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.6...v1.7.7) (2022-06-24)

## [1.7.6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.5...v1.7.6) (2022-06-24)


### Bug Fixes

* **deps:** update dependency pixelmatch to v5.3.0 ([#55](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/55)) ([ca5d278](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/ca5d2784a5fffb60bebe7643f8beced6ad9979bd))

## [1.7.5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.4...v1.7.5) (2022-06-24)

## [1.7.4](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.3...v1.7.4) (2022-06-24)

## [1.7.3](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.2...v1.7.3) (2022-06-23)

## [1.7.2](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.1...v1.7.2) (2022-06-23)

## [1.7.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.7.0...v1.7.1) (2022-03-15)


### Bug Fixes

* sanitize screenshot filenames ([fc57380](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/fc57380d40e72eec51d5fdf2615226a358efa070))

# [1.7.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.6.0...v1.7.0) (2022-03-01)


### Features

* don't override screenshots if not needed ([9066017](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/90660179d05f4de1c803888fb66f8e1c240f7c37))

# [1.6.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.5.0...v1.6.0) (2022-02-25)


### Features

* show scrollbar for overflowing images ([de994b9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/de994b98ad3dea233aee70b0142992a309476e38))

# [1.5.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.4.0...v1.5.0) (2022-02-24)


### Features

* add forceDeviceFactor option ([8d69632](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/8d6963222f924d73fc0aed08adecdb361104c2dc))

# [1.4.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.3.1...v1.4.0) (2022-02-21)


### Features

* add possibility to change images dirname ([b831e94](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/b831e94677df906f0cbd889f7ce0994e1e8a7783))

## [1.3.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.3.0...v1.3.1) (2021-11-23)


### Bug Fixes

* create missing dirs when renaming screenshot files ([38e5ff5](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/38e5ff5d5f7c2a8d9b971deb13af821773815f66))

# [1.3.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.2.0...v1.3.0) (2021-11-09)


### Bug Fixes

* text overflowing when image is small ([3b04f8e](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/3b04f8e1782754c4c48e946ebdb2f43ccfec9461))


### Features

* externalize important APIs ([9f94086](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/9f9408657e7970bdad5dfc7a599943a34a779ab7))

# [1.2.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.1.0...v1.2.0) (2021-10-26)


### Features

* stop logging all of the tasks ([573e728](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/573e7282799c802b0f6e9ecbe66501d043745ac3))

# [1.1.0](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.0.1...v1.1.0) (2021-10-25)


### Features

* add queue flushing in after block ([70f828f](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/70f828ff68c4de276dd10c64ab61fece573d305f))

## [1.0.1](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v1.0.0...v1.0.1) (2021-10-25)


### Bug Fixes

* proper readme info ([dd87e19](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/dd87e19429fe232bd9027737ff7e218c52d8eb06))

# 1.0.0 (2021-10-25)


### Features

* add typings ([0a0e8e6](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/0a0e8e63ba1df0f95cf81ba6b0b34a095a0b69be))
* first implementation ([388cccf](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/388cccf5f033010e4de9f88294f5fca30c6d0cd1))


================================================
FILE: CONTRIBUTING.md
================================================
# @frsource/cypress-plugin-visual-regression-diff Contributing Guide

Hey! It’s really exciting for us to see your interest in contributing to this library. Before taking off with your work, please take a moment to read through these guidelines:

- [Code of Conduct](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/blob/master/CODE_OF_CONDUCT.md)
- [Questions?](#questions)
- [Reporting an issue or a feature request](#reporing-an-issue-or-a-feature-request)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Development Setup](#development-setup)

## Questions?

Don’t hesitate to ask a question directly on the [discussions board](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/discussions)!

## Reporting an issue or a feature request

- Please always use GitHub Issues tracker with [appropriate template](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FFRSOURCE%2Fcypress-plugin-visual-regression-diff%2Fissues%2Fnew%2Fchoose) to create a new issue or suggestion

## Pull Request Guidelines

- Check if there isn’t a similar PR already in the [GitHub Pull requests](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/pulls) - maybe somebody already has covered this topic?

- Checkout the master branch and (after you do your work) file a PR against it

- Read through the [development setup](#development-setup) to learn how to work with this project. Always make sure that `pnpm lint`, `pnpm build` and `pnpm test` pass

- Please use [conventional commits v1.0.0 style guide](https://www.conventionalcommits.org/en/v1.0.0/) for commits and PR names

- We have no preference about number of commits on the PR - they will be all squashed by GitHub while merging

- When creating a new feature/plugin/integration:

  - Make sure the feature is covered by tests
  - Provide a meaningful description. In most cases it would make sens to first open a issue with a suggestion, discuss about it and have it approved before working on it

- When fixing bug:
  - Try to cover the scenario with tests if possible
  - If an issue for this bug already exists, please reference it via (`Refs: #XYZ` - where `XYZ` is an issue number) at the very bottom of your commit message and PR description as proposed by [conventional commits v1.0.0 style guide](https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with-multi-paragraph-body-and-multiple-footers)
  - If there is no issue connected with the bug, please provide a detailed description of the problem in the PR. Live demo preferred ([look for the codeine example project in the bug issue template](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/blob/master/.github/ISSUE_TEMPLATE/bug_report.md))

## Development Setup

<!-- textlint-disable spelling -->

You will need [Node.js](https://nodejs.org/en/) **version 16+** and [pnpm](https://pnpm.io/installation).

<!-- textlint-enable -->

After cloning the repository, run:

```bash
pnpm i # installs the project dependencies
```

### Committing Changes

Commit messages should follow the [conventional commits v1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) so that changelogs can be automatically generated. Commit messages will be automatically validated upon commit.

### These npm scripts are available in the repo

When fired in the project root they will run corresponding actions in every nested package at once.

```bash
# build the project for NPM and example usage
$ pnpm build

# run tests once
$ pnpm test

# open cypress component runner from example directory
# requires plugin to be built first via `pnpm build`
$ pnpm test:ct

# open cypress e2e runner from example directory
# requires plugin to be built first via `pnpm build`
$ pnpm test:e2e

# run integration tests once and collect coverage
$ pnpm test:integration:coverage

# run integration tests in watch mode
$ pnpm test:integration:watch

# lint & try to autofix linting errors
$ pnpm fix:lint && pnpm format

# lint files
$ pnpm lint && pnpm format:ci
```

There are some other scripts available in the `scripts` section of the `package.json` file.

## Credits

Many thanks to all the people who have already contributed to @frsource/cypress-plugin-visual-regression-diff! ❤️


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 FRSOURCE - Let's shape your web

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
  <a href="https://www.npmjs.com/package/@frsource/cypress-plugin-visual-regression-diff">
    <img src="https://img.shields.io/npm/v/@frsource/cypress-plugin-visual-regression-diff.svg" alt="NPM version badge">
  </a>
  <a href="https://www.npmjs.com/package/@frsource/cypress-plugin-visual-regression-diff">
    <img src="https://img.shields.io/npm/dt/@frsource/cypress-plugin-visual-regression-diff.svg" alt="NPM total downloads badge">
  </a>
  <a href="https://codeclimate.com/github/FRSOURCE/cypress-plugin-visual-regression-diff/maintainability">
    <img src="https://api.codeclimate.com/v1/badges/b4f9a6e7b071771dd82f/maintainability.svg" alt="CodeClimate maintainability badge">
  </a>
  <a href="https://codeclimate.com/github/FRSOURCE/cypress-plugin-visual-regression-diff/test_coverage">
    <img src="https://api.codeclimate.com/v1/badges/b4f9a6e7b071771dd82f/test_coverage" />
  </a>
  <a href="https://github.com/semantic-release/semantic-release">
    <img src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg" alt="semantic-relase badge">
  </a>
  <a href="https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/blob/main/LICENSE">
    <img src="https://img.shields.io/github/license/FRSOURCE/cypress-plugin-visual-regression-diff.svg" alt="license MIT badge">
  </a>
</p>

<p align="center">
  <img src="https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/blob/main/assets/logo.svg" alt="Cypress Plugin Visual Regression Diff logo" height="120px"/>
</p>

<h1 align="center">Plugin for Cypress - Visual Regression Diff</h1>
<p align="center">Perform visual regression test with a nice GUI as help. 💅 <i>Only&nbsp;for&nbsp;Cypress!</i> Both e2e and component-testing compatible 💪</p>

<p align="center">
  <a href="#getting-started">Getting Started</a>
  ·
  <a href="#usage">Usage</a>
  ·
  <a href="#faq">FAQ</a>
  ·
  <a href="https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues">File an Issue</a>
  ·
  <a href="https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/discussions">Have a question or an idea?</a>
  <br>
</p>

<p align="center">
  <br>
  <i>Plugin for visual regression testing that provides smooth experience:
    <br>Specify threshold below which the test will fail.
    <br>Quickly preview old &amp; new screenshot directly in the Cypress UI.
    <br>Find visual changes using images diff.
    <br>Published as treeshakeable bundles, separate for JS ES5 or modern bundlers thanks to <a href="https://www.npmjs.com/package/microbundle">microbundle</a>.
    <br>Working with every bundler (tested on webpack, vite, rollup),
    <br>Provides proper typings as is written completely in <a href="https://www.typescriptlang.org">typescript</a>.</i>
  <br>
  <br>
</p>

![frsource-visual-testing-example](https://user-images.githubusercontent.com/10456649/191988386-2be2ea14-7b7a-4048-a14e-0cad8d21e214.gif)

## Getting started

### Installation

You can install this library using your favorite package manager:

```bash
# npm
npm install --save-dev @frsource/cypress-plugin-visual-regression-diff

# yarn
yarn add -D @frsource/cypress-plugin-visual-regression-diff

# pnpm
pnpm add -D @frsource/cypress-plugin-visual-regression-diff
```

Next, you need to import the library:

- first, in your support file (located by default in `cypress/support/index.js`):

```ts
// typescript / ES6
import "@frsource/cypress-plugin-visual-regression-diff";

// javascript
require("@frsource/cypress-plugin-visual-regression-diff");
```

- secondly:
  - (for Cypress 10.0+) in `cypress.config.js` (or `cypress.config.ts`):

```ts
// typescript / ES6
import { defineConfig } from "cypress";
import { initPlugin } from "@frsource/cypress-plugin-visual-regression-diff/plugins";

export default defineConfig({
  // initPlugin must be called in the section where it is used: e2e or component
  e2e: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
  },
  component: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
  },
});
```

- (for Cypress <10.0) in your plugins file (located by default in `cypress/plugins/index.js`):

```ts
// typescript / ES6
import { initPlugin } from "@frsource/cypress-plugin-visual-regression-diff/plugins";

export default function (
  on: Cypress.PluginEvents,
  config: Cypress.PluginConfigOptions
) {
  initPlugin(on, config);

  return config;
}

// javascript
const {
  initPlugin,
} = require("@frsource/cypress-plugin-visual-regression-diff/plugins");

module.exports = function (on, config) {
  initPlugin(on, config);

  return config;
};
```

That's it - now let's see how to use the library in [usage section](#usage).

## Usage

Once installed, the library might be used by writing in your test:

```ts
cy.get(".an-element-of-your-choice").matchImage();
```

Or, if you would like to make a screenshot of whole document:

```ts
cy.matchImage();
```

`matchImage` command will do a screenshot and compare it with image from a previous run. In case of regression the test will fail and you'll get a "See comparison" button to see what's a root of a problem.

## Example

Still got troubles with installation? Have a look at [examples directory of this repo](./examples) to see how this plugin can be used in e2e or component-testing Cypress environment within your project.

## Automatic clean up of unused images

It's useful to remove screenshots generated by the visual regression plugin that are not used by any test anymore.
Enable this feature via env variable and enjoy freed up storage space 🚀:

```bash
npx cypress run --env "pluginVisualRegressionCleanupUnusedImages=true"
```

## Configuration

Configure the plugin:

- by passing in configuration as an argument to `matchImage` command:

```ts
cy.matchImage({
  // screenshot configuration, passed directly to the the Cypress screenshot method: https://docs.cypress.io/api/cypress-api/screenshot-api#Arguments
  // default: { }
  screenshotConfig: {
    blackout: ['.element-to-be-blackouted']
  },
  // pixelmatch options, see: https://www.npmjs.com/package/pixelmatch#pixelmatchimg1-img2-output-width-height-options
  // default: { includeAA: true }
  diffConfig: {
    threshold: 0.01,
  },
  // whether to create missing baseline images automatically
  // default: true
  createMissingImages: false,
  // whether to update images automatically, without making a diff - useful for CI
  // default: false
  updateImages: true,
  // directory path in which screenshot images will be stored
  // relative path are resolved against project root
  // absolute paths (both on unix and windows OS) supported
  // path separators will be normalised by the plugin depending on OS, you should always use / as path separator, e.g.: C:/my-directory/nested for windows-like drive notation
  // There are one special variable available to be used in the path:
  // - {spec_path} - relative path leading from project root to the current spec file directory (e.g. `/src/components/my-tested-component`)
  // default: '{spec_path}/__image_snapshots__'
  imagesPath: 'this-might-be-your-custom/maybe-nested-directory',
  // maximum threshold above which the test should fail
  // default: 0.01
  maxDiffThreshold: 0.1,
  // forces scale factor to be set as value "1"
  // helps with screenshots being scaled 2x on high-density screens like Mac Retina
  // default: true
  forceDeviceScaleFactor: false,
  // title used for naming the image file
  // default: Cypress.currentTest.titlePath (your test title)
  title: `${Cypress.currentTest.titlePath.join(' ')} (${Cypress.browser.displayName})`,
  // pass a path to custom image that should be used for comparison
  // instead of checking against the image from previous run
  // default: undefined
  matchAgainstPath: '/path/to/reference-image.png'
})
```

- via [global env configuration](https://docs.cypress.io/guides/guides/environment-variables#Setting). Environment variable names are the same as keys of the configuration object above, but with added `pluginVisualRegression` prefix, e.g.:

```bash
npx cypress run --env "pluginVisualRegressionUpdateImages=true,pluginVisualRegressionDiffConfig={\"threshold\":0.01}"
```

```ts
// cypress.config.ts
import { defineConfig } from "cypress";

export default defineConfig({
  env: {
    pluginVisualRegressionUpdateImages: true,
    pluginVisualRegressionDiffConfig: { threshold: 0.01 },
  },
});
```

```json
// cypress.env.json (https://docs.cypress.io/guides/guides/environment-variables#Option-2-cypress-env-json)
{
  "pluginVisualRegressionUpdateImages": true,
  "pluginVisualRegressionDiffConfig": { "threshold": 0.01 }
}
```

For more ways of setting environment variables [take a look here](https://docs.cypress.io/guides/guides/environment-variables#Setting).

## FAQ

<details><summary>Why screenshots doesn't conform to the `viewport` set in my Cypress configuration?</summary>

Screenshots in Cypress do not scale to the viewport size by default. You can change this behavior:

- globally, by changing default screenshot configuration: <code>Cypress.Screenshot.defaults({ capture: 'viewport' });</code>
- locally, by passing screenshot configuration directly to the <code>.matchImage</code> command: <code>cy.matchImage({ screenshotConfig: { capture: 'viewport' } });</code>

</details>

<details><summary>I've upgraded version of this plugin and all on my baseline images has been automatically updated. Why?</summary>

Sometimes we need to do a breaking change in image comparison or image generation algorithms. To provide you with the easiest upgrade path - the plugin updates your baseline images automatically. Just commit them to your repository after the plugin upgrade and you are good to go!

</details>

## Questions

Don’t hesitate to ask a question directly on the [discussions board](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/discussions)!

## Changelog

Changes for every release are documented in the [release notes](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/releases) and [CHANGELOG files of every package](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/tree/main/packages).

## License

[MIT](https://opensource.org/licenses/MIT)

Copyright (c) 2021-present, Jakub FRS Freisler, [FRSOURCE](https://www.frsource.org/)

<p align="center">
<a href="https://www.frsource.org/" title="Click to visit FRSOURCE page!">
<img src="https://www.frsource.org/logo.jpg" alt="FRSOURCE logo" height="60px"/>
</a>
</p>


================================================
FILE: eslint.config.mjs
================================================
import { typescript, javascript } from '@frsource/eslint-config';
import globals from 'globals';
import cypress from 'eslint-plugin-cypress/flat'

/** @type {import("eslint").Linter.Config[]} */
export default [
  ...javascript,
  ...typescript,
  { ignores: ['**/dist', '**/coverage', '**/node_modules'] },
  { rules: { '@typescript-eslint/no-invalid-void-type': 'off' } },
  {
    plugins: { cypress },
    files: ['examples/*/cypress/**', 'packages/*/src/**'],
    languageOptions: {
      globals: {
        ...globals.es2021,
        ...globals.node,
        ...cypress.globals,
      },
    },
  },
];


================================================
FILE: examples/next/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# we do not want to commit local screenshot files
# as they might be different on different OSes
**/__image_snapshots_local__

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

# cypress
/cypress/screenshots
/cypress/videos


================================================
FILE: examples/next/README.md
================================================
# Next.js + Cypress + @frsource/cypress-plugin-visual-regression-diff

This example shows how to configure @frsource/cypress-plugin-visual-regression-diff to work with Cypress & Next.js.

## Project setup

```bash
pnpm install
```

### Run end-to-end tests

> Important - remember to run `pnpm && pnpm build` command in this repo's root directory before starting e2e tests.

```bash
pnpm e2e
```

### Run component tests

> Important - remember to run `pnpm && pnpm build` command in this repo's root directory before starting e2e tests.

```bash
pnpm component
```

### Compiles and hot-reloads for development

```bash
pnpm dev
```

### Compiles and minifies for production

```bash
pnpm build
```

## Credits

Created using [Next.js Cypress template](https://nextjs.org/docs/pages/building-your-application/optimizing/testing#cypress).


================================================
FILE: examples/next/components/about-component.cy.tsx
================================================
import AboutComponent from './about-component'
// Disable ESLint to prevent failing linting inside the Next.js repo.
// If you're using ESLint on your project, we recommend installing the ESLint Cypress plugin instead:
// https://github.com/cypress-io/eslint-plugin-cypress

describe('<AboutComponent />', () => {
  it('should render and display expected content', () => {
    cy.mount(<AboutComponent />).then(() => {
      cy.matchImage()
      cy.get('h1').matchImage()
    })
  })
})

// Prevent TypeScript from reading file as legacy script
export {}


================================================
FILE: examples/next/components/about-component.tsx
================================================
import Link from 'next/link'
import React from 'react'
import styles from '../styles/Home.module.css'

export default function AboutComponent() {
  return (
    <>
      <h1>About Page</h1>
      <p className={styles.description}>
        <Link href="/">&larr; Go Back</Link>
      </p>
    </>
  )
}


================================================
FILE: examples/next/cypress/e2e/app.cy.ts
================================================
describe("Navigation", () => {
  it("should navigate to the about page", () => {
    cy.visit("http://localhost:3000/");

    cy.get('a[href*="about"]').click();

    cy.url().should("include", "/about");

    cy.matchImage().then(({ imgNewPath }) => {
      // match against image from custom path
      cy.matchImage({ matchAgainstPath: imgNewPath });
    });
  });
});

export {};


================================================
FILE: examples/next/cypress/fixtures/example.json
================================================
{
  "name": "Using fixtures to represent data",
  "email": "hello@cypress.io",
  "body": "Fixtures are a great way to mock data for responses to routes"
}


================================================
FILE: examples/next/cypress/support/commands.ts
================================================
/// <reference types="cypress" />
// ***********************************************
// This example commands.ts shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
//
// declare global {
//   namespace Cypress {
//     interface Chainable {
//       login(email: string, password: string): Chainable<void>
//       drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
//       dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
//       visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>
//     }
//   }
// }

import "@frsource/cypress-plugin-visual-regression-diff/dist/support";

// Prevent TypeScript from reading file as legacy script
export {};


================================================
FILE: examples/next/cypress/support/component-index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <title>Components App</title>
    <!-- Used by Next.js to inject CSS. -->
    <div id="__next_css__DO_NOT_USE__"></div>
  </head>
  <body>
    <div data-cy-root></div>
  </body>
</html>


================================================
FILE: examples/next/cypress/support/component.ts
================================================
// ***********************************************************
// This example support/component.ts is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************

// Import commands.js using ES2015 syntax:
import "./commands";

// Alternatively you can use CommonJS syntax:
// require('./commands')

import { mount } from "cypress/react18";

// Augment the Cypress namespace to include type definitions for
// your custom command.
// Alternatively, can be defined in cypress/support/component.d.ts
// with a <reference path="./component" /> at the top of your spec.
declare global {
  // eslint-disable-next-line @typescript-eslint/no-namespace
  namespace Cypress {
    interface Chainable {
      mount: typeof mount;
    }
  }
}

Cypress.Commands.add("mount", mount);

// Example use:
// cy.mount(<MyComponent />)


================================================
FILE: examples/next/cypress/support/e2e.ts
================================================
// ***********************************************************
// This example support/e2e.ts is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************

// Import commands.js using ES2015 syntax:
import './commands'

// Alternatively you can use CommonJS syntax:
// require('./commands')


================================================
FILE: examples/next/cypress/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "lib": ["es5", "dom"],
    "types": ["cypress", "node"]
  },
  "include": ["**/*.ts"]
}


================================================
FILE: examples/next/cypress.config.ts
================================================
import { defineConfig } from "cypress";
import { initPlugin } from "@frsource/cypress-plugin-visual-regression-diff/plugins";

export default defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
    baseUrl: "http://localhost:3000",
  },
  component: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
    devServer: {
      framework: "next",
      bundler: "webpack",
    },
  },
});


================================================
FILE: examples/next/package.json
================================================
{
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "cypress": "cypress open --env \"pluginVisualRegressionUpdateImages=true,pluginVisualRegressionImagesPath={spec_path}/__image_snapshots_local__\"",
    "cypress:ci": "cypress run --env \"pluginVisualRegressionUpdateImages=true\"",
    "test:e2e": "start-server-and-test dev http://localhost:3000 \"pnpm cypress --e2e\"",
    "test:e2e:ci": "start-server-and-test dev http://localhost:3000 \"pnpm cypress:ci --e2e\"",
    "test:ct": "start-server-and-test dev http://localhost:3000 \"pnpm cypress --component\"",
    "test:ct:ci": "start-server-and-test dev http://localhost:3000 \"pnpm cypress:ci --component\""
  },
  "dependencies": {
    "next": "latest",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  },
  "devDependencies": {
    "@frsource/cypress-plugin-visual-regression-diff": "workspace:*",
    "@types/node": "18.0.6",
    "@types/react": "18.0.15",
    "@types/react-dom": "18.0.6",
    "cypress": "12.12.0",
    "start-server-and-test": "1.15.2",
    "typescript": "4.7.4"
  }
}


================================================
FILE: examples/next/pages/_app.tsx
================================================
import type { AppProps } from 'next/app'
import '../styles/globals.css'

function MyApp({ Component, pageProps }: AppProps) {
  return <Component {...pageProps} />
}

export default MyApp


================================================
FILE: examples/next/pages/about.tsx
================================================
import AboutComponent from '../components/about-component'
import styles from '../styles/Home.module.css'

export default function About() {
  return (
    <div className={styles.container}>
      <main className={styles.main}>
        <AboutComponent />
      </main>
    </div>
  )
}


================================================
FILE: examples/next/pages/index.tsx
================================================
import Head from 'next/head'
import Image from 'next/image'
import Link from 'next/link'
import styles from '../styles/Home.module.css'

export default function Home() {
  return (
    <div className={styles.container}>
      <Head>
        <title>Create Next App</title>
        <meta name="description" content="Generated by create next app" />
        <link rel="icon" href="/favicon.ico" />
      </Head>

      <main className={styles.main}>
        <h1 className={styles.title}>
          Welcome to <a href="https://nextjs.org">Next.js!</a>
        </h1>

        <p className={styles.description}>
          Get started by editing{' '}
          <code className={styles.code}>pages/index.js</code>
        </p>

        <div className={styles.grid}>
          <Link href="/about" className={styles.card}>
            <h2>About Page &rarr;</h2>
            <p>Cypress will test if this link is working.</p>
          </Link>

          <a href="https://nextjs.org/docs" className={styles.card}>
            <h2>Documentation &rarr;</h2>
            <p>Find in-depth information about Next.js features and API.</p>
          </a>

          <a href="https://nextjs.org/learn" className={styles.card}>
            <h2>Learn &rarr;</h2>
            <p>Learn about Next.js in an interactive course with quizzes!</p>
          </a>

          <a
            href="https://github.com/vercel/next.js/tree/canary/examples"
            className={styles.card}
          >
            <h2>Examples &rarr;</h2>
            <p>Discover and deploy boilerplate example Next.js projects.</p>
          </a>

          <a
            href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
            target="_blank"
            rel="noopener noreferrer"
            className={styles.card}
          >
            <h2>Deploy &rarr;</h2>
            <p>
              Instantly deploy your Next.js site to a public URL with Vercel.
            </p>
          </a>
        </div>
      </main>

      <footer className={styles.footer}>
        <a
          href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
          target="_blank"
          rel="noopener noreferrer"
        >
          Powered by{' '}
          <span className={styles.logo}>
            <Image src="/vercel.svg" alt="Vercel Logo" width={72} height={16} />
          </span>
        </a>
      </footer>
    </div>
  )
}


================================================
FILE: examples/next/styles/Home.module.css
================================================
.container {
  min-height: 100vh;
  padding: 0 0.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.main {
  padding: 5rem 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.footer {
  width: 100%;
  height: 100px;
  border-top: 1px solid #eaeaea;
  display: flex;
  justify-content: center;
  align-items: center;
}

.footer a {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-grow: 1;
}

.title a {
  color: #0070f3;
  text-decoration: none;
}

.title a:hover,
.title a:focus,
.title a:active {
  text-decoration: underline;
}

.title {
  margin: 0;
  line-height: 1.15;
  font-size: 4rem;
}

.title,
.description {
  text-align: center;
}

.description {
  line-height: 1.5;
  font-size: 1.5rem;
}

.code {
  background: #fafafa;
  border-radius: 5px;
  padding: 0.75rem;
  font-size: 1.1rem;
  font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
    Bitstream Vera Sans Mono, Courier New, monospace;
}

.grid {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  max-width: 800px;
  margin-top: 3rem;
}

.card {
  margin: 1rem;
  padding: 1.5rem;
  text-align: left;
  color: inherit;
  text-decoration: none;
  border: 1px solid #eaeaea;
  border-radius: 10px;
  transition: color 0.15s ease, border-color 0.15s ease;
  width: 45%;
}

.card:hover,
.card:focus,
.card:active {
  color: #0070f3;
  border-color: #0070f3;
}

.card h2 {
  margin: 0 0 1rem 0;
  font-size: 1.5rem;
}

.card p {
  margin: 0;
  font-size: 1.25rem;
  line-height: 1.5;
}

.logo {
  height: 1em;
  margin-left: 0.5rem;
}

@media (max-width: 600px) {
  .grid {
    width: 100%;
    flex-direction: column;
  }
}


================================================
FILE: examples/next/styles/globals.css
================================================
html,
body {
  padding: 0;
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
    Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}

a {
  color: inherit;
  text-decoration: none;
}

* {
  box-sizing: border-box;
}


================================================
FILE: examples/next/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules"]
}


================================================
FILE: examples/webpack/.browserslistrc
================================================
> 1%
last 2 versions
not dead
not ie 11


================================================
FILE: examples/webpack/.gitignore
================================================
.DS_Store
node_modules
/dist

/tests/e2e/videos/
/tests/e2e/screenshots/

# we do not want to commit local screenshot files
# as they might be different on different OSes
**/__image_snapshots_local__


# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?


================================================
FILE: examples/webpack/README.md
================================================
# Example for @frsource/cypress-plugin-visual-regression-diff

## Project setup

```bash
pnpm install
```

### Run your end-to-end tests

> Important - remember to run `pnpm && pnpm build` command in this repo's root directory before starting e2e tests.

```bash
pnpm test:e2e
```

### Run component tests

> Important - remember to run `pnpm && pnpm build` command in this repo's root directory before starting e2e tests.

```bash
pnpm test:ct
```

### Compiles and hot-reloads for development

```bash
pnpm serve
```

### Compiles and minifies for production

```bash
pnpm build
```

### Customize configuration

See [Configuration Reference](https://cli.vuejs.org/config/).


================================================
FILE: examples/webpack/cypress/component/HelloWorld.cy.ts
================================================
import { mount } from "cypress/vue";
import HelloWorld from "../../src/components/HelloWorld.vue";

const msg = "Some random test message";

describe("HelloWorld.cy.js", () => {
  it("playground", () => {
    mount(HelloWorld, {
      propsData: { msg },
    }).then(() => {
      cy.contains("h1", msg);
      cy.matchImage();
      cy.get('[data-testid="description"]').matchImage();
    });
  });
});


================================================
FILE: examples/webpack/cypress/e2e/spec.cy.ts
================================================
describe("My First Test", () => {
  it("Visits the app root url", () => {
    cy.visit("/");
    cy.contains("h1", "Welcome to Your Vue.js App");
    cy.matchImage().then(({ imgNewPath }) => {
      // match against image from custom path
      cy.matchImage({ matchAgainstPath: imgNewPath });
    });
  });
});


================================================
FILE: examples/webpack/cypress/support/commands.ts
================================================
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })

import "@frsource/cypress-plugin-visual-regression-diff/dist/support";


================================================
FILE: examples/webpack/cypress/support/component-index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <title>Components App</title>
  </head>
  <body>
    <div data-cy-root></div>
  </body>
</html>


================================================
FILE: examples/webpack/cypress/support/component.ts
================================================
// ***********************************************************
// This example support/component.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************

// Import commands.js using ES2015 syntax:
import "./commands.ts";

// Alternatively you can use CommonJS syntax:
// require('./commands')


================================================
FILE: examples/webpack/cypress/support/e2e.ts
================================================
// ***********************************************************
// This example support/component.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************

// Import commands.js using ES2015 syntax:
import "./commands";

// Alternatively you can use CommonJS syntax:
// require('./commands')


================================================
FILE: examples/webpack/cypress.config.ts
================================================
import { defineConfig } from "cypress";
import { initPlugin } from "@frsource/cypress-plugin-visual-regression-diff/plugins";

module.exports = defineConfig({
  video: false,
  e2e: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
    specPattern: "cypress/e2e/**/*.cy.{js,jsx,ts,tsx}",
  },

  component: {
    setupNodeEvents(on, config) {
      initPlugin(on, config);
    },
    devServer: {
      framework: "vue-cli",
      bundler: "webpack",
    },
  },
});


================================================
FILE: examples/webpack/package.json
================================================
{
  "name": "example",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test:open": "vue-cli-service test:e2e --env \"pluginVisualRegressionImagesPath={spec_path}/__image_snapshots_local__\"",
    "test:run": "vue-cli-service test:e2e",
    "test:ct": "pnpm test:open --component",
    "test:ct:ci": "pnpm test:run --component --headless",
    "test:e2e": "pnpm test:open --e2e",
    "test:e2e:ci": "pnpm test:run --e2e --headless"
  },
  "dependencies": {
    "vue": "3.2.45"
  },
  "devDependencies": {
    "@frsource/cypress-plugin-visual-regression-diff": "workspace:*",
    "@vue/cli-plugin-e2e-cypress": "5.0.8",
    "@vue/cli-service": "5.0.8",
    "cypress": "12.12.0",
    "typescript": "5.0.4"
  }
}


================================================
FILE: examples/webpack/public/index.html
================================================
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong
        >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
        properly without JavaScript enabled. Please enable it to
        continue.</strong
      >
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>


================================================
FILE: examples/webpack/src/App.vue
================================================
<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="Welcome to Your Vue.js App" />
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";

export default {
  name: "App",
  components: {
    HelloWorld,
  },
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>


================================================
FILE: examples/webpack/src/components/HelloWorld.vue
================================================
<template>
  <div>
    <h1>{{ msg }}</h1>
    <p data-testid="description">
      For a guide and recipes on how to configure / customize this project,<br />
      check out the
      <a href="https://cli.vuejs.org" target="_blank" rel="noopener"
        >vue-cli documentation</a
      >.
    </p>
    <h3>Installed CLI Plugins</h3>
    <ul>
      <li>
        <a
          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-e2e-cypress"
          target="_blank"
          rel="noopener"
          >e2e-cypress</a
        >
      </li>
    </ul>
    <h3>Essential Links</h3>
    <ul>
      <li>
        <a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a>
      </li>
      <li>
        <a href="https://forum.vuejs.org" target="_blank" rel="noopener"
          >Forum</a
        >
      </li>
      <li>
        <a href="https://chat.vuejs.org" target="_blank" rel="noopener"
          >Community Chat</a
        >
      </li>
      <li>
        <a href="https://twitter.com/vuejs" target="_blank" rel="noopener"
          >Twitter</a
        >
      </li>
      <li>
        <a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a>
      </li>
    </ul>
    <h3>Ecosystem</h3>
    <ul>
      <li>
        <a href="https://router.vuejs.org" target="_blank" rel="noopener"
          >vue-router</a
        >
      </li>
      <li>
        <a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a>
      </li>
      <li>
        <a
          href="https://github.com/vuejs/vue-devtools#vue-devtools"
          target="_blank"
          rel="noopener"
          >vue-devtools</a
        >
      </li>
      <li>
        <a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener"
          >vue-loader</a
        >
      </li>
      <li>
        <a
          href="https://github.com/vuejs/awesome-vue"
          target="_blank"
          rel="noopener"
          >awesome-vue</a
        >
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  props: {
    msg: String,
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>


================================================
FILE: examples/webpack/src/main.js
================================================
import { createApp } from "vue";
import App from "./App.vue";

createApp(App).mount("#app");


================================================
FILE: examples/webpack/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "baseUrl": "./",
    "moduleResolution": "node",
    "paths": {
      "@/*": ["src/*"]
    },
    "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
  }
}


================================================
FILE: package.json
================================================
{
  "name": "root",
  "private": true,
  "author": "Jakub Freisler <jakub.freisler@frsource.org>",
  "scripts": {
    "build": "pnpm -r build",
    "lint": "eslint '**/*.ts' --ignore-pattern '**/*.d.ts'",
    "lint:fix": "pnpm lint --fix",
    "lint:ci": "pnpm lint --max-warnings 0",
    "format": "pnpm -r format",
    "format:ci": "pnpm -r format:ci",
    "test": "pnpm -r test:ct:ci && pnpm -r test:e2e:ci && pnpm -r test:integration:ci",
    "test:integration": "pnpm -r test:integration",
    "test:integration:watch": "pnpm -r test:integration:watch",
    "test:integration:coverage": "pnpm -r test:integration:coverage",
    "test:integration:ci": "pnpm -r test:integration:ci",
    "test:ct": "pnpm -r test:ct",
    "test:ct:ci": "pnpm -r test:ct:ci",
    "test:e2e": "pnpm -r test:e2e",
    "test:e2e:ci": "pnpm -r test:e2e:ci"
  },
  "engines": {
    "node": ">=10"
  },
  "packageManager": "pnpm@8.6.12",
  "peerDependencies": {
    "cypress": ">=4.5.0"
  },
  "devDependencies": {
    "@frsource/eslint-config": "1.15.0",
    "eslint": "9.11.0",
    "eslint-plugin-cypress": "^3.5.0",
    "globals": "15.9.0"
  }
}


================================================
FILE: packages/cypress-plugin-visual-regression-diff/.prettierignore
================================================
node_modules
**/node_modules
**/coverage
coverage
**/dist
pnpm-lock.yaml
CHANGELOG.md


================================================
FILE: packages/cypress-plugin-visual-regression-diff/CHANGELOG.md
================================================
# Changelog

## [3.3.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/@frsource/cypress-plugin-visual-regression-diff-v3.3.9...@frsource/cypress-plugin-visual-regression-diff-v3.3.10) (2023-06-17)


### Bug Fixes

* **deps:** update dependency @frsource/base64 to v1.0.17 ([#244](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/issues/244)) ([d55c677](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/commit/d55c67734d8526172bc1231128eb9faa8e39d51b))


================================================
FILE: packages/cypress-plugin-visual-regression-diff/__tests__/fixtures/prepare-screenshot-for-cleanup.spec.cy.js
================================================
describe('Cleanup test', () => {
  it('Create screenshot to be removed', () => {
    cy.visit('/');
    cy.get('[data-testid="description"]').matchImage();
  });
});


================================================
FILE: packages/cypress-plugin-visual-regression-diff/__tests__/mocks/cypress.mock.ts
================================================
import { vi } from 'vitest';
import { promises as fs } from 'fs';

export const Cypress = {
  Promise,
};
vi.stubGlobal('Cypress', Cypress);

export const cy = {
  readFile: vi.fn(fs.readFile),
};
vi.stubGlobal('cy', cy);

export const before = vi.fn();
vi.stubGlobal('before', before);

export const after = vi.fn();
vi.stubGlobal('after', after);


================================================
FILE: packages/cypress-plugin-visual-regression-diff/package.json
================================================
{
  "name": "@frsource/cypress-plugin-visual-regression-diff",
  "description": "Perform visual regression test with a nice GUI as help. 💅 Only for Cypress!",
  "version": "3.3.10",
  "author": "Jakub Freisler <jakub.freisler@frsource.org>",
  "homepage": "https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff",
  "repository": "https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff.git",
  "sideEffects": [
    "./dist/**"
  ],
  "main": "dist/support.js",
  "types": "dist/support.d.ts",
  "exports": {
    ".": {
      "types": "./dist/support.d.ts",
      "import": "./dist/support.mjs",
      "default": "./dist/support.js"
    },
    "./support": {
      "types": "./dist/support.d.ts",
      "import": "./dist/support.mjs",
      "default": "./dist/support.js"
    },
    "./plugins": {
      "types": "./dist/plugins.d.ts",
      "import": "./dist/plugins.mjs",
      "default": "./dist/plugins.js"
    },
    "./constants": {
      "types": "./dist/constants.d.ts",
      "import": "./dist/constants.mjs",
      "default": "./dist/constants.js"
    },
    "./*": "./*.js"
  },
  "typesVersions": {
    "*": {
      "support": [
        "dist/support.d.ts"
      ],
      "plugins": [
        "dist/plugins.d.ts"
      ],
      "constants": [
        "dist/constants.d.ts"
      ]
    }
  },
  "license": "MIT",
  "scripts": {
    "build": "del-cli dist && microbundle src/{support,plugins,constants}.ts --target node --tsconfig tsconfig.build.json -f cjs,modern && cpy 'dist/src/*' dist && del-cli dist/src \"dist/*.{hook,utils}.d.ts\"",
    "format": "prettier --write .",
    "format:ci": "prettier --check .",
    "test:integration": "vitest run",
    "test:integration:watch": "vitest",
    "test:integration:coverage": "vitest run --coverage",
    "test:integration:ci": "CI=true vitest run --coverage"
  },
  "engines": {
    "node": ">=10"
  },
  "packageManager": "pnpm@8.6.12",
  "peerDependencies": {
    "cypress": ">=4.5.0"
  },
  "devDependencies": {
    "@frsource/prettier-config": "^1.11.0",
    "@types/glob": "8.1.0",
    "@types/pixelmatch": "5.2.6",
    "@types/pngjs": "6.0.5",
    "@types/sharp": "0.32.0",
    "@types/tmp": "0.2.6",
    "@vitest/coverage-c8": "0.33.0",
    "cpy-cli": "4.2.0",
    "cypress": "12.14.0",
    "del-cli": "5.0.1",
    "microbundle": "0.15.1",
    "prettier": "3.3.3",
    "sanitize-filename": "1.6.3",
    "tmp-promise": "3.0.3",
    "typescript": "5.1.6",
    "vite-tsconfig-paths": "4.2.1",
    "vitest": "0.33.0"
  },
  "keywords": [
    "Cypress",
    "Cypress plugin",
    "visual regression testing",
    "visual diff",
    "image diff",
    "visual comparison",
    "image comparison",
    "Cypress visual regression",
    "regression testing",
    "visual snapshot",
    "image snapshot",
    "Cypress image snapshot"
  ],
  "dependencies": {
    "@frsource/base64": "1.0.79",
    "glob": "8.1.0",
    "meta-png": "1.0.6",
    "move-file": "2.1.0",
    "pixelmatch": "5.3.0",
    "pngjs": "7.0.0",
    "sharp": "0.32.6"
  },
  "publishConfig": {
    "access": "public"
  },
  "files": [
    "dist",
    "package.json",
    "README.md",
    "LICENSE"
  ]
}


================================================
FILE: packages/cypress-plugin-visual-regression-diff/prettier.config.mjs
================================================
export { default } from '@frsource/prettier-config';


================================================
FILE: packages/cypress-plugin-visual-regression-diff/src/__snapshots__/support.test.ts.snap
================================================
// Vitest Snapshot v1

exports[`generateOverlayTemplate > generates proper template 1`] = `
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
  <header style=\\"position:static\\">
  <nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
    <h2>some title - screenshot diff</h2>
    <form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
      <button type=\\"submit\\"><i class=\\"fa fa-check\\"></i> Update screenshot</button>
      <button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
    <form>
  </nav>
  </header>
  <div style=\\"padding:15px;overflow:auto\\">
    <div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
      <div
        style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
        onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
        onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
      >
        <h3>New screenshot (hover mouse away too see the old one):</h3>
        <img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
        <div style=\\"position:absolute;top:0;left:0;background:#fff\\">
          <h3>Old screenshot (hover over to see the new one):</h3>
          <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
        </div>
      </div>
      <div style=\\"background:#fff;border:solid 15px #fff\\">
        <h3>Diff between new and old screenshot</h3>
        <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
      </div>
    </div>
  </div>
</div>"
`;

exports[`generateOverlayTemplate > generates proper template 2`] = `
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
  <header style=\\"position:static\\">
  <nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
    <h2>some title - screenshot diff</h2>
    <form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
      Image was already updated, rerun test to see new comparison
      <button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
    <form>
  </nav>
  </header>
  <div style=\\"padding:15px;overflow:auto\\">
    <div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
      <div
        style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
        onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
        onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
      >
        <h3>New screenshot (hover mouse away too see the old one):</h3>
        <img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
        <div style=\\"position:absolute;top:0;left:0;background:#fff\\">
          <h3>Old screenshot (hover over to see the new one):</h3>
          <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
        </div>
      </div>
      <div style=\\"background:#fff;border:solid 15px #fff\\">
        <h3>Diff between new and old screenshot</h3>
        <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
      </div>
    </div>
  </div>
</div>"
`;

exports[`generateOverlayTemplate > generates proper template 3`] = `
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
  <header style=\\"position:static\\">
  <nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
    <h2>some title - screenshot diff</h2>
    <form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
      
      <button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
    <form>
  </nav>
  </header>
  <div style=\\"padding:15px;overflow:auto\\">
    <div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
      <div
        style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
        onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
        onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
      >
        <h3>New screenshot (hover mouse away too see the old one):</h3>
        <img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
        <div style=\\"position:absolute;top:0;left:0;background:#fff\\">
          <h3>Old screenshot (hover over to see the new one):</h3>
          <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
        </div>
      </div>
      <div style=\\"background:#fff;border:solid 15px #fff\\">
        <h3>Diff between new and old screenshot</h3>
        <img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
      </div>
    </div>
  </div>
</div>"
`;


================================================
FILE: packages/cypress-plugin-visual-regression-diff/src/__snapshots__/task.hook.test.ts.snap
================================================
// Vitest Snapshot v1

exports[`compareImagesTask > when images shouldn't be updated > when old screenshot exists > when new image has different resolution > resolves with an error message 1`] = `
{
  "error": true,
  "imgDiff": 0.6849241379310345,
  "imgDiffBase64": "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",
  "imgNewBase64": "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iIiIiIiIiLQ5ExERERERERFpcyYiIiIiIiIi0uZMRERERERERKTNmYiIiIiIiIhImzMRERERERERkTZnIiIiIiIiIiJtzkRERERERERE2pyJiIiIiIiIiLQ5ExERERERERFpcyYiIiIiIiIi0uZMRERERERERKTNmYiIiIiIiIhImzMRERERERERkTZnIiIiIiIiIiJtzkRERERERERE2pyJiIiIiIiIiLQ5ExERERERERFpcyYiIiIiIiIi0uZMRERERERERKTNmYiIiIiIiIhImzMRERERERERkTZnIiIiIiIiIiJtzkRERERERERE2pyJiIiIiIiIiLQ5ExERERERERFpcyYiIiIiIiIi0uZMRERERERERKTNmYiIiIiIiIhImzMRERERERERkTZnIiIiIiIiIiJtzoKIiIj8X3LyCnC73URHRRBos+GVk1eA2+0mOiqCQJuNo6WquoaKyioCAgKIjY7k76TJ6aSgsBivpMR4TMNAREREWmdBRETkT1JRWcWu7H14HdcrA8Mw+CuacskN1NTW8czsOxkxdABeUy65gZraOp6ZfScjhg7gaFn8/ie8MO9N+vTsxqsvzOZwNTQ0sj0rm52795KbV0ByYjzpnTqQ3qUjpmHg5fF4+GXDFrw6tE8mPCyUg6morGJX9j68juuVgWEYtCavoIj8giJaCg4KIjYmkrDQEFrK3pPDuZf8A68fPnmLoCA7f6T8giLyC4vp07MbhmEgIiJyrLEgIiLyJ1m7fjM33f0oXqu/fAervz9y5L76biWzn36ZktJyDjSoX28eunsmEeGhuFxuLr3uTrwem3ULo08cysGsXb+Zm+5+FK/VX76D1d+f1rz30XLmL1jMwfTu0ZUZl06lX5/u/NnKKyo58/yraXI6uf2GK5g0YRwiIiLHGhMREZG/kV82bOGRp19m/oLF/B09+swr3HjXI5SUlhNos9G3d3cmnj6GAX17YZoGq35ezzU3z8LlcvFHCgiw0jMjnZ4ZXUhOjMdr/aZtXHvr/WzNzOLPZpomfn5+eFmtVkRERI5FFkRERP5Gduzaw6Ily0jr0I5Lpp3D38mKNet4+72leA3o24sH7riemOhIfNb8spElH3/Ozddeip+fH83NLv4oifGxvP7So/hszczisuvvpK6+gY8+/Ypu6Wn8mUJDHCxbPI/ikjI6dWyPiIjIschE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fB42VO7k5/mXY/nR+3/A8vTM2+nptnVPEGpXDjuXKRkjERERkf8/OyIiInJUUzJGMiVjJCerTm8XpS3VrD60kUGJOWREp2B5eubtHM3TM29HRERETl4mIiIi8q1U1d7AgsL3iHKEc/mQsxEREZFvNzsiIiLyrdQnNp3fTbqa4xmbNohoZwQiIiJy8rMjIiIip6wL+k9DREREvh1MRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5ExEREREREREJORMRERERERERCTkTEREREREREQk5OyIiIjId0ZZRRV+v5/kpATCXS5CqbvbQ1VNLZasjF6IiIh819kRERE5hVRU1VBZVcPxDOzfl6jICL6t2ts72Fa0m7yRQwkLc/JFzLv2FtraO3jkv+7gtMn5HEtLaxt79h3EMnLYYOx2G0fT3t7BtqLd5I0cSliYky9iV8k+fviTX2HZuPZNbDYbIiIi32V2RERETiFvvruCZ19YxPE88+gDjB09jG+r626+g+I9+znrjMk8eM9tfBN27t7LjbfehWXNO88THxfL0Vx38x0U79nPWWdM5sF7bkNERES+PDsiIiKnIJvNRnJiPEfjdNo52W3eVsSKNR+RnJTAtVdcTE9OpxNLmNNJqDmdTixhTiciIiLy1dgRERE5BWVn9uKN5x/n26pk30Fefes9cvtmc+0V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gJ8Fhe/ROyqJG0dfiNPmQERERL44OyIiIiJfgc0w+d2kqxEREZGvxkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELORERERERERERCzkREREREREREQs5ERERERERERELOR
Download .txt
gitextract_38i6esib/

├── .editorconfig
├── .github/
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .nvmrc
├── .release-please-manifest.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── eslint.config.mjs
├── examples/
│   ├── next/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── components/
│   │   │   ├── about-component.cy.tsx
│   │   │   └── about-component.tsx
│   │   ├── cypress/
│   │   │   ├── e2e/
│   │   │   │   └── app.cy.ts
│   │   │   ├── fixtures/
│   │   │   │   └── example.json
│   │   │   ├── support/
│   │   │   │   ├── commands.ts
│   │   │   │   ├── component-index.html
│   │   │   │   ├── component.ts
│   │   │   │   └── e2e.ts
│   │   │   └── tsconfig.json
│   │   ├── cypress.config.ts
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── _app.tsx
│   │   │   ├── about.tsx
│   │   │   └── index.tsx
│   │   ├── styles/
│   │   │   ├── Home.module.css
│   │   │   └── globals.css
│   │   └── tsconfig.json
│   └── webpack/
│       ├── .browserslistrc
│       ├── .gitignore
│       ├── README.md
│       ├── cypress/
│       │   ├── component/
│       │   │   └── HelloWorld.cy.ts
│       │   ├── e2e/
│       │   │   └── spec.cy.ts
│       │   └── support/
│       │       ├── commands.ts
│       │       ├── component-index.html
│       │       ├── component.ts
│       │       └── e2e.ts
│       ├── cypress.config.ts
│       ├── package.json
│       ├── public/
│       │   └── index.html
│       ├── src/
│       │   ├── App.vue
│       │   ├── components/
│       │   │   └── HelloWorld.vue
│       │   └── main.js
│       └── tsconfig.json
├── package.json
├── packages/
│   └── cypress-plugin-visual-regression-diff/
│       ├── .prettierignore
│       ├── CHANGELOG.md
│       ├── __tests__/
│       │   ├── fixtures/
│       │   │   └── prepare-screenshot-for-cleanup.spec.cy.js
│       │   └── mocks/
│       │       └── cypress.mock.ts
│       ├── package.json
│       ├── prettier.config.mjs
│       ├── src/
│       │   ├── __snapshots__/
│       │   │   ├── support.test.ts.snap
│       │   │   └── task.hook.test.ts.snap
│       │   ├── afterScreenshot.hook.test.ts
│       │   ├── afterScreenshot.hook.ts
│       │   ├── commands.ts
│       │   ├── constants.ts
│       │   ├── image.utils.ts
│       │   ├── plugins.test.ts
│       │   ├── plugins.ts
│       │   ├── screenshotPath.utils.ts
│       │   ├── support.test.ts
│       │   ├── support.ts
│       │   ├── task.hook.test.ts
│       │   ├── task.hook.ts
│       │   └── types.ts
│       ├── tsconfig.build.json
│       ├── tsconfig.json
│       └── vitest.config.ts
├── pnpm-workspace.yaml
├── release-please-config.json
└── renovate.json
Download .txt
SYMBOL INDEX (30 symbols across 14 files)

FILE: examples/next/components/about-component.tsx
  function AboutComponent (line 5) | function AboutComponent() {

FILE: examples/next/cypress.config.ts
  method setupNodeEvents (line 6) | setupNodeEvents(on, config) {
  method setupNodeEvents (line 12) | setupNodeEvents(on, config) {

FILE: examples/next/cypress/support/component.ts
  type Chainable (line 31) | interface Chainable {

FILE: examples/next/pages/_app.tsx
  function MyApp (line 4) | function MyApp({ Component, pageProps }: AppProps) {

FILE: examples/next/pages/about.tsx
  function About (line 4) | function About() {

FILE: examples/next/pages/index.tsx
  function Home (line 6) | function Home() {

FILE: examples/webpack/cypress.config.ts
  method setupNodeEvents (line 7) | setupNodeEvents(on, config) {
  method setupNodeEvents (line 14) | setupNodeEvents(on, config) {

FILE: packages/cypress-plugin-visual-regression-diff/src/afterScreenshot.hook.ts
  type NotFalsy (line 6) | type NotFalsy<T> = T extends false | null | undefined ? never : T;
  constant MIMIC_ROOT_WIN_REGEX (line 8) | const MIMIC_ROOT_WIN_REGEX = new RegExp(
  constant MIMIC_ROOT_UNIX_REGEX (line 11) | const MIMIC_ROOT_UNIX_REGEX = new RegExp(

FILE: packages/cypress-plugin-visual-regression-diff/src/commands.ts
  type MatchImageOptions (line 9) | type MatchImageOptions = {
  type MatchImageReturn (line 27) | type MatchImageReturn = {
  type Chainable (line 41) | interface Chainable<Subject> {
  method onAfterScreenshot (line 171) | onAfterScreenshot(el, props) {

FILE: packages/cypress-plugin-visual-regression-diff/src/constants.ts
  constant PLUGIN_NAME (line 1) | const PLUGIN_NAME = 'cp-visual-regression-diff';
  constant LINK_PREFIX (line 2) | const LINK_PREFIX = `#${PLUGIN_NAME}-`;
  constant OVERLAY_CLASS (line 3) | const OVERLAY_CLASS = `${PLUGIN_NAME}-overlay`;
  constant IMAGE_SNAPSHOT_PREFIX (line 4) | const IMAGE_SNAPSHOT_PREFIX = `__${PLUGIN_NAME}_snapshots__`;
  type FILE_SUFFIX (line 6) | enum FILE_SUFFIX {
  constant TASK (line 11) | const TASK = {
  constant PATH_VARIABLES (line 20) | const PATH_VARIABLES = {
  constant WINDOWS_LIKE_DRIVE_REGEX (line 26) | const WINDOWS_LIKE_DRIVE_REGEX = /^[A-Z]:$/;
  constant METADATA_KEY (line 28) | const METADATA_KEY = 'FRSOURCE_CPVRD_V';

FILE: packages/cypress-plugin-visual-regression-diff/src/image.utils.ts
  constant DIFF_IMAGES_VERSION (line 14) | const DIFF_IMAGES_VERSION = '1';

FILE: packages/cypress-plugin-visual-regression-diff/src/support.ts
  function queueClear (line 6) | function queueClear() {
  function queueRun (line 15) | function queueRun() {

FILE: packages/cypress-plugin-visual-regression-diff/src/task.hook.ts
  type CompareImagesCfg (line 20) | type CompareImagesCfg = {

FILE: packages/cypress-plugin-visual-regression-diff/src/types.ts
  type CompareImagesTaskReturn (line 1) | type CompareImagesTaskReturn = null | {
Condensed preview — 73 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (487K chars).
[
  {
    "path": ".editorconfig",
    "chars": 134,
    "preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[*.{js,json,yml}]\ncharset = utf-8\nindent_style = space\nin"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 6357,
    "preview": "name: CI\non:\n  pull_request:\n    branches:\n      - main\n  push:\n    branches:\n      - main\n\njobs:\n  cache:\n    name: CI "
  },
  {
    "path": ".gitignore",
    "chars": 1715,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Yarn\n.yarn/*\n*/.yarn\n!.yarn/patches"
  },
  {
    "path": ".nvmrc",
    "chars": 8,
    "preview": "20.17.0\n"
  },
  {
    "path": ".release-please-manifest.json",
    "chars": 65,
    "preview": "{\n  \"packages/cypress-plugin-visual-regression-diff\": \"3.3.10\"\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 28078,
    "preview": "## [3.3.9](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/v3.3.8...v3.3.9) (2023-06-12)\n\n## ["
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4257,
    "preview": "# @frsource/cypress-plugin-visual-regression-diff Contributing Guide\n\nHey! It’s really exciting for us to see your inter"
  },
  {
    "path": "LICENSE",
    "chars": 1088,
    "preview": "MIT License\n\nCopyright (c) 2021 FRSOURCE - Let's shape your web\n\nPermission is hereby granted, free of charge, to any pe"
  },
  {
    "path": "README.md",
    "chars": 10571,
    "preview": "<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@frsource/cypress-plugin-visual-regression-diff\">\n    <img s"
  },
  {
    "path": "eslint.config.mjs",
    "chars": 608,
    "preview": "import { typescript, javascript } from '@frsource/eslint-config';\nimport globals from 'globals';\nimport cypress from 'es"
  },
  {
    "path": "examples/next/.gitignore",
    "chars": 543,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "examples/next/README.md",
    "chars": 839,
    "preview": "# Next.js + Cypress + @frsource/cypress-plugin-visual-regression-diff\n\nThis example shows how to configure @frsource/cyp"
  },
  {
    "path": "examples/next/components/about-component.cy.tsx",
    "chars": 556,
    "preview": "import AboutComponent from './about-component'\n// Disable ESLint to prevent failing linting inside the Next.js repo.\n// "
  },
  {
    "path": "examples/next/components/about-component.tsx",
    "chars": 301,
    "preview": "import Link from 'next/link'\nimport React from 'react'\nimport styles from '../styles/Home.module.css'\n\nexport default fu"
  },
  {
    "path": "examples/next/cypress/e2e/app.cy.ts",
    "chars": 384,
    "preview": "describe(\"Navigation\", () => {\n  it(\"should navigate to the about page\", () => {\n    cy.visit(\"http://localhost:3000/\");"
  },
  {
    "path": "examples/next/cypress/fixtures/example.json",
    "chars": 155,
    "preview": "{\n  \"name\": \"Using fixtures to represent data\",\n  \"email\": \"hello@cypress.io\",\n  \"body\": \"Fixtures are a great way to mo"
  },
  {
    "path": "examples/next/cypress/support/commands.ts",
    "chars": 1456,
    "preview": "/// <reference types=\"cypress\" />\n// ***********************************************\n// This example commands.ts shows y"
  },
  {
    "path": "examples/next/cypress/support/component-index.html",
    "chars": 387,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />"
  },
  {
    "path": "examples/next/cypress/support/component.ts",
    "chars": 1193,
    "preview": "// ***********************************************************\n// This example support/component.ts is processed and\n// "
  },
  {
    "path": "examples/next/cypress/support/e2e.ts",
    "chars": 668,
    "preview": "// ***********************************************************\n// This example support/e2e.ts is processed and\n// loaded"
  },
  {
    "path": "examples/next/cypress/tsconfig.json",
    "chars": 138,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"es5\", \"dom\"],\n    \"types\": [\"cypress\", \"node\"]\n  },\n  \"includ"
  },
  {
    "path": "examples/next/cypress.config.ts",
    "chars": 450,
    "preview": "import { defineConfig } from \"cypress\";\nimport { initPlugin } from \"@frsource/cypress-plugin-visual-regression-diff/plug"
  },
  {
    "path": "examples/next/package.json",
    "chars": 1114,
    "preview": "{\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"cy"
  },
  {
    "path": "examples/next/pages/_app.tsx",
    "chars": 188,
    "preview": "import type { AppProps } from 'next/app'\nimport '../styles/globals.css'\n\nfunction MyApp({ Component, pageProps }: AppPro"
  },
  {
    "path": "examples/next/pages/about.tsx",
    "chars": 286,
    "preview": "import AboutComponent from '../components/about-component'\nimport styles from '../styles/Home.module.css'\n\nexport defaul"
  },
  {
    "path": "examples/next/pages/index.tsx",
    "chars": 2500,
    "preview": "import Head from 'next/head'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport styles from '../styles/H"
  },
  {
    "path": "examples/next/styles/Home.module.css",
    "chars": 1808,
    "preview": ".container {\n  min-height: 100vh;\n  padding: 0 0.5rem;\n  display: flex;\n  flex-direction: column;\n  justify-content: cen"
  },
  {
    "path": "examples/next/styles/globals.css",
    "chars": 275,
    "preview": "html,\nbody {\n  padding: 0;\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,\n    "
  },
  {
    "path": "examples/next/tsconfig.json",
    "chars": 510,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"sk"
  },
  {
    "path": "examples/webpack/.browserslistrc",
    "chars": 40,
    "preview": "> 1%\nlast 2 versions\nnot dead\nnot ie 11\n"
  },
  {
    "path": "examples/webpack/.gitignore",
    "chars": 402,
    "preview": ".DS_Store\nnode_modules\n/dist\n\n/tests/e2e/videos/\n/tests/e2e/screenshots/\n\n# we do not want to commit local screenshot fi"
  },
  {
    "path": "examples/webpack/README.md",
    "chars": 677,
    "preview": "# Example for @frsource/cypress-plugin-visual-regression-diff\n\n## Project setup\n\n```bash\npnpm install\n```\n\n### Run your "
  },
  {
    "path": "examples/webpack/cypress/component/HelloWorld.cy.ts",
    "chars": 404,
    "preview": "import { mount } from \"cypress/vue\";\nimport HelloWorld from \"../../src/components/HelloWorld.vue\";\n\nconst msg = \"Some ra"
  },
  {
    "path": "examples/webpack/cypress/e2e/spec.cy.ts",
    "chars": 312,
    "preview": "describe(\"My First Test\", () => {\n  it(\"Visits the app root url\", () => {\n    cy.visit(\"/\");\n    cy.contains(\"h1\", \"Welc"
  },
  {
    "path": "examples/webpack/cypress/support/commands.ts",
    "chars": 910,
    "preview": "// ***********************************************\n// This example commands.js shows you how to\n// create various custom"
  },
  {
    "path": "examples/webpack/cypress/support/component-index.html",
    "chars": 297,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />"
  },
  {
    "path": "examples/webpack/cypress/support/component.ts",
    "chars": 678,
    "preview": "// ***********************************************************\n// This example support/component.js is processed and\n// "
  },
  {
    "path": "examples/webpack/cypress/support/e2e.ts",
    "chars": 675,
    "preview": "// ***********************************************************\n// This example support/component.js is processed and\n// "
  },
  {
    "path": "examples/webpack/cypress.config.ts",
    "chars": 490,
    "preview": "import { defineConfig } from \"cypress\";\nimport { initPlugin } from \"@frsource/cypress-plugin-visual-regression-diff/plug"
  },
  {
    "path": "examples/webpack/package.json",
    "chars": 798,
    "preview": "{\n  \"name\": \"example\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve\",\n   "
  },
  {
    "path": "examples/webpack/public/index.html",
    "chars": 651,
    "preview": "<!DOCTYPE html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
  },
  {
    "path": "examples/webpack/src/App.vue",
    "chars": 486,
    "preview": "<template>\n  <img alt=\"Vue logo\" src=\"./assets/logo.png\" />\n  <HelloWorld msg=\"Welcome to Your Vue.js App\" />\n</template"
  },
  {
    "path": "examples/webpack/src/components/HelloWorld.vue",
    "chars": 2353,
    "preview": "<template>\n  <div>\n    <h1>{{ msg }}</h1>\n    <p data-testid=\"description\">\n      For a guide and recipes on how to conf"
  },
  {
    "path": "examples/webpack/src/main.js",
    "chars": 93,
    "preview": "import { createApp } from \"vue\";\nimport App from \"./App.vue\";\n\ncreateApp(App).mount(\"#app\");\n"
  },
  {
    "path": "examples/webpack/tsconfig.json",
    "chars": 233,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"module\": \"esnext\",\n    \"baseUrl\": \"./\",\n    \"moduleResolution\": \"node"
  },
  {
    "path": "package.json",
    "chars": 1128,
    "preview": "{\n  \"name\": \"root\",\n  \"private\": true,\n  \"author\": \"Jakub Freisler <jakub.freisler@frsource.org>\",\n  \"scripts\": {\n    \"b"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/.prettierignore",
    "chars": 86,
    "preview": "node_modules\n**/node_modules\n**/coverage\ncoverage\n**/dist\npnpm-lock.yaml\nCHANGELOG.md\n"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/CHANGELOG.md",
    "chars": 515,
    "preview": "# Changelog\n\n## [3.3.10](https://github.com/FRSOURCE/cypress-plugin-visual-regression-diff/compare/@frsource/cypress-plu"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/__tests__/fixtures/prepare-screenshot-for-cleanup.spec.cy.js",
    "chars": 166,
    "preview": "describe('Cleanup test', () => {\n  it('Create screenshot to be removed', () => {\n    cy.visit('/');\n    cy.get('[data-te"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/__tests__/mocks/cypress.mock.ts",
    "chars": 349,
    "preview": "import { vi } from 'vitest';\nimport { promises as fs } from 'fs';\n\nexport const Cypress = {\n  Promise,\n};\nvi.stubGlobal("
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/package.json",
    "chars": 3151,
    "preview": "{\n  \"name\": \"@frsource/cypress-plugin-visual-regression-diff\",\n  \"description\": \"Perform visual regression test with a n"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/prettier.config.mjs",
    "chars": 53,
    "preview": "export { default } from '@frsource/prettier-config';\n"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/__snapshots__/support.test.ts.snap",
    "chars": 5625,
    "preview": "// Vitest Snapshot v1\n\nexports[`generateOverlayTemplate > generates proper template 1`] = `\n\"<div class=\\\\\"cp-visual-reg"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/__snapshots__/task.hook.test.ts.snap",
    "chars": 344508,
    "preview": "// Vitest Snapshot v1\n\nexports[`compareImagesTask > when images shouldn't be updated > when old screenshot exists > when"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/afterScreenshot.hook.test.ts",
    "chars": 2094,
    "preview": "import { it, expect, describe } from 'vitest';\nimport path from 'path';\nimport { promises as fs, existsSync } from 'fs';"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/afterScreenshot.hook.ts",
    "chars": 2724,
    "preview": "import path from 'path';\nimport { promises as fs } from 'fs';\nimport moveFile from 'move-file';\nimport { IMAGE_SNAPSHOT_"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/commands.ts",
    "chars": 8251,
    "preview": "import { FILE_SUFFIX, LINK_PREFIX, TASK } from './constants';\nimport type pixelmatch from 'pixelmatch';\nimport * as Base"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/constants.ts",
    "chars": 867,
    "preview": "const PLUGIN_NAME = 'cp-visual-regression-diff';\nexport const LINK_PREFIX = `#${PLUGIN_NAME}-`;\nexport const OVERLAY_CLA"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/image.utils.ts",
    "chars": 3577,
    "preview": "import path from 'path';\nimport fs from 'fs';\nimport { PNG, PNGWithMetadata } from 'pngjs';\nimport sharp from 'sharp';\ni"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/plugins.test.ts",
    "chars": 883,
    "preview": "import { it, expect, describe, vi } from 'vitest';\nimport { initTaskHook } from './task.hook';\nimport { initAfterScreens"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/plugins.ts",
    "chars": 1262,
    "preview": "import { initTaskHook } from './task.hook';\nimport { initAfterScreenshotHook } from './afterScreenshot.hook';\n\n/* c8 ign"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/screenshotPath.utils.ts",
    "chars": 2850,
    "preview": "import path from 'path';\nimport {\n  FILE_SUFFIX,\n  IMAGE_SNAPSHOT_PREFIX,\n  PATH_VARIABLES,\n  WINDOWS_LIKE_DRIVE_REGEX,\n"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/support.test.ts",
    "chars": 1212,
    "preview": "import { it, expect, describe, vi } from 'vitest';\nimport { setGracefulCleanup } from 'tmp-promise';\nimport '@mocks/cypr"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/support.ts",
    "chars": 4444,
    "preview": "import * as Base64 from '@frsource/base64';\nimport './commands';\nimport { LINK_PREFIX, OVERLAY_CLASS, TASK } from './con"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/task.hook.test.ts",
    "chars": 8490,
    "preview": "import { it, expect, describe, beforeEach, afterEach } from 'vitest';\nimport path from 'path';\nimport { promises as fs, "
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/task.hook.ts",
    "chars": 5707,
    "preview": "import fs from 'fs';\nimport { PNG } from 'pngjs';\nimport pixelmatch, { PixelmatchOptions } from 'pixelmatch';\nimport mov"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/src/types.ts",
    "chars": 214,
    "preview": "export type CompareImagesTaskReturn = null | {\n  error?: boolean;\n  message?: string;\n  imgDiff?: number;\n  imgNewBase64"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/tsconfig.build.json",
    "chars": 94,
    "preview": "{\n  \"extends\": \"./tsconfig.json\",\n  \"include\": [\"src/*.ts\"],\n  \"exclude\": [\"src/*.test.ts\"]\n}\n"
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/tsconfig.json",
    "chars": 392,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es6\",\n    \"lib\": [\"es6\", \"dom\"],\n    \"types\": [\"cypress\"],\n    \"strict\": true,\n "
  },
  {
    "path": "packages/cypress-plugin-visual-regression-diff/vitest.config.ts",
    "chars": 832,
    "preview": "import { defineConfig, configDefaults } from 'vitest/config';\nimport tsconfigPaths from 'vite-tsconfig-paths';\nimport pa"
  },
  {
    "path": "pnpm-workspace.yaml",
    "chars": 44,
    "preview": "packages:\n  - 'packages/*'\n  - 'examples/*'\n"
  },
  {
    "path": "release-please-config.json",
    "chars": 381,
    "preview": "{\n  \"$schema\": \"https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json\",\n  \"sequential-cal"
  },
  {
    "path": "renovate.json",
    "chars": 119,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"github>FRSOURCE/renovate-config\"]\n}\n"
  }
]

About this extraction

This page contains the full source code of the FRSOURCE/cypress-plugin-visual-regression-diff GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 73 files (465.0 KB), approximately 268.7k tokens, and a symbol index with 30 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!