From 2f5c765b4d8861ce19e017da5bd7906a6223852b Mon Sep 17 00:00:00 2001 From: Florian Giroud <6267288+fgiroud@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:05:27 +0200 Subject: [PATCH] Added functional tests for scatterplot facets * Added test for scatterplots * Enriched test docs with a section on visual testing Co-authored-by: Kush Trivedi <44091822+kushthedude@users.noreply.github.com> --- .../technical-reference/functional-tests.md | 131 ++++---- docs/static/img/failed-visual-test.png | Bin 0 -> 34013 bytes .../img/visual-test-cypress-failure.png | Bin 0 -> 68003 bytes main/tests/cypress/.gitignore | 1 + .../column/facet/scatterplot-facet.spec.js | 167 ++++++++++ main/tests/cypress/cypress/plugins/index.js | 7 +- .../scatterplot-default.snap.png | Bin 0 -> 14296 bytes .../scatterplot-facet-big-dot.snap.png | Bin 0 -> 4055 bytes .../scatterplot-facet-lin.snap.png | Bin 0 -> 3127 bytes .../scatterplot-facet-log.snap.png | Bin 0 -> 3003 bytes .../scatterplot-facet-regulat-dot.snap.png | Bin 0 -> 2934 bytes .../scatterplot-facet-small-dot.snap.png | Bin 0 -> 2186 bytes .../scatterplot-matrix-big-dot.snap.png | Bin 0 -> 17685 bytes .../scatterplot-matrix-lin.snap.png | Bin 0 -> 14296 bytes .../scatterplot-matrix-log.snap.png | Bin 0 -> 13336 bytes .../scatterplot-matrix-regulat-dot.snap.png | Bin 0 -> 13336 bytes .../scatterplot-matrix-small-dot.snap.png | Bin 0 -> 10601 bytes .../tests/cypress/cypress/support/commands.js | 5 + main/tests/cypress/package.json | 1 + main/tests/cypress/yarn.lock | 285 +++++++++++++++++- 20 files changed, 542 insertions(+), 55 deletions(-) create mode 100644 docs/static/img/failed-visual-test.png create mode 100644 docs/static/img/visual-test-cypress-failure.png create mode 100644 main/tests/cypress/cypress/integration/project/grid/column/facet/scatterplot-facet.spec.js create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-default.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-big-dot.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-lin.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-log.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-regulat-dot.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-small-dot.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-big-dot.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-lin.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-log.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-regulat-dot.snap.png create mode 100644 main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-small-dot.snap.png diff --git a/docs/docs/technical-reference/functional-tests.md b/docs/docs/technical-reference/functional-tests.md index 33851ce9d..315a79d05 100644 --- a/docs/docs/technical-reference/functional-tests.md +++ b/docs/docs/technical-reference/functional-tests.md @@ -13,8 +13,8 @@ With Cypress, tests are performing assertions using a real browser, the same way Cypress tests can be ran -- using the Cypress test runner (development mode) -- using a command line (CI/CD mode) +- using the Cypress test runner (development mode) +- using a command line (CI/CD mode) If you are writing tests, the Cypress test runner is good enough, and the command-line is mainly used by the CI/CD platform (Github actions) @@ -31,25 +31,25 @@ Good starting points with Cypress are the [Getting started guide](https://docs.c The general workflow of a Cypress test is to -- Start a browser (yarn run cypress open) -- Visit a URL -- Trigger user actions -- Assert that the DOM contains expected texts and elements using selectors +- Start a browser (yarn run cypress open) +- Visit a URL +- Trigger user actions +- Assert that the DOM contains expected texts and elements using selectors ## Getting started If this is the first time you use Cypress, it is recommended for you to get familiar with the tool. -- [Cypress overview](https://docs.cypress.io/guides/overview/why-cypress.html) -- [Cypress examples of tests and syntax](https://example.cypress.io/) +- [Cypress overview](https://docs.cypress.io/guides/overview/why-cypress.html) +- [Cypress examples of tests and syntax](https://example.cypress.io/) ### 1. Install Cypress You will need: -- [Node.js 10 or 12 and above](https://nodejs.org) -- [Yarn or NPM](https://yarnpkg.com/) -- A Unix/Linux shell environment or the Windows command line +- [Node.js 10 or 12 and above](https://nodejs.org) +- [Yarn or NPM](https://yarnpkg.com/) +- A Unix/Linux shell environment or the Windows command line To install Cypress and dependencies, run : @@ -81,10 +81,10 @@ Click on one of them and the test will start. ### 4. Add your first test -- Add a `test.spec.js` into the `main/tests/cypress/cypress/integration` folder. -- The test is instantly available in the list -- Click on the test -- Start to add some code +- Add a `test.spec.js` into the `main/tests/cypress/cypress/integration` folder. +- The test is instantly available in the list +- Click on the test +- Start to add some code ## Tests technical documentation @@ -94,10 +94,10 @@ A typical OpenRefine test starts with the following code ```javascript it('Ensure cells are blanked down', function () { - cy.loadAndVisitProject('food.mini') - cy.get('.viewpanel-sorting a').contains('Sort').click() - cy.get('.viewpanel').should('to.contain', 'Something') -}) + cy.loadAndVisitProject('food.mini'); + cy.get('.viewpanel-sorting a').contains('Sort').click(); + cy.get('.viewpanel').should('to.contain', 'Something'); +}); ``` The first noticeable thing about a test is the description (`Ensure cells are blanked down`), which describes what the test is doing. @@ -105,24 +105,24 @@ Lines usually starts with `cy.something...`, which is the main way to interact w A few examples: -- `cy.get('a.my-class')` will retrieve the `` element -- `cy.click()` will click on the element -- eventually, `cy.should()` will perform an assertion, for example that the element contains an expected text with `cy.should('to.contains', 'my text')` +- `cy.get('a.my-class')` will retrieve the `` element +- `cy.click()` will click on the element +- eventually, `cy.should()` will perform an assertion, for example that the element contains an expected text with `cy.should('to.contains', 'my text')` On top of that, OpenRefine contributors have added some functions for common OpenRefine interactions. For example -- `cy.loadAndVisitProject` will create a fresh project in OpenRefine -- `cy.assertCellEquals` will ensure that a cell contains a given value +- `cy.loadAndVisitProject` will create a fresh project in OpenRefine +- `cy.assertCellEquals` will ensure that a cell contains a given value See below on the dedicated section 'Testing utilities' ### Testing guidelines -- `cy.wait` should be used in the last resort scenario. It's considered a bad practice, though sometimes there is no other choice -- Tests should remain isolated from each other. It's best to try one feature at the time -- A test should always start with a fresh project -- The name of the files should mirror the OpenRefine UI organization +- `cy.wait` should be used in the last resort scenario. It's considered a bad practice, though sometimes there is no other choice +- Tests should remain isolated from each other. It's best to try one feature at the time +- A test should always start with a fresh project +- The name of the files should mirror the OpenRefine UI organization ### Testing utilities @@ -135,26 +135,26 @@ The most important utility method is `loadAndVisitProject`. This method will create a fresh OpenRefine project based on a dataset given as a parameter. The fixture parameter can be -- An arbitrary array, the first row is for the column names, other rows are for the values - Use an arbitrary array **only** if the test requires some specific grid values - **Example:** +- An arbitrary array, the first row is for the column names, other rows are for the values + Use an arbitrary array **only** if the test requires some specific grid values + **Example:** - ```javascript - const fixture = [ - ['Column A', 'Column B', 'Column C'], - ['0A', '0B', '0C'], - ['1A', '1B', '1C'], - ['2A', '2B', '2C'], - ] - cy.loadAndVisitProject(fixture) - ``` + ```javascript + const fixture = [ + ['Column A', 'Column B', 'Column C'], + ['0A', '0B', '0C'], + ['1A', '1B', '1C'], + ['2A', '2B', '2C'], + ]; + cy.loadAndVisitProject(fixture); + ``` -- A referenced dataset: `food.small` or `food.mini` - Most of the time, tests does not require any specific grid values - Use food.mini as much as possible, it loads 2 rows and very few columns in the grid - Use food.small if the test requires a few hundred rows in the grid +- A referenced dataset: `food.small` or `food.mini` + Most of the time, tests does not require any specific grid values + Use food.mini as much as possible, it loads 2 rows and very few columns in the grid + Use food.small if the test requires a few hundred rows in the grid - Those datasets live in `cypress/fixtures` + Those datasets live in `cypress/fixtures` ### Browsers @@ -166,11 +166,11 @@ See the [Cypress documentation](https://docs.cypress.io/guides/guides/launching- Tests are located in `main/tests/cypress/cypress` folder. The test should not use any file outside the cypress folder. -- `/fixtures` contains CSVs and OpenRefine project files used by the tests -- `/integration` contains the tests -- `/plugins` contains custom plugins for the OR project -- `/screenshots` and `/videos` contains the recording of the tests, Git ignored -- `/support` is a custom library of assertion and common user actions, to avoid code duplication in the tests themselves +- `/fixtures` contains CSVs and OpenRefine project files used by the tests +- `/integration` contains the tests +- `/plugins` contains custom plugins for the OR project +- `/screenshots` and `/videos` contains the recording of the tests, Git ignored +- `/support` is a custom library of assertion and common user actions, to avoid code duplication in the tests themselves ### Configuration @@ -178,7 +178,7 @@ Cypress execution can be configured with environment variables, they can be decl Available variables are -- OPENREFINE_URL, determine on which scheme://url:port to access OpenRefine, default to http://localhost:333 +- OPENREFINE_URL, determine on which scheme://url:port to access OpenRefine, default to http://localhost:333 Cypress contains [exaustive documentation](https://docs.cypress.io/guides/guides/environment-variables.html#Setting) about configuration, but here are two simple ways to configure the execution of the tests: @@ -194,6 +194,35 @@ You can pass variables at the command-line level yarn --cwd ./main/tests/cypress run cypress open --env OPENREFINE_URL="http://localhost:1234" ``` +### Visual testing + +Tests generally ensure application behavior by making assertions against the DOM, to ensure specific texts or css attributes are present in the document body. +Visual testing, on the contrary, is a way to test applications by comparing images. +A reference screenshot is taken the first time the test runs, and subsequent runs will compare a new screenshot against the reference, at the pixel level. + +Here is an [introduction to visual testing by Cypress](https://docs.cypress.io/plugins/directory#visual-testing). + +In some cases, we are using visual testing. +We are using [Cypress Image Snapshot](https://github.com/jaredpalmer/cypress-image-snapshot) + +Identified cases are so far: + +- testing images created by OpenRefine backend (scatterplots for example) + +Reference screenshots (Called snapshots), are stored in /cypress/snapshots. +And a snapshot can be taken for the whole page, or just a single part of the page. + +#### When a visual test fails + +First, Cypress will display the following error message: + +![Diff image when a visual test fails](/img/visual-test-cypress-failure.png) + +Then, a diff image will be created in /cypress/snapshots, this directory is ignored by Git. +The diff images shows the reference image on the left, the image that was taken during the test run on the right, and the diff in the middle. + +![Diff image when a visual test fails](/img/failed-visual-test.png) + ## CI/CD In CI/CD, tests are run headless, with the following command-line diff --git a/docs/static/img/failed-visual-test.png b/docs/static/img/failed-visual-test.png new file mode 100644 index 0000000000000000000000000000000000000000..3792b2b225e7c3fc0d01367d088d4daaa169dc6d GIT binary patch literal 34013 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/visual-test-cypress-failure.png b/docs/static/img/visual-test-cypress-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3f90048a114b48d1cf4b7b43187a53f48f0a0e GIT binary patch literal 68003 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/.gitignore b/main/tests/cypress/.gitignore index 748262044..7b63a4eb8 100644 --- a/main/tests/cypress/.gitignore +++ b/main/tests/cypress/.gitignore @@ -4,6 +4,7 @@ node_modules cypress/videos cypress/screenshots cypress/downloads +cypress/snapshots_diffs npm-debug.log cypress.env.json out \ No newline at end of file diff --git a/main/tests/cypress/cypress/integration/project/grid/column/facet/scatterplot-facet.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/facet/scatterplot-facet.spec.js new file mode 100644 index 000000000..2b4bfc0f5 --- /dev/null +++ b/main/tests/cypress/cypress/integration/project/grid/column/facet/scatterplot-facet.spec.js @@ -0,0 +1,167 @@ +// Common configuration for scatterplot snapshots +// 5% is required, there are some differences between a local run and the images on ubuntu (github actions) +const matchImageSnapshotOptions = { + failureThreshold: 0.05, + failureThresholdType: 'percent', +}; + +/** + * Those tests are generic test to ensure the general behavior of the various facets components + * It's using "text facet" as it is the most simple facet + */ +describe(__filename, function () { + it('Test and verify the matrix against a snapshot (3 integer columns)', function () { + cy.loadAndVisitProject('food.small', 'food-small'); + cy.castColumnTo('Water', 'number'); + cy.castColumnTo('Energ_Kcal', 'number'); + cy.castColumnTo('Protein', 'number'); + cy.columnActionClick('Protein', ['Facet', 'Scatterplot facet']); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-default', + matchImageSnapshotOptions + ); + }); + + it('Verify the scatterplot matrix order of elements', function () { + cy.loadAndVisitProject('food.small', 'food-small'); + cy.castColumnTo('Water', 'number'); + cy.castColumnTo('Energ_Kcal', 'number'); + cy.castColumnTo('Protein', 'number'); + cy.columnActionClick('Protein', ['Facet', 'Scatterplot facet']); + cy.get('.scatterplot-matrix-table').within(() => { + // Check row headers + cy.get('tr:first-child .column_header').should('to.contain', 'Water'); + cy.get('tr:nth-child(2) .column_header').should( + 'to.contain', + 'Energ_Kcal' + ); + cy.get('tr:nth-child(3) .column_header').should('to.contain', 'Protein'); + // check first row + cy.get('tr:first-child td:nth-child(2) a') + .invoke('attr', 'title') + .should('eq', 'Water (x) vs. Energ_Kcal (y)'); + cy.get('tr:first-child td:nth-child(3) a') + .invoke('attr', 'title') + .should('eq', 'Water (x) vs. Protein (y)'); + // check second row + cy.get('tr:nth-child(2) td:nth-child(2) a') + .invoke('attr', 'title') + .should('eq', 'Energ_Kcal (x) vs. Protein (y)'); + }); + }); + + it('Test the rendering options (lin, log, dot sizes) (visual testing)', function () { + cy.loadAndVisitProject('food.small', 'food-small'); + cy.castColumnTo('Water', 'number'); + cy.castColumnTo('Energ_Kcal', 'number'); + cy.castColumnTo('Protein', 'number'); + cy.columnActionClick('Protein', ['Facet', 'Scatterplot facet']); + + // test linear rendering + cy.get('.scatterplot-selectors label').contains('lin').click(); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-matrix-lin', + matchImageSnapshotOptions + ); + // test log rendering + cy.get('.scatterplot-selectors label').contains('log').click(); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-matrix-log', + matchImageSnapshotOptions + ); + + // test the small dots rendering + cy.get('label[title="Small Dot Size"]').click(); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-matrix-small-dot', + matchImageSnapshotOptions + ); + + // test the regular dots rendering + cy.get('label[title="Regular Dot Size"]').click(); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-matrix-regulat-dot', + matchImageSnapshotOptions + ); + + // test the big dots rendering + cy.get('label[title="Big Dot Size"]').click(); + cy.get('.scatterplot-matrix-table').matchImageSnapshot( + 'scatterplot-matrix-big-dot', + matchImageSnapshotOptions + ); + }); + + it('Test facet created from the scatterplot matrix', function () { + cy.loadAndVisitProject('food.small', 'food-small'); + cy.castColumnTo('Water', 'number'); + cy.castColumnTo('Energ_Kcal', 'number'); + cy.castColumnTo('Protein', 'number'); + cy.columnActionClick('Protein', ['Facet', 'Scatterplot facet']); + // test against the linear screenshot + cy.get( + '.scatterplot-matrix-table a[title="Water (x) vs. Protein (y)"]' + ).click(); + // test the facet + cy.getFacetContainer('Water (x) vs. Protein (y)').should('to.exist'); + // verify that all the buttons to change the scatterplot look&feel are there + export button + cy.getFacetContainer('Water (x) vs. Protein (y)').within(() => { + cy.get('label').contains('lin').should('to.exist'); + cy.get('label').contains('log').should('to.exist'); + cy.get('label[title="Rotated 45° Counter-Clockwise"]').should('to.exist'); + cy.get('label[title="No rotation"]').should('to.exist'); + cy.get('label[title="Rotated 45° Clockwise"]').should('to.exist'); + cy.get('label[title="Small Dot Size"]').should('to.exist'); + cy.get('label[title="Regular Dot Size"]').should('to.exist'); + cy.get('label[title="Big Dot Size"]').should('to.exist'); + cy.get('a').contains('export plot').should('to.exist'); + }); + }); + + // it('Test image rendering inside the facet (visual testing)', function () { + // cy.loadAndVisitProject('food.small', 'food-small'); + // cy.castColumnTo('Water', 'number'); + // cy.castColumnTo('Energ_Kcal', 'number'); + // cy.castColumnTo('Protein', 'number'); + // cy.columnActionClick('Protein', ['Facet', 'Scatterplot facet']); + // cy.get( + // '.scatterplot-matrix-table a[title="Water (x) vs. Protein (y)"]' + // ).click(); + + // // // verify that all the buttons to change the scatterplot look&feel are there + export button + // // // cy.getFacetContainer('Water (x) vs. Protein (y)').within(() => { + // // // test linear rendering + // // cy.get('#left-panel .scatterplot-selectors label').contains('lin').click(); + // // cy.get('#left-panel .facet-scatterplot-plot-container').matchImageSnapshot( + // // 'scatterplot-facet-lin', + // // matchImageSnapshotOptions + // // ); + // // test log rendering + // cy.get('#left-panel .scatterplot-selectors label').contains('log').click(); + // cy.get('#left-panel .facet-scatterplot-plot-container').matchImageSnapshot( + // 'scatterplot-facet-log', + // matchImageSnapshotOptions + // ); + + // // test the small dots rendering + // cy.get('#left-panel label[title="Small Dot Size"]').click(); + // cy.get('#left-panel .facet-scatterplot-plot-container').matchImageSnapshot( + // 'scatterplot-facet-small-dot', + // matchImageSnapshotOptions + // ); + + // // test the regular dots rendering + // cy.get('#left-panel label[title="Regular Dot Size"]').click(); + // cy.get('#left-panel .facet-scatterplot-plot-container').matchImageSnapshot( + // 'scatterplot-facet-regulat-dot', + // matchImageSnapshotOptions + // ); + + // // test the big dots rendering + // cy.get('#left-panel label[title="Big Dot Size"]').click(); + // cy.get('#left-panel .facet-scatterplot-plot-container').matchImageSnapshot( + // 'scatterplot-facet-big-dot', + // matchImageSnapshotOptions + // ); + // }); +}); diff --git a/main/tests/cypress/cypress/plugins/index.js b/main/tests/cypress/cypress/plugins/index.js index 48700726f..25a1e24b9 100644 --- a/main/tests/cypress/cypress/plugins/index.js +++ b/main/tests/cypress/cypress/plugins/index.js @@ -14,9 +14,14 @@ /** * @type {Cypress.PluginConfig} */ + +const { + addMatchImageSnapshotPlugin, +} = require('cypress-image-snapshot/plugin'); + module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config - + addMatchImageSnapshotPlugin(on, config); return config; }; diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-default.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-default.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..65b6d052df22f8b89b30ce4bc9e6ca4eb4d07fe7 GIT binary patch literal 14296 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-big-dot.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-big-dot.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2e19cd2aa5494ef7a397fba456d3cf1376b139 GIT binary patch literal 4055 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-lin.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-lin.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c90f9c2f34bdb6450b9c584b700528a6c72a0dd3 GIT binary patch literal 3127 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-log.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-log.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..62f2abf4f356022229cd840d0aa53621f5339d48 GIT binary patch literal 3003 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%0A_~KJxhtfk zKFoyz>s&A`5@y!>&*KEx|0AqV0L3-w52r{Ms#&{*FRC8D*J7%#QGcFm?GNo%j#)TT9Bv)WWB)fa6^ zOREj3s!_E!shi&4d%xU!Kb+@$_@C!@&Uwyw{#aWZGfp-UHaa>wPK3D$lBSD(3xJt+ z3KJ!z=;+ulBTQhZ82X{jxBd!2ohyIJ`?iR&yH{%5k@`T920Qn%m*fL_UJ%1S zMjosk1utfme``~E>c@RT>D4Dx#I7tB%H-j&i%`{;`twH*O8|zSt-fwEamcP2n6#}6 z^+br9EY|sqI4k*#fnw?F`choY9T+s0V5E6~&sdKZG!hMU@g9Z0zE?R>9QsR|rcrkp zYrSN_0y3~hVOEQm=C+V4sYrFcJX|&n!tgB+y3d7tv2P$=S5)7xj%^@H{bR~BG)vV! zM4(o9*vy}VXjUEY_TmZ>gdAp+m}J8iuYvM@NEiudSEb)Cwre2D|8oiAM`^!Giv<$h zd?ug;O?`d;=K4vga)-B6JpftbeAV8H(IJa?gkM%>OMvc*;;^>fryuT_j6SF_RW*dS zZL5bbO3c`(YX)m!FAyxc+7{@@83O!}s#lnkXdd~@l(~Dodm&-p6Vu2|<-KW@KFZHV zhlRje+3MGoZd-sgu>R3-VcVUx=>b5(%JY*YDA4y^$yj_5a)ET0Sf-x_m*bc68;a2- zY;!bivNp-aJe`y747zlCxEkmD_8oI}TEqmDSe(r-0u$)03{n^%kH6Y{H*>tjQ)B*& zD#6c&hXi0*uSM|56g9=M-LAC2JAPKwu>&(YOjdv6-Ry%Z6Vga}X9!n}^n7>luwk2+ zRt&kzBl{DTtKNsBuCKfYU@FO`56~yg%he^ZPIcv8Oghs>DmRaA&LuH~jOX?UB^2~H z;*#~EbRmYnZs6xXTLKEt=px?vfsT$1!!}=u^J%UV-PM4@ZZ=ImTF3;hx;RFgAQ@wX zZEeuxUXKtt`Dd^K4z7FS&0?wY-_WWhVH5iEpAmmO$!|CTGjQ;`J z_Oz>KL&iu14_!WE!@QHkdpy{Yu_aFlQW^{|e(&stC*14|zE^mD}(_ z@9o_%*FV2-1k2Hy$DbyYQ`6F+u=acQm+S={wm;t>jJD$_j+j>)16Cf%q{P(FQ>)3- z)i_KH021Ok4a31r#UyJ$E-5r97pg*Y1aQ7e&r5r$SWUt&7M$IC%>$k%EmAT?yP%u_}7Ow&l4gwdjVGs zGUocSZ?gKRSVi)zA8Oso|J0x7wKzeI2wbTBM!bI#6u5xemdm@;7$B*BQo>Py5U+}1 z^}|%fmH)oJ;*lf2;Cp>dZPLm?Oe2;HG|+z4d#ii1TSZ1lur?#2;XU@muBF}1O9uc z>qA0=RQL(HG^3Iv8QYwQo9npa3b5eJi65`Kp!TBtH+nllrb1#g3e=`la zn2~*;T;`-pz>f+~6cX7u)^r9>cJnC#o1p$>yeQx8wo9 zexUr!vy|tKBm|%R(v%STf+9=!1hnU<6~qxe8Ck=0K|-N89N5*4<-jA2hiIb}2h0K4LNv0SkP@jD&`-{BqosAXkn=9dfI<+<2Kj3vC*-DQK?= z5I(GVIaA3g9byGD6OEeI?Y}IlZtXGu7bX*{w{BtOBSvLiQiTi1>#cgxHUVak@DlYt zLRYYM``a_>`RwUi_BwZ_c=KKt7RrY0RZL328ufdxC6%QBR>zbR7<0@Nb;z$rwq~Pp z#+4H3c09PVq#87%e>|{tGIPShuWUG*9nMD9n7S*#{6q!5jBJirD-2en9-YcUS=G)B zhtAvUps(0SkIz08;M$Nr8u^2=$s$-A{_SBbUj)Tfjf;}v%cr?97!uD-n=q>pgHpt_ z3|@j!`ZSh1*VhhWwjMbrt-P#@5l(y3w!kBA$24dL?9wvkw~OC3=31X+MtRx=WRvD!pbQ@YVP3#75-fCJ|C@0OXCU(5_)|_>5e5iuPhN}5abP$~jHe!#;*ojUL zcq2#4FQYnxYLdu?Zk{iY$g%5>%7xYZsx>Y#;l-Ph&qt^nA(^;f?rSl7XUJA AQvd(} literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-small-dot.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-facet-small-dot.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbb237d279efe974df38b6c252103c6c6c64f02 GIT binary patch literal 2186 zcmZ`*eLT}^8&|YO#Bi{Qv)ORa$>tz$j~eqbX0nbvdSNlKqsXSb9n?rKUeXxDMyNR* zAL?}WIbJJs+HBfE+fg4339$-kOE1Fn)6@Cm`Q!QH{#}3E*LB^$`}$tj_j_MHKn&2+ zf$3;yXz1YsaU{U9Hy0QLe9d~{2n`Kz7#@fHF@4K|;7GFZduY$pWVdQ@^c6X;(glq} zz-wa4sm+JN9cg9FQL-q$=~~j7$!r7b@U54Auv^76c^G_(ObG=2>@B=Fz9IcPuT%1T z_p5QCW>$J#->Pc73o0_kxjzYvhX&*GM4w`VDw7`TnFb^n#B{1Yyc#qRRYfwbFCNPjT@RCj#ibG`g;tG4vg<2$oqTpSrbjcMv$=ObdO+n6{>vMkXWMeVI^iO*Tk`(9D`+jJr|@7S!V*7|tM1aHRe7RD zj!b9axuX7v4=j5>NWnQmZ9xAV`W}7o0giVfB}J=&a&;Yh*IdPn<^cdyjoH$-@9&Q^ zk_O5j6^dsvXi?QYtg#!9HtNIgzWZLXZqg1)noV?yXbPv@DH&TY$N}?Oq!t)MulnWT z$z?}J2C;Nl-!5Bygtn(dOg*)QtG(ZLD0rVh?$q+R-%tH{RqcyDWnJ^ANQb*&7Fu4J z%H-bz9O`j%{Ys#mkJj7=zO_GDq$Uz}wgrGr5 zKa7ZsW{{w!0W(K;)nmn1(|c=3Qn4JK55IxWt6L_;RWxXycpdjEs>@M)l>564`+kR8 zjG0SA7vDa7ZrNty&+*kA@gbOOIhhN{{bI&jR&SU>} z6DxL@XlA~?Jso-smH2v^#Y?x?Y<3zHkvV>b z$(=)GC8AcxD7U6jak%-{E`+7c@&^(fCwWIC0*{dix-(evaqcHR62P}d4d6NvhkCzW z5OqIfKnR(9WO!Jc=dh;)9b!2fy$+G(OD%@_TfDEc$ej&XaXZ~SH1JiI^Gzj$I&HA= z)+%Y%+x;Ft&_T%FLw)Dl(}?evJ1cMcjY0_ZKuKhuEE@&W&R?olWg|51zfCB+JlI|; z*&&|UR;_h#H@C+qj%~f&yuBq}?TdL~oO4r$WxrQ@r@0psIXuiduzz_WaUQh^Tzvd-6a52yq)}CP%h?Iw!Sw3}9xdRD^hOuS3RX zof(*H`wMAqUwBH+qNEj5=G*}$$+$4~Z>yFi8gt*VKkGVr-ATP4ED(wsJ|Ed#UWF?wFK zg$ov`B@3+$mC5qUWI`R#Z&WRn=;$s?3D6m&we{#*`_{{C1l<^bZ^Ks9bj7Ie;f%8I z&(B;#u3)ld(Vw??Au3%~03r-}nj7LEVDIU0+v?;L(RXV16l-8=%2x&-IpUY7YIg%z z76>^egQMoC+8e#wXPBQXYomSaO~r~WBWHCT-XBk@<-`yMy}ZHz2tO-fA(7eo$tp}0 z80zgVWD^yLBo)-7ZNEd?3fQY;Slr>pAZ_#R%$wJ$t&nJoQX9(V6U{`mH5%l?jGLN>b(>zcLUaMA@IswB4|28h#~ysQcxYM)avo{5RU0I9`-4 zOh2*QoJQ|-j|)#s5?CGCic#cYZ4n0&+B7uk)uI)fIpbQ1*KeCIh#_1}U4e}Qxfx?e zdEYWH$4dKkZLPBsIsRxK_Xalhop*>+#`&_l`~j*~?C5fE`3n;zF1~d$J)l>d`cJY4 zfoEf?jbjH6d=&NZzY5ns!n5hKi=KjmXvLOL4M%i>@au9TzNA~NJKo!KHx^fPAqLZ?hx2)b#tr#_INBUpR%DKvknefQ< z=&9S8ARF~+v@x=_H9L4tCN!S`&gyV`PWTu{V_^E6!FG)QC$b*EK(-fK7bz=c=gXU} zy>u3-ga1c=zg}a?A}B2a-5BD&0;qX<{PO_z<9GW;(Cn;9%WoCH8$$!{N5r-IkQx60 DMJ^Ja literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-big-dot.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-big-dot.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c21d4921c420523fcf7c664e1b33500f88c545e9 GIT binary patch literal 17685 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 Gul^4g5J?#T literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-lin.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-lin.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..65b6d052df22f8b89b30ce4bc9e6ca4eb4d07fe7 GIT binary patch literal 14296 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-log.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-log.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a788c9103cd8305094a972fee500067fcae58fb0 GIT binary patch literal 13336 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-regulat-dot.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-regulat-dot.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a788c9103cd8305094a972fee500067fcae58fb0 GIT binary patch literal 13336 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 literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-small-dot.snap.png b/main/tests/cypress/cypress/snapshots/project/grid/column/facet/scatterplot-facet.spec.js/scatterplot-matrix-small-dot.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ca9d107fe6ae05ca10cf5ca7ed936b9c374319 GIT binary patch literal 10601 zcmb7qcRba7-1l`glqe1fMRcslJd({tM`rdW8OO>dGo!NijE-3p4H3#7AsjoE$mST? zS=l_FpX+|c>$zX|bHAQHoEOJ$e7~Rhe!oB8aCKGrvu7@z`RlL0&MGQkHUIkSZ-4l? zbD9LcIWa+k`|B@GenqT|w%6Z_^`u@y?vD;vHhl$ca}`tHR;03b_I}vzafx71CQ}eq zYS+NM%l6t6_4OT#onP_FZz!(h`h~76_$n78f8WKOc2Akd?$I%H?z@wQlwvBob_47V zU$1+9OLth>+h3F_N$Z^MV#VX63RCRHx}P>)ymSeLieGUPqL-sb0Hu~u0!4YIdy zpIz$=IeUrDzA1txjIbc6pzmBY92VAbB2XnQHT7ciH6EU`sCc|-oGsC#3LjQbz#GFP z9TP^lk0B&&@B4=&CMP#zx%J;ae5ss*Mq@I_F_uzUu`4$A_PAG%9{sJPtn5;5%$uE) zgF@j|N$>*0!^7lLt`%3WUi}A)%ca9L<18%&(trK3fdxg#$Tlo*3Yxro_l`l@pCNvm z88$Oy9vAm}+c!#2R`!^;w|58a#>R%iWhhq{aRRHB`j|eZSLKZy`}42d@L{n2!K|z6;FtfJOZxP$`<;%k;ZZi!D>Yks&P4UGRggw)^_i-5+x0RI6JpbC? zAJ#o%QSGrbq-bPxX}oJ@Z5(z-KGR=hk#ACydWy+64$PkEJxxC_Fc5dh$$8~b_;2p8 z=dbvg@J!@Xy8at)@Aiz2cB_Y;W1PtF95EBgQ_He?wYTTXK9L>C+dy35@0*&LDY5Fj zSZe=M*4!K&9v)u(XTVNGOk7;lcZ(k#-^FY;^;MbgCB%gM-MdUOO-)Vd50)y(^J;1` zUPpw7Ul9{aeZ9K79~9W%uWxQ)5gr?By)w~s-_!Hk@bGOF74pW{`T3v6!RYv9SW$6t zaaeS8lZK&To7d#zB;`H-I;OhOZtS+NR6}d3klpDM$0W8V6IoeVV1iP6G;F#6!j zb6MS?1Yhg8_wHSyGn7jHby@X3K0b8e-7}3dYp8Qv*RI(*I$9Mw)@<1{!=k`41*|QjF=xkbXoV(UlokscO#<`Bf;zWN-+_2jE$p^w{pT0AVBFXV9gK} z<11dy;CO+4yrA{3xj9)YJ=Gsn35isA+dIR<9eO13r;8nj#WMZ=7>sz&Fv5c%@}E^# zOOVVjE#>CroeEc>d7?u;18?GZWB0V39F3X|WZGkHZEal`EQ_Tz@p=>wOGPm;#bR@5 z+R5ltT{Y372Fl2l0n?ki;pdy_T;1Fhm6Rq{+xc2FjEt21{3K&)Yo$sZ25-H%ME7e3 z>wZ?osI2Z2Rw%=fUGs!}T15l%n#s+Z$1PU2eX*%8Ua(%^H73k{%bT5@y&@^eD6g%3 z{^ZG%5XESGyQPBudHFBXxBD>ZUs)^{q@Cl&(`V;cHNAKuj~?UX#HR&b#;bu|A|PtX#(*ADQwEoPQB?@F1U6cDS2kiU(oRMe9vv-* z%l6szIqeCizQDxP?d9&_@pWV*hTwdxG}=PZhh)5qnW|p5z_`_GV{`LcUtcJ}xjMPY zwAbDJ`i%^B26`+``_VrS2L=ownG{r1aGOiRVNqt1ZLskJFvhFLm1MbDLPozJQqobCS zmp>IbG11y-q9oU=ICt^l>AA)Em${`e&AH#!*Z;UwRs>V`3X#*icgSss4vTt|mlq1P zm;u7YtHuO62MT{WrQP}cI)A%su}i*wZF>5`OIBW`XCG^#bHDLSPT>;k?CE6$$S%aC zClS<5+ReGh(W`gC?>8AGeUj=Sb3;^OA36wTH8nRUP}ZH69~--}S$C1{P zzPP}ujobn@zi9xj+uz?$dh+DT^O=v_(e}Yq0)P1k0;D6Q1pcp*;6=69A%aBm2-ubX$2&bVDFAKhvm6a37^CsX+ocrcF ze-`9yIBZ(W5~9GU{7Yk3hB)c!wlCqcH&0}%m`61g{$gNQR2sA%h^`MGJ}{S9SZZ9s z2$6s}+~ov6!;DQJi z)4`~zFY%b>c4joSRg_up8y$cdg_Z)zZn_1g)k9%~7w~ch=<(1hm@#^ESe)j+HC6J# zALc~r_YRW*^UKRQb#)Z-4t|mw(a|RuCH>O{t-CQau#E(}f(jBm1A=;tl!a z1SK=pziU5Eo|!^{vt%H{suwBLA&9)dlA5aNA~IT9)OEwPjPdG9s!F(FHaq%QcwRzQ zSyVqA1rdy?2sQ7DlvL(R0|V^ifgPVN4-fP>8#Lt?K_@g55>NNvKsKy6SQj8292|^& z{5j}EcFwTEmZ+vjRM!&k(2|YGgEh6NCT4VEa%QHgo10)vWu@43N$_QgrK`e%2wK~s zp_wKcP~P-k!nnF6Q=NbB5Mlw3Z13!36Becobr@8z0q-i%zIR~fvZ_CpnwsjY-PbEX z6&M!uc`D_u>I+x|l~45TJW>EfiGT(f$g*k2K5`>ZiL-HpzTm|}Mq0C!>B#{wkj?jY^+2=LegL9eywh&w~!Jaksn3QZudl|qb*yOL9)g#{hlNHRntLo zE6R9ImkMM1k!pN#F^2U6)ZZwzdrBDm>@0L0u-VtqKDD^MV!94yw3e=cL2HZjfeY)0 z>g3?4g-_2lNl13+JM0Wt*;u~}3^XW!uanr=*^BLeVz5?U-%LD-`fO(q^%=SK&Ye!T zZpqM~6pJTMPBTaus_JUX_IJ%}s$4`|nmJa@!pJ(~?V08EL-TgVe z?U{fB>&NF9L_Xa;+_?L#r>EX#shoJOcC%*r3T70+L|zh?S*y7tBCVy)^xx1jqigEb zyBkehEE{d^`Sz{xT48m=T<_bTMHZ)IAaz(_M*zESSq$C)BrJp!!=Whijk(?zd3hxd zHXV7($BvlFlK~+&vgwwM z`1?x%Dy-g`h#d0YU4&Pd8eBkNScsVao=D8be4k+dYpuM~T)=5?1ppKQgfqwI01zOJ zoKRF!Fy(a-3;|ep=FFL`F3;MVK0abInGbklqWg>+t)2 z4#c)=g%D36Ks7=Vp>Tj>fQ5W+X(4*8bqWI_=O8S4uweA65BHblZ+Sq2p2;_^_bs-! zy)gc&q$={NMVN=YAVZ@FVqS;A(jph)En{BVn5p34^XH+&4BkNAm;+qs^JnbA1mD5q zSFf%v)$TenSa)YOp=fDadUE7nzkWR)a>?=8%a_5B3!xz)BqrWdG`!WnWr4nghjmCd z$psTSZ0zQrmAs9NFQ*R$Q>-BY>_QYG_vjSr`%PpzdlKzsi$OO=9K5-MtCg?Yw{;4k~Ku?e#qAPDan6NAR|0 z>=i*42bVKBE@$`XulxWe)j~vS^K;+?E>**js|?4FAJ^8=DY`$a86}{i4HW^l5EgX2 zZZx)gCa0(fCI9uGQ|NE+-jpVbbjt#gr&lhycCPWd!tL8^@St(TzAIj*T`Pz zV6p7H;)02jFR-PK0gqPr!xR(%DZ)Q+rS>EDd63c{=Uib7osWeIpeq#y+BoUEX`mPg zAur*Ej`!l@y9@=7{NjXGDAOzgz^pOQ@)9hSOTuukBekBA1A=&EXJdL5%6Zi2vOH_j zg{CIzdn71QdVt3YBCQI_7Vy8Y4kG{o|LdZ3=m^h|7n0HPvZg2LX*0(Y?X5Xt0BJ#= z4^r{)xG~Nu$@63dUW(bQseC{YqtkSaK3WDVYc<{w9Fz!%rMc10fH34aymM`Kd6@`} z`IZGGD&CuDI%}3sBNx@oj7G1?9>F0CST>;=T1s;xGa4iB?(WG#ZB2>7=WubojXTse zx~n$TdM{*Wg<5TO$0z_zKrVWxZ}M=j%%QtR!A+S=Mrgxbq@Z>W^CLarvWz1Zi&LFj zUT%DP_3^>-;$dk0kVcP4#F;gEXdY-c&DkE;$Hz)H+<7(77_k2Mh){29(7DMS-0ppkEE@~P?+MbE&9 zY8+@RctPk{(4gMztDJJGS)3`3aPKgTVho~U`@uNqT)n?wN1vVGXFW(+3s84*&j+TKB1`<^K z>9txRS^@ooVoU6?GVzPZme8`k_T1-SiAT#}ge-QU!(v(U!EduTuuvF0`@jE)H$c62 zz*+^$V6B4tiYf7D!JOe&|GN)-A5bVt`i@SCFHn9IMDBSs2@INlCEDDYtgFBiHMO)* zr1H_x(P2R>!f1>`0*M$UK5F#If>memGMm(m7r<&q zdCpL|amcJGto=P;xZE^kr$BT5|2`T_K9!QvAhwZ&9O3%U+rh65hz-~}I#@~^#Tal0 zbq()hu^b^Q&PbRI0H*}k0zAgDW+PVpzdrImxPNeiVm3R0Y@#i@+zY8z-@)OHj8p9A zkiqwd+Rq+KY2TBQ6Lwae^T5PMgWY7f?s%QPrhUOi;7A*2M z`}O;qUq?q{p(sVMw}HN9jz`K~P&5=@$AeG1M>l|lg0|$ye>lGhPu&r_MMM^n&{zEQ z)rTfd1Y@JkUXN>2f2%+Gt*kKgUvqw7l?<$h+_;Kt$e!_S{)=}xjG>UGCn4XdN>@{O zSiU1G*Fa1{R243B&aMoJ|1NYLp=R(6L|AL9VFQkVTe3qNo`L((9~uimuB<*Ak71y< zwMG8n91(d2e+E|EQU2r4jmif;?{&|Q$G8$-y%GZf2g6rWnfTB_%UGN6=;ljuOO^9l zNHTN2eqERYD<(oLGPH21ei{1OU>Y!R$a}f_*bQSB`j~-`TbQrkNQL0JDy<3YMh$M!($-h7>{SG^_3!0`pIxf#M`fU|7%<8B*z-nQ zZk`|`vZX7)p;eL~FI9CMcmh9W%|841?#UlP#>pw%e_ViYWhMKl&_|E_O?*F|koUD` z7#@~P(n~i5I*5ulNK8l%A{Kw79lt8>kseG&n~+kIbQBa;!?LlV4;>)K87h7%<9Wg9 zc#XdY*o|E^MI~g9Xh^QQ4DrrzlUiR_z*uXgYZ_Jfp?-V-0-mF2l>QhI zcn~&x^lcQB;+xQUkkArD94y#oXFyIZoSD6t?yWvw1V z66MOlt3kAj!p;Ao716kJ(@0)iuoa$i_#Ctob;IPEq^Bpz=vqMxD`sUmi!4+SiKoMH z=!>$gj8j(JI=vsE_p8UHwX3*5svM4|Ke_hQ)?4&v$934wQO#6&3mbp+uS@@xAATaW zi1YQEcTFy1>YT@q?}MWRp&&YQD|Ryjlrd?~UeG@&1FfAMXOi8gSp zu^0@ZT@WO6G~5%COLb*!4Z1WLY$Iu@nJ%@PzKzhEaHVH|1JaXZjiiV2S923( zu(-@Nkc*&^kcj(dM>NW}i!aa|01H63ECcsS*&t1kM0<*QH3{>(2t-JW?A+*4b zkc297pGxtH&@#N=WY4kkIJ}E$f{Q|sAcudP2GEr_1lg&DMCDnNb~N-sY=i!%()h#s zAc6sA%WaD$u^PGtCewe%7C4nbnIj{n2FUJSUU|8`Y(4Uz-=Weks;koh_lHyh`u*)C5fr%WJ0tEp zL7g?0pv+tEGVz(TpnT#CLt*U>SK`L6oLE;7{faQge_zFLmLzlil; z&yiRquyoJ>3o!QIoD4V`I7f~kNoW1+(fdG z<2b@AKzgL+Q2jlt7La9&tqE4*rx$00BHtODlL87LjjM76atO#BW0fgTb8k0ov4GY)RG<%VfR3voREK zxDQvZ0Xba_=JS2zIqH{^oO}V{THXGC1Yu-AiEkeYQ~7G-RMS*ex9>o5?dsLB9H#xN zKtC)G5B5JdHLXl0s=0#VU%NNO=hk>u*tu6n&jrQ@6J9&Bd7{9)?jG*+fiC4cZ!|gq z{9zAx#mvF(GKZ)r9-$C>i=ziT2>&!Fa%BquQ6VWM<=fAntzO!CdL>}xw)Xa)Kx%Ne*|ZE*T; zH8QP&2!Y0=&|}$OXJd~G5{MaUv0Zqaj-MLz1Ps)!<+ml z>D`~*3W|!L<7adS9IOHBpkALp+&uj4Q-j#RyfaluV&yY6!cp&gc&z@ih+To8($v>i zFf_aQZ z==(=7>p2(&g45^0gW37{n>eu($n;Wx8hp-@(%z&Fn!5-xH~|$RGzZcIL@}VJ=gJ0e ze|ec=(gtMwv=8|DY1r9IH{RRypbM&^P4SVdHs4G zTE0{{zcn-?)qb2p;uA!-5>WgUV^>nx5Mk*1kDe}oD-AvMUmGE{pmO0~ym`Z=q@;9} zlk@qD7eOF-z#lO9GrvBQ6(D6`V1TGDV_%-%WDxg=dRthV8hY6$Y#dR*M)#LI_Zp@5 zj(1BRN(3Bk26W^64tGaein*o!6vg)R_Y-n&r+I;qydhF;?d>O*s+O%lmq!>XjEFvb zxbDB*9$?v>DS6-B{fe6wVBH2C7mX`|txz~1vy1$8JxZNMyVMU421gT;QzIJbZmQqE ze?0~o?P`Z$w{tsB86rVMUlJ|`t%#wSj-(2RdN~q3^%Va9faZ^AV7r^k93UaA07E_D zEpho^;O%S(+JO&*kb{9$zH3?CeM0jhr%>DO>Om6ijX@9T82Bbp@oNEDP>qz(k zR*n&#;xoEcj$x0$PhQ*-#9ArBAPPk2&&|!41SAbbq}HEPjBj;1`8Q5?rir@Go#*7_ z43f3B=73o)$X|l`4<3kTWMm*SZVkZ4tY_~t$AcgYo^bvF1MO%6x00HgHMgRoqOspb zukX~gyYyv(&;zXc0HCS1C?4rq z_&|_1ZAE&quRv^{Ed>eYrZ*3nnhH57Y2;H!V0EnA2)fT1QW1t`%rNOn4=|4Th(U88 zI%+5IWi`-f=>hYzHUKalhp7mTm#grVDH@s`s@cv!1QAdddWRo8Rem!+XJapR+sBX# z;e+Aor<7y)`;k5Hwzd(Nh1l>w?b#cc(Nxa?NZ^WLLSSr3i9)r-FwTHNK%4^eZ~^X> zHS@n550{|@v)@*wIRoz?Jr1o`BxCpvtl)WNWtI1VXC24+d-Lgz7>})Hy<+t z;6_plx!`S;JkZXQVRBR|68tQ?!8b%nNr4#@^`d_V2na33G{UkKfZNh3syR^*VLJ5~ z7Q_iqGyVmS>J<>Aqh6HOW)>w~=HVEEKAx)qh{C!nlg)JS1o&Y5Lur|YNB-mZB*wSQ zzd+9*Ap_t6|9A!y|CIK8rAxa>s$xs7Z4xCjbXQbBOaKI4u!vd@|21Z-R_)Y}I zA20c(Q=Uy^%OV3CwY>>W!@)ti7(hWfKKHm-L!iy6%?r61pfuVmQ@k6Xm2Jj-?NUTsm){Mgo^419&5I-QJG+%RfITHhvh)YfP zTmSuwEij~tcp8x2`uh6BRbIm`<7uEz&F2?m*asLpeG%dr z2N?Uv{GlH|eAEQY=nTo!fWHK)1GkIDvG7Q$xD~LL0-^VNUk`9F=Sg^itRpgqZG%WE z$p&c!a9ziBL`S*i^I(^sw^8Nj2JPM-$e4IV0bK1dE{pi%TPJ7&pj270YyBs_i@S`> z$Z)<8{cE29lcR}<%2R3NR+gk)IbHrEw-yfJfgvHXp zVV8mHRTGq?AD^y^q~aw&n&A0Ys(=lLUqy5$tX*G0Q>nvab8~YAHMN=fyN6=J!}qDR zdPYXNkaj9uw|zT1JDct{9IUyfSAc`_ATXvCfWaGzUPD=#jE9Fu1nzxRSja(n`u8|R zz|(g|Wf%jP=H?q$Bsc}^4z6!(2qeRaAkh8clnw3;Vuq&&Q?zwsA-B_PoSbHmqY->H z>r|lgTdqxaB4<{hB50|re_}fLed_^9=t9n zXfCqr4{w(UiPPLX`;Q` zVM=y^drUBEo7{8A%=fj z1Icyu^jZ`UUb5;X0lkxiE*g|5`fme~eA5tZbkQxu`f=Ba^4|?)KLM)q)$L)DEqewA z+F%mp47`QtS^?)I7TK;{i+ud}7!Ums-_`D$P^o+(6r&b^9&3LDBvV3G#4pu#8xaP=;1D z|HlF(EgaI@ivHk21QxzGYb2@NUvzR?om7MqLLm-=$W#nm^WJ08@ZP<9bRAQ!;{XO# zlHlYa)Kgn6nEJzDt*EGoT*t^L5~eAfoZ-*lh~M1&Jj}h##E^~IKFP@FQ~;7o&jnx- j2m^910gG-sJf$ES!_0H|RRxYv{-r3ViY<^eef&QFd4@qZ literal 0 HcmV?d00001 diff --git a/main/tests/cypress/cypress/support/commands.js b/main/tests/cypress/cypress/support/commands.js index 9870900dd..1fc084b73 100644 --- a/main/tests/cypress/cypress/support/commands.js +++ b/main/tests/cypress/cypress/support/commands.js @@ -11,6 +11,10 @@ import 'cypress-file-upload'; import 'cypress-wait-until'; +import { addMatchImageSnapshotCommand } from 'cypress-image-snapshot/command'; + +addMatchImageSnapshotCommand({ customDiffDir: 'cypress/snapshots_diffs' }); + /** * Return the .facets-container for a given facet name */ @@ -104,6 +108,7 @@ Cypress.Commands.add('doCreateProjectThroughUserInterface', () => { * Cast a whole column to the given type, using Edit Cell / Common transform / To {type} */ Cypress.Commands.add('castColumnTo', (selector, target) => { + cy.get('body[ajax_in_progress="false"]'); cy.get( '.data-table th:contains("' + selector + '") .column-header-menu' ).click(); diff --git a/main/tests/cypress/package.json b/main/tests/cypress/package.json index 8246d079f..7e9e74945 100644 --- a/main/tests/cypress/package.json +++ b/main/tests/cypress/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "cypress": "6.8.0", + "cypress-image-snapshot": "^4.0.1", "cypress-file-upload": "^5.0.3", "cypress-wait-until": "^1.7.1", "dotenv": "^8.2.0", diff --git a/main/tests/cypress/yarn.lock b/main/tests/cypress/yarn.lock index b96c4877d..90a0dab80 100644 --- a/main/tests/cypress/yarn.lock +++ b/main/tests/cypress/yarn.lock @@ -154,6 +154,13 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.1.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz" @@ -201,6 +208,13 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== +app-path@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/app-path/-/app-path-3.2.0.tgz#06d426e0c988885264e0aa0a766dfa2723491633" + integrity sha512-PQPaKXi64FZuofJkrtaO3I5RZESm9Yjv7tkeJaDz4EZMeBBfGtr5MyQ3m5AC7F0HVrISBLatPxAAAgvbe418fQ== + dependencies: + execa "^1.0.0" + arch@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz" @@ -260,6 +274,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@^1.2.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" @@ -458,6 +477,17 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz" @@ -474,6 +504,18 @@ cypress-file-upload@^5.0.3: dependencies: mime "^2.5.0" +cypress-image-snapshot@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cypress-image-snapshot/-/cypress-image-snapshot-4.0.1.tgz#59084e713a8d03500c8e053ad7a76f3f18609648" + integrity sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q== + dependencies: + chalk "^2.4.1" + fs-extra "^7.0.1" + glob "^7.1.3" + jest-image-snapshot "4.2.0" + pkg-dir "^3.0.0" + term-img "^4.0.0" + cypress-wait-until@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-1.7.1.tgz" @@ -765,6 +807,19 @@ eventemitter2@^6.4.2: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz" integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz" @@ -861,6 +916,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz" @@ -888,6 +950,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz" @@ -908,6 +979,18 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz" @@ -974,6 +1057,16 @@ globals@^13.6.0: dependencies: type-fest "^0.20.2" +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok= + +graceful-fs@^4.1.2: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz" @@ -1155,6 +1248,29 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +iterm2-version@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/iterm2-version/-/iterm2-version-4.2.0.tgz#b78069f747f34a772bc7dc17bda5bd9ed5e09633" + integrity sha512-IoiNVk4SMPu6uTcK+1nA5QaHNok2BMDLjSl5UomrOixe5g4GkylhPwuiGdw00ysSCrXAKNMfFTu+u/Lk5f6OLQ== + dependencies: + app-path "^3.2.0" + plist "^3.0.1" + +jest-image-snapshot@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-4.2.0.tgz#559d7ade69e9918517269cef184261c80029a69e" + integrity sha512-6aAqv2wtfOgxiJeBayBCqHo1zX+A12SUNNzo7rIxiXh6W6xYVu8QyHWkada8HeRi+QUTHddp0O0Xa6kmQr+xbQ== + dependencies: + chalk "^1.1.3" + get-stdin "^5.0.1" + glur "^1.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + rimraf "^2.6.2" + ssim.js "^3.1.1" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz" @@ -1225,6 +1341,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz" @@ -1315,12 +1438,20 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -1425,7 +1556,7 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^0.5.4: +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -1457,6 +1588,18 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz" @@ -1522,11 +1665,35 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz" @@ -1534,11 +1701,21 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz" @@ -1559,6 +1736,39 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pixelmatch@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.1.tgz#9e4e4f4aa59648208a31310306a5bed5522b0d65" + integrity sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ== + dependencies: + pngjs "^4.0.1" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +plist@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" + integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== + dependencies: + base64-js "^1.2.3" + xmlbuilder "^9.0.7" + xmldom "0.1.x" + +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" + integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -1680,6 +1890,13 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz" @@ -1709,6 +1926,11 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^7.2.1: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz" @@ -1716,6 +1938,13 @@ semver@^7.2.1: dependencies: lru-cache "^6.0.0" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz" @@ -1723,12 +1952,17 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -1767,6 +2001,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssim.js@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" + integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz" @@ -1821,6 +2060,11 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz" @@ -1870,6 +2114,14 @@ taffydb@2.6.2: resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= +term-img@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/term-img/-/term-img-4.1.0.tgz#5b170961f7aa20b2f3b22deb8ad504beb963a8a5" + integrity sha512-DFpBhaF5j+2f7kheKFc1ajsAUUDGOaNPpKPtiIMxlbfud6mvfFZuWGnTRpaujUa5J7yl6cIw/h6nyr4mSsENPg== + dependencies: + ansi-escapes "^4.1.0" + iterm2-version "^4.1.0" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz" @@ -1919,6 +2171,11 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -1949,6 +2206,11 @@ uniqid@^5.3.0: resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-5.3.0.tgz#4545f8e9c9a5830ef804e512cca6a9331e9761bf" integrity sha512-Jq8EzvAT8/CcLu8tzoSiylnzPkNhJJKpnMT964Dj1jI4pG4sKYP9aFVByNTp8KzMvYlW1Um63PCDqtOoujNzrA== +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz" @@ -2003,6 +2265,13 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz" @@ -2028,11 +2297,21 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +xmlbuilder@^9.0.7: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + xmlcreate@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497" integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== +xmldom@0.1.x: + version "0.1.31" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz"