204 lines
36 KiB
Plaintext
204 lines
36 KiB
Plaintext
[38;5;12m [39m[38;2;255;187;0m[1m[4mAwesome Visual Regression Testing [0m[38;5;14m[1m[4m![0m[38;2;255;187;0m[1m[4mAwesome[0m[38;5;14m[1m[4m (https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)[0m[38;2;255;187;0m[1m[4m (https://github.com/sindresorhus/awesome)[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mCurated list of awesome visual regression testing resources.[39m
|
||
|
||
[38;5;12mRegression[39m[38;5;12m [39m[38;5;12mtesting[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mtype[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mtesting[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mverifies[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mwas[39m[38;5;12m [39m[38;5;12mpreviously[39m[38;5;12m [39m[38;5;12mdeveloped[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mtested[39m[38;5;12m [39m[38;5;12mstill[39m[38;5;12m [39m[38;5;12mperforms[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12msame[39m[38;5;12m [39m[38;5;12mway[39m[38;5;12m [39m[38;5;12mafter[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mwas[39m[38;5;12m [39m[38;5;12mchanged[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12minterfaced[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m[38;5;12msoftware.[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mpurpose[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mregression[39m[38;5;12m [39m
|
||
[38;5;12mtesting[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mensure[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mchanges[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mhave[39m[38;5;12m [39m[38;5;12mnot[39m[38;5;12m [39m[38;5;12mintroduced[39m[38;5;12m [39m[38;5;12mnew[39m[38;5;12m [39m[38;5;12mfaults.[39m
|
||
|
||
[38;2;255;187;0m[4mForeword[0m
|
||
|
||
[38;5;12mThis[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mintended[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[48;2;30;30;40m[38;5;13m[3mincomplete[0m[38;5;12m [39m[38;5;12mlist[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mresources[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12mvisual[39m[38;5;12m [39m[38;5;12mregression[39m[38;5;12m [39m[38;5;12mtesting.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mnot[39m[38;5;12m [39m[38;5;12mtailored[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mspecific[39m[38;5;12m [39m[38;5;12marea[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mrole[39m[38;5;12m [39m[38;5;12m(Developer/QA/UX-Designer).[39m[38;5;12m [39m[38;5;12mNote[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mthis[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mall[39m[38;5;12m [39m[38;5;12mareas[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mregression[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mtesting[39m[38;5;12m [39m[48;2;30;30;40m[38;5;13m[3mafter[0m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m
|
||
[38;5;12mcode[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mquestion[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mwritten.[39m[38;5;12m [39m[38;5;12mFor[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mawesome[39m[38;5;12m [39m[38;5;12mlist[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mgeneral[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mtesting[39m[38;5;12m [39m[38;5;12msee[39m[38;5;12m [39m[38;5;12me.g.[39m[38;5;12m [39m[38;5;14m[1mawesome-testing[0m[38;5;12m [39m[38;5;12m(https://github.com/TheJambo/awesome-testing).[39m
|
||
|
||
[38;5;12mFinally, I'm sure everyone who reads this list has one thing they want to add. Please read the [39m[38;5;14m[1mHow to Contribute[0m[38;5;12m (.github/CONTRIBUTING.md) page and [39m[38;5;14m[1mFeel free to add to the list!![0m[38;5;12m. If you think this is helpful [39m[38;5;14m[1mPlease give a Star ⭐️[0m[38;5;12m.[39m
|
||
|
||
[38;2;255;187;0m[4mContents[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mGeneral information[0m[38;5;12m (#general-information)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBrowser automation[0m[38;5;12m (#browser-automation)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTools and frameworks[0m[38;5;12m (#tools-and-frameworks)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOnline services[0m[38;5;12m (#online-services)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlog posts[0m[38;5;12m (#blog-posts)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSlideshows, talks and videos[0m[38;5;12m (#slideshows-talks-and-videos)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDeprecated[0m[38;5;12m (#deprecated)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMiscellaneous[0m[38;5;12m (#Miscellaneous)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mContributing[0m[38;5;12m (#contributing)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mCode of Conduct[0m[38;5;12m (#code-of-conduct)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mLicense[0m[38;5;12m (#license)[39m
|
||
|
||
[38;2;255;187;0m[4mGeneral information[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mWikipedia: Regression testing[0m[38;5;12m (https://en.wikipedia.org/wiki/Regression_testing)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSurvey of screenshot-based CSS testing tools[0m[38;5;12m (https://gist.github.com/cvrebert/adf91e429906a4d746cd)[39m
|
||
|
||
[38;2;255;187;0m[4mBrowser automation[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mSelenium[0m[38;5;12m (https://github.com/SeleniumHQ/selenium) - Browser automation framework and ecosystem.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSlimerJS[0m[38;5;12m (https://github.com/laurentj/slimerjs) - Scriptable browser like PhantomJS, based on Firefox.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mWebdriver.io[0m[38;5;12m (https://github.com/webdriverio/webdriverio/) - Node.js bindings implementation for the W3C WebDriver protocol.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCypress.io[0m[38;5;12m (https://www.cypress.io/) - An automation framework that runs in-browser.[39m
|
||
|
||
[38;2;255;187;0m[4mTools and frameworks[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mOSnap[0m[38;5;12m (https://github.com/eWert-Online/osnap) - The speedy and easy to use Snapshot Testing tool for your project (1200 snapshots will run in under 3 minutes).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mbasset[0m[38;5;12m (https://basset.io) - Open source platform for generating and reviewing visual differences. Supports multiple browsers, integrations for github and slack.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAyeSpy[0m[38;5;12m (https://github.com/newsuk/ayespy) - 44 image comparisons in 90 seconds.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mWraith[0m[38;5;12m (https://github.com/BBC-News/wraith) - Easy to use ruby tool with docker support.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBackstopJS[0m[38;5;12m (https://github.com/garris/BackstopJS) - Config-driven automated screenshot test framework.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGalen[0m[38;5;12m (https://github.com/galenframework/galen) - Java framework based on [39m[38;5;14m[1mSelenium[0m[38;5;12m (https://github.com/SeleniumHQ/selenium).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCreevey[0m[38;5;12m (https://github.com/wKich/creevey) - Cross-browser visual testing with magic. Feature-rich tool with UI Runner, Tests Hot Reloading, Docker and Storybook integration.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCSSCritic[0m[38;5;12m (https://github.com/cburgmer/csscritic) - Lightweight CSS regression testing.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSpectre[0m[38;5;12m (https://github.com/wearefriday/spectre) - Provides image comparison capabilities and an admin interface for managing screenshots.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mShoov[0m[38;5;12m (https://github.com/shoov/shoov) - UI regression and functional testing focused on Drupal 7 sites.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mqd_screenshottests[0m[38;5;12m (https://www.drupal.org/project/qd_screenshottests) - CasperJS-based UI regression and functional testing focused on Drupal 8 sites.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLook-alike[0m[38;5;12m (https://github.com/kdzwinel/Look-alike) - Chrome Extension for taking and comparing screenshots.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHardy[0m[38;5;12m (https://github.com/thingsinjars/Hardy) - Selenium-driven, cucumber-powered CSS testing.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTestCafe[0m[38;5;12m (https://github.com/DevExpress/testcafe) - Automated browser testing for the modern web development stack.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mNeedle[0m[38;5;12m (https://github.com/python-needle/needle) - Needle is a tool for testing visuals with Selenium and nose (Python).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mgatling[0m[38;5;12m (https://github.com/gabrielrotbart/gatling) - Integrated visual RSpec matcher which makes real visual testing easy (Ruby).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mgrunt-photobox[0m[38;5;12m (https://github.com/stefanjudis/grunt-photobox) - Plugin to prevent your project of broken layout via screenshot photo sessions of your site.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mvrtest[0m[38;5;12m (https://github.com/nathanmarks/vrtest) - JavaScript library for running visual regression tests on your components cross browser via selenium.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHappo[0m[38;5;12m (https://github.com/Galooshi/happo) - Visual diffing in CI for user interfaces.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreg-cli[0m[38;5;12m (https://github.com/bokuweb/reg-cli) - Visual regression test tool which output easy-to-read single file html report.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mNightmare[0m[38;5;12m (https://github.com/segmentio/nightmare) - High-level browser automation library based on Electron.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPuppeteer[0m[38;5;12m (https://github.com/GoogleChrome/puppeteer) - Headless Google Chrome Node API.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPlaywright[0m[38;5;12m (https://github.com/microsoft/playwright) - Node library to automate Chromium, Firefox and WebKit with a single API.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreg-suit[0m[38;5;12m (https://github.com/reg-viz/reg-suit) - Visual regression testing suite which compares images, stores snapshots, and notifies the difference to your GitHub repo.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mChimp[0m[38;5;12m (https://github.com/xolvio/chimp) - Develop acceptance tests & end-to-end tests with realtime feedback.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDifferencify[0m[38;5;12m (https://github.com/NimaSoroush/differencify) - A library for visual regression testing using [39m[38;5;14m[1mPuppeteer[0m[38;5;12m (https://github.com/GoogleChrome/puppeteer).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mResembleJS[0m[38;5;12m (https://github.com/Huddle/Resemble.js) - Analyse and compare images with Javascript and HTML5.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMuppeteer[0m[38;5;12m (https://github.com/HuddleEng/Muppeteer) - Visual regression testing framework for Chrome using [39m[38;5;14m[1mMocha[0m[38;5;12m (https://mochajs.org/) and [39m[38;5;14m[1mPuppeteer[0m[38;5;12m (https://github.com/GoogleChrome/puppeteer).[39m
|
||
[38;5;12m- [39m[38;5;14m[1member-visual-test[0m[38;5;12m (https://github.com/Cropster/ember-visual-test) - Simple visual regression testing for [39m[38;5;14m[1mEmber[0m[38;5;12m (https://emberjs.com/).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAET[0m[38;5;12m (https://github.com/Cognifide/aet) - Scalable testing tool providing visual regression testing, accessibility and performance validation, markup analysis and more.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mWendigo[0m[38;5;12m (https://github.com/angrykoala/wendigo) - Test-oriented browser automation library based on Puppeteer.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLoki[0m[38;5;12m (https://github.com/oblador/loki) - Visual regression testing for Storybook using Chrome in docker et al.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mZombie.js[0m[38;5;12m (http://zombie.js.org/) - Insanely fast, headless full-stack testing using Node.js.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCodeceptJS[0m[38;5;12m (https://github.com/codeception/codeceptjs/) - Modern Era Acceptance Testing Framework for NodeJS.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mFuncUnit[0m[38;5;12m (https://github.com/bitovi/funcunit) - A functional test suite based on jQuery[39m
|
||
[38;5;12m- [39m[38;5;14m[1mNightwatch[0m[38;5;12m (https://github.com/nightwatchjs/nightwatch) - Automated testing and continuous integration framework based on Node.js and using the Webdriver protocol.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mProtractor[0m[38;5;12m (https://github.com/angular/protractor) - E2E test framework for Angular apps.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mjest-puppeteer-react[0m[38;5;12m (https://github.com/Hapag-Lloyd/jest-puppeteer-react) - Visual regression testing with Jest and puppeteer for React components[39m
|
||
[38;5;12m- [39m[38;5;14m[1mjest-image-snapshot[0m[38;5;12m (https://github.com/americanexpress/jest-image-snapshot) - Jest matcher that performs image comparisons using [39m[38;5;14m[1mpixelmatch[0m[38;5;12m (https://www.npmjs.com/package/pixelmatch)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mtest-crawler[0m[38;5;12m (https://github.com/apiel/test-crawler) - Visual regression testing, by crawling a website and providing snapshot comparison reports.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mwdio-visual-regression[0m[38;5;12m (https://github.com/ennjin/wdio-visual-regression) - Visual regression tool for webdriver.io[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSelenide[0m[38;5;12m (https://github.com/selenide/selenide) - Framework powered by Selenium WebDriver for writing easy-to-read and easy-to-maintain automated tests in Java.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mKarma[0m[38;5;12m (http://karma-runner.github.io/latest/index.html) - A test runner by the AngularJS team, that fits all our needs.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTouca[0m[38;5;12m (https://github.com/trytouca/trytouca) - Open source continuous regression testing without the hassle of managing snapshot files.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLost Pixel[0m[38;5;12m (https://github.com/lost-pixel/lost-pixel) - Holistic visual regression testing for full pages, components (via Storybook and Ladle integration), and custom shots (e.g. via Cypress).[39m
|
||
|
||
[38;2;255;187;0m[4mOnline services[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mBrowserStack[0m[38;5;12m (https://www.browserstack.com) - Free for Open Source. Supports [39m[38;5;14m[1mSelenium Webdriver[0m[38;5;12m (https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBugBug.io[0m[38;5;12m [39m[38;5;12m(https://bugbug.io/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mLightweight[39m[38;5;12m [39m[38;5;12mtest[39m[38;5;12m [39m[38;5;12mautomation[39m[38;5;12m [39m[38;5;12mtool[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mweb[39m[38;5;12m [39m[38;5;12mapplications.[39m[38;5;12m [39m[38;5;12mEasy[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mlearn[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mdoesn't[39m[38;5;12m [39m[38;5;12mrequire[39m[38;5;12m [39m[38;5;12mcoding.[39m[38;5;12m [39m[38;5;12mIt's[39m[38;5;12m [39m[38;5;12mfree,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12munlimited[39m[38;5;12m [39m[38;5;12mtests.[39m[38;5;12m [39m[38;5;12mFor[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12madditional[39m[38;5;12m [39m[38;5;12mmonthly[39m[38;5;12m [39m[38;5;12mfee,[39m[38;5;12m [39m[38;5;12myou[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12mget[39m[38;5;12m [39m[38;5;12mcloud[39m[38;5;12m [39m[38;5;12mmonitoring[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mCI/CD[39m[38;5;12m [39m
|
||
[38;5;12mintegration.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHeadSpin[0m[38;5;12m (https://www.headspin.io/) - HeadSpin's Regression testing gives you a powerful comparison tool for analysing degradation across new app builds, OS releases, feature additions, locations, and more.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTestGrid[0m[38;5;12m (https://www.testgrid.io/) - Perform End to End test automation be it cross browser testing, mobile app testing, performance testing or API testing on cloud or on-premise.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLambdaTest[0m[38;5;12m (https://www.lambdatest.com/) - Perform Automated and Live Interactive Cross Browser Testing on 2000+ Real Browsers and Operating Systems Online.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mscreener.io[0m[38;5;12m (https://screener.io) - For React, looks open source.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mapplitools[0m[38;5;12m (https://applitools.com) - Cloud base visual tests.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mpercy.io[0m[38;5;12m (https://percy.io) - Continuous visual reviews for web apps.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mscreenster.io[0m[38;5;12m (http://screenster.io) - Cloud based automation testing platform for web and mobile UI.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mbrowserling[0m[38;5;12m (https://www.browserling.com) - LIVE interactive cross-browser testing.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBrowser Shots[0m[38;5;12m (http://browsershots.org) - Screenshots only.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGhost Inspector[0m[38;5;12m (https://ghostinspector.com) - See [39m[38;5;14m[1mintroduction video[0m[38;5;12m (https://vimeo.com/ghostinspector/intro).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCrossBrowserTesting[0m[38;5;12m (https://crossbrowsertesting.com) - Manual & exploratory testing on 1500+ real browsers and mobile devices.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mArgos-CI[0m[38;5;12m (https://www.argos-ci.com) - Automate visual regression testing.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDiffy[0m[38;5;12m (https://diffy.website) - Cloud based visual regression tool. Uses puppeteer and proprietary comparison algorithm (detect layout shifts). Great scalability with AWS Lambda.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mChromatic[0m[38;5;12m (https://www.chromatic.com/) - Visual testing and UI review for component libraries. Cloud-based. [39m[38;5;14m[1mVideo[0m[38;5;12m (https://youtu.be/6KDLJBcutQE)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisWiz.io[0m[38;5;12m (https://www.viswiz.io) - Flexible visual regression testing service.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHappo[0m[38;5;12m (https://happo.io/) - Cloud-based screenshot testing service with support for multiple browsers.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Knight[0m[38;5;12m (https://visual-knight.io/) - Cloud-based visual testing platform with realtime results for testing tools.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAxcept[0m[38;5;12m (https://axcept.io) - Testing for the whole team. Up to 100 tests in parallel. Endpoint Mocking. Code Coverage. [39m
|
||
[38;5;12m- [39m[38;5;14m[1mFluxguard[0m[38;5;12m (https://fluxguard.com) - Screenshot pixel and DOM change comparisons and regressions.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVidiff[0m[38;5;12m (https://vidiff.com) - Cloud-based visual regression testing across stages.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mReflect[0m[38;5;12m (https://reflect.run) - Visual regression testing and test automation tool.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Tracker[0m[38;5;12m (https://github.com/Visual-Regression-Tracker/Visual-Regression-Tracker) - Open Source selfhosted service for visual regression testing[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMicoo[0m[38;5;12m (https://github.com/Mikuu/Micoo) - Open source service for all UI application visual regression solution[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTestingBot[0m[38;5;12m (https://testingbot.com) - Provides +3600 browsers to run automated visual tests. Free for Open Source.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPreflight[0m[38;5;12m (https://preflight.com) - Easiest Visual regression testing and Automated Web Testing tool. (Limited) free use.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPreflight: Cypress Recorder[0m[38;5;12m (https://cypress.preflight.com) - Create AI-powered Cypress Tests/POM models in your browser and automate Email & Visual testing for Cypress.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mMeticulous.ai[0m[38;5;12m [39m[38;5;12m(https://meticulous.ai)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mEasily[39m[38;5;12m [39m[38;5;12mcreate[39m[38;5;12m [39m[38;5;12mfrontend[39m[38;5;12m [39m[38;5;12mtests[39m[38;5;12m [39m[38;5;12mwithout[39m[38;5;12m [39m[38;5;12mwriting[39m[38;5;12m [39m[38;5;12mcode.[39m[38;5;12m [39m[38;5;12mUse[39m[38;5;12m [39m[38;5;12mMeticulous[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mrecord[39m[38;5;12m [39m[38;5;12mworkflows[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12myour[39m[38;5;12m [39m[38;5;12mweb[39m[38;5;12m [39m[38;5;12mapp.[39m[38;5;12m [39m[38;5;12mYou[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mthen[39m[38;5;12m [39m[38;5;12mreplay[39m[38;5;12m [39m[38;5;12mthose[39m[38;5;12m [39m[38;5;12mflows[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mnew[39m[38;5;12m [39m[38;5;12mfrontend[39m[38;5;12m [39m[38;5;12mcode,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcreate[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mtest[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mdiffing[39m[38;5;12m [39m[38;5;12mtwo[39m[38;5;12m [39m
|
||
[38;5;12mreplays.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mtestRigor[0m[38;5;12m (https://testrigor.com) - E2E functional test automation tool for web, mobile, and desktop tests.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVRTs - Visual Regression Tests[0m[38;5;12m (https://bleech.de/en/products/visual-regression-tests/) – WordPress plugin auto-updating screenshots on content updates, preventing false positives.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTestomat.io Reporter[0m[38;5;12m (https://github.com/testomatio/reporter) - Allows to collect tests to a Test Case Management System (TCMS) like testomat.io and sync manual and automated tests in one place.[39m
|
||
|
||
[38;2;255;187;0m[4mBlog posts[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mKevin Lamping: The 5 best visual regression testing tools[0m[38;5;12m (http://www.creativebloq.com/features/the-5-best-visual-regression-testing-tools) - Compares: Wraith, PhantomCSS, Gemini, WebdriverCSS and Spectre.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGarris Shipon: Visual Regression Testing For Angular Applications[0m[38;5;12m (https://davidwalsh.name/visual-regression-testing-angular-applications) - Tutorial using BackstopJS.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAngela Riggs: Visual Regression Testing with BackstopJS[0m[38;5;12m (https://www.metaltoad.com/blog/visual-regression-testing-backstopjs) - Tutorial using BackstopJS.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGarris Shipon: Automating CSS Regression Testing[0m[38;5;12m (https://css-tricks.com/automating-css-regression-testing/) - Tutorial using BackstopJS.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPhillip Gourley: Making visual regression useful[0m[38;5;12m (https://medium.com/@philgourley/making-visual-regression-useful-acfae27e5031) - Why you should use BackstopJS.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPavels Jelisejevs: Visual Regression Testing with PhantomCSS[0m[38;5;12m (https://www.sitepoint.com/visual-regression-testing-with-phantomcss) - Introduction to PhantomCSS.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mChromeless,[0m[38;5;14m[1m [0m[38;5;14m[1mChrominator,[0m[38;5;14m[1m [0m[38;5;14m[1mChromy,[0m[38;5;14m[1m [0m[38;5;14m[1mNavalia,[0m[38;5;14m[1m [0m[38;5;14m[1mLambdium,[0m[38;5;14m[1m [0m[38;5;14m[1mGhostJS,[0m[38;5;14m[1m [0m[38;5;14m[1mAutoGCD[0m[38;5;12m [39m[38;5;12m(https://medium.com/@kensoh/chromeless-chrominator-chromy-navalia-lambdium-ghostjs-autogcd-ef34bcd26907)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mHeadless[39m[38;5;12m [39m[38;5;12mChrome[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mshaking[39m[38;5;12m [39m[38;5;12mup[39m[38;5;12m [39m[38;5;12mtraditional[39m[38;5;12m [39m[38;5;12mapproaches[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m
|
||
[38;5;12mtest[39m[38;5;12m [39m[38;5;12mautomation.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual regression testing using Jest, Chromeless and AWS Lambda[0m[38;5;12m (https://github.com/novemberfiveco/visual-regression-testing-jest-chromeless) - Tutorial using Chromeless and jest-image-snapshot.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMake visual regression testing easier[0m[38;5;12m (https://medium.com/@nima.soroush.h/make-visual-regression-testing-easier-4a3dc7073737) - Introduction to [39m[38;5;14m[1mDifferencify[0m[38;5;12m (https://github.com/NimaSoroush/differencify) and how to use it.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Testing with Puppeteer & Jest[0m[38;5;12m (https://www.viswiz.io/help/tutorials/puppeteer) - Tutorial to setup visual testing with Puppeteer, Jest and VisWiz.io.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mKeeping[0m[38;5;14m[1m [0m[38;5;14m[1ma[0m[38;5;14m[1m [0m[38;5;14m[1mReact[0m[38;5;14m[1m [0m[38;5;14m[1mDesign[0m[38;5;14m[1m [0m[38;5;14m[1mSystem[0m[38;5;14m[1m [0m[38;5;14m[1mconsistent:[0m[38;5;14m[1m [0m[38;5;14m[1musing[0m[38;5;14m[1m [0m[38;5;14m[1mvisual[0m[38;5;14m[1m [0m[38;5;14m[1mregression[0m[38;5;14m[1m [0m[38;5;14m[1mtesting[0m[38;5;14m[1m [0m[38;5;14m[1mto[0m[38;5;14m[1m [0m[38;5;14m[1msave[0m[38;5;14m[1m [0m[38;5;14m[1mtime[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mheadaches[0m[38;5;12m [39m[38;5;12m(https://techblog.commercetools.com/keeping-a-react-design-system-consistent-f055160d5166)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mUsing[39m[38;5;12m [39m[38;5;12mpercy,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mjest[39m[38;5;12m [39m[38;5;12mpuppeteer[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m
|
||
[38;5;12mvisually[39m[38;5;12m [39m[38;5;12mtest[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mReact[39m[38;5;12m [39m[38;5;12mcomponent[39m[38;5;12m [39m[38;5;12mlibrary.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Test with WebdriverIO & WebdriverCSS[0m[38;5;12m (https://medium.com/@dalenguyen/visual-regression-test-with-webdriverio-webdrivercss-d7675a1812b2) - Tutorial using WebdriverIO and WebdriverCSS with Spec Reporter[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAutomated screenshot comparison tests with headless Chrome, Puppeteer and Pixelmatch, in Bitbucket pipeline[0m[38;5;12m (https://jakobzanker.de/blog/automated-screenshot-comparison-test-with-headless-chrome-in-bitbucket-pipeline/)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAutomatic visual diffing with Puppeteer[0m[38;5;12m (https://meowni.ca/posts/2017-puppeteer-tests/)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mtheheadless.dev[0m[38;5;12m (https://theheadless.dev) - Blog with practical guides and runnable examples on Playwright and Puppeteer.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual regression testing for Hugo with Github-CI and BackstopJS[0m[38;5;12m (https://jameskiefer.com/posts/visual-regression-testing-for-hugo-with-github-ci-and-backstopjs/) - How to automate regression testing for Hugo with BackstopJS[39m
|
||
[38;5;12m- [39m[38;5;14m[1mUI Visual Regression Testing with Micoo[0m[38;5;12m (https://mikuu.medium.com/ui-visual-regression-testing-with-micoo-12c7a4a036b9) - Introduction about how to do visual regression testing with Micoo service[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPoor man's visual regression testing[0m[38;5;12m (https://idkshite.com/posts/compare-visual-changes) - Improved manual visual regression testing with the PerfectPixel chrome plugin.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mEverything you need to know about Visual Regression Testing in 2022[0m[38;5;12m (https://david-x.medium.com/the-state-of-visual-regression-testing-in-2022-5de10ffe8f6f) - Intro to visual regression testing with tools updated as of 2022. [39m
|
||
|
||
[38;2;255;187;0m[4mSlideshows, talks and videos[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mCSS Regression Testing with Wraith[0m[38;5;12m (https://youtu.be/gE_19L0l2q0) - Screencast: Basic introduction to wraith, a screenshot comparison tool.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Testing with Shoov[0m[38;5;12m (https://youtu.be/CBBiJ6YlXLc) - How to setup shoov and get your first test written.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Testing with PhantomCSS[0m[38;5;12m (https://youtu.be/Vp8vnXMjIfw) - Talk by Jon Bellah on how to use PhantomCSS during wordpress development.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Regression Testing: Sanity Checks With BackstopJS[0m[38;5;12m (https://youtu.be/l8lGj8Zh0k4) - Screencast with code demo and best practices.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mScreenster Tutorial[0m[38;5;12m (https://youtu.be/Zy8y_dGzZXI) - Tutorial on how to create visual automated tests with Screenster.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLook-alike - visual regression testing tool[0m[38;5;12m (https://youtu.be/vTyoQuC0To8) - Demo what the Look-alike Chrome extension is, how it works and how and why it was build.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mScreencast on CSS critic - a lightweight testing framework for CSS[0m[38;5;12m (https://youtu.be/AqQ2bNPtF60) - How to write your first CSS test with CSS critic, make it pass, break it, and make it pass again.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mVisual[0m[38;5;14m[1m [0m[38;5;14m[1mRegression[0m[38;5;14m[1m [0m[38;5;14m[1mTesting[0m[38;5;14m[1m [0m[38;5;14m[1m-[0m[38;5;14m[1m [0m[38;5;14m[1mfrom[0m[38;5;14m[1m [0m[38;5;14m[1ma[0m[38;5;14m[1m [0m[38;5;14m[1mtool[0m[38;5;14m[1m [0m[38;5;14m[1mto[0m[38;5;14m[1m [0m[38;5;14m[1ma[0m[38;5;14m[1m [0m[38;5;14m[1mprocess[0m[38;5;12m [39m[38;5;12m(https://speakerdeck.com/nikhilverma/visual-regression-testing-from-a-tool-to-a-process)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mNikhil[39m[38;5;12m [39m[38;5;12mVerma[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mHow[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mMobile[39m[38;5;12m [39m[38;5;12mWeb[39m[38;5;12m [39m[38;5;12mteam[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mBadoo[39m[38;5;12m [39m[38;5;12mconverted[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mintegrated[39m[38;5;12m [39m[38;5;12mPhantomCSS[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m
|
||
[38;5;12mtheir[39m[38;5;12m [39m[38;5;12mworkflow[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mconnected[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mtheir[39m[38;5;12m [39m[38;5;12mCI[39m[38;5;12m [39m[38;5;12mprocess.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCypress in 100 Seconds[0m[38;5;12m (https://www.youtube.com/watch?v=BQqzfHQkREo&ab_channel=Fireship) - Introduction video by Fireship. [39m
|
||
|
||
[38;2;255;187;0m[4mDeprecated[0m
|
||
|
||
[38;5;12mThe following projects are no longer maintained actively but are still worth mentioning because of their user base.[39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mPhantomJS[0m[38;5;12m (https://github.com/ariya/phantomjs) - Scriptable Headless WebKit. No longer maintained since 2 June 2018.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPhantomCSS[0m[38;5;12m (https://github.com/Huddle/PhantomCSS) - Visual/CSS regression testing with PhantomJS or SlimerJS. No longer maintained since 22 Dec 2017.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPhantomFlow[0m[38;5;12m (https://github.com/Huddle/PhantomFlow) - Experimental approach to UI testing, based on Decision Trees.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDalekJS[0m[38;5;12m (https://github.com/dalekjs/dalek) - Automated cross browser testing with JavaScript. No longer maintained since 4 Jun 2017.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mdpxdt[0m[38;5;12m (https://github.com/bslatkin/dpxdt) - End-to-end testing with Python.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisual Review[0m[38;5;12m (https://github.com/xebia/VisualReview) - A human-friendly tool for testing and reviewing visual regressions.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHuxley[0m[38;5;12m (https://github.com/facebookarchive/huxley) - Python framework based on [39m[38;5;14m[1mSelenium Webdriver[0m[38;5;12m (https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mWebdriverCSS[0m[38;5;12m (https://github.com/webdriverio/webdrivercss) - WebdriverCSS sits on top of [39m[38;5;14m[1mWebdriver.io[0m[38;5;12m (https://github.com/webdriverio/webdriverio/) and hooks into [39m[38;5;14m[1mSelenium[0m[38;5;12m (https://github.com/SeleniumHQ/selenium).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mGemini[0m[38;5;12m [39m[38;5;12m(https://github.com/gemini-testing/gemini)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mFeature[39m[38;5;12m [39m[38;5;12mrich[39m[38;5;12m [39m[38;5;12mframework[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12msupport[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;14m[1mSelenium[0m[38;5;12m [39m[38;5;12m(https://github.com/SeleniumHQ/selenium)[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;14m[1mCasperJS[0m[38;5;12m [39m[38;5;12m(https://github.com/casperjs/casperjs).[39m[38;5;12m [39m[38;5;12mGemini[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mdeprecated,[39m[38;5;12m [39m[38;5;12muse[39m[38;5;12m [39m[38;5;12mhermione[39m[38;5;12m [39m
|
||
[38;5;12minstead.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOcularJS[0m[38;5;12m (https://github.com/mmacartney10/ocularjs) - uses [39m[38;5;14m[1mPhantomJS[0m[38;5;12m (https://github.com/ariya/phantomjs).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mtrifleJS[0m[38;5;12m (https://github.com/sdesalas/trifleJS) - Headless automation for Internet Explorer. (last update 2016)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCasperJS[0m[38;5;12m (https://github.com/casperjs/casperjs) - Navigation scripting and testing utility for PhantomJS and SlimerJS. (archived 2018)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mNavalia[0m[38;5;12m (https://github.com/joelgriffith/navalia) - Browser Automation based on headless Chrome and GraphQL. (archived 2018)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mChromeless[0m[38;5;12m (https://github.com/graphcool/chromeless) - Chrome automation made simple. Runs locally or headless on AWS Lambda. (archived 2018)[39m
|
||
|
||
[38;2;255;187;0m[4mMiscellaneous[0m
|
||
|
||
[38;2;255;187;0m[4mContributing[0m
|
||
|
||
[38;5;12mSee the [39m[38;5;14m[1mContribution Guide[0m[38;5;12m (.github/CONTRIBUTING.md) for details on how to contribute.[39m
|
||
|
||
[38;2;255;187;0m[4mCode of Conduct[0m
|
||
|
||
[38;5;12mSee the [39m[38;5;14m[1mCode of Conduct[0m[38;5;12m (.github/CODE-OF-CONDUCT.md) for details. Basically it comes down to:[39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mIn the interest of fostering an open and welcoming environment, we as[39m
|
||
[38;5;12mcontributors and maintainers pledge to making participation in our project and[39m
|
||
[38;5;12mour community a harassment-free experience for everyone, regardless of age, body[39m
|
||
[38;5;12msize, disability, ethnicity, gender identity and expression, level of experience,[39m
|
||
[38;5;12mnationality, personal appearance, race, religion, or sexual identity and orientation.[39m
|
||
|
||
[38;2;255;187;0m[4mLicense[0m
|
||
|
||
[38;5;14m[1m![0m[38;5;12mCC-BY-SA[39m[38;5;14m[1m (http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-sa.svg)[0m[38;5;12m (http://creativecommons.org/licenses/by-sa/4.0/)[39m
|
||
|
||
[38;5;12mThis work is licensed under a [39m[38;5;14m[1mCreative Commons Attribution-ShareAlike 4.0 International License[0m[38;5;12m (http://creativecommons.org/licenses/by-sa/4.0/).[39m
|
||
[38;5;12mLicense holders are [39m[38;5;14m[1mall contributors[0m[38;5;12m (https://github.com/mojoaxel/awesome-regression-testing/graphs/contributors).[39m
|