Skip to content

Commit 3fe99fa

Browse files
committed
feat: update to Cypress 13
update vitest to v2 BREAKING CHANGE: following Cypress, we've dropped support for the Node < 14 - please update your Node version.
1 parent 5a512fa commit 3fe99fa

File tree

11 files changed

+1074
-934
lines changed

11 files changed

+1074
-934
lines changed

examples/next/cypress/support/e2e.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,18 @@
1616
// Import commands.js using ES2015 syntax:
1717
import './commands'
1818

19+
Cypress.on('window:before:load', win => {
20+
// TODO: remove when Cypress update electron to version >= 28.0.0
21+
win.URL.canParse = function canParse(url) {
22+
const urlString = String(url);
23+
const base = length < 2 || arguments[1] === undefined ? undefined : String(arguments[1]);
24+
try {
25+
return !!new URL(urlString, base);
26+
} catch (error) {
27+
return false;
28+
}
29+
};
30+
});
31+
1932
// Alternatively you can use CommonJS syntax:
2033
// require('./commands')

examples/next/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"@types/node": "18.0.6",
2222
"@types/react": "18.0.15",
2323
"@types/react-dom": "18.0.6",
24-
"cypress": "12.12.0",
24+
"cypress": "13.14.2",
2525
"start-server-and-test": "1.15.2",
2626
"typescript": "4.7.4"
2727
}

examples/webpack/cypress.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { defineConfig } from "cypress";
22
import { initPlugin } from "@frsource/cypress-plugin-visual-regression-diff/plugins";
33

44
module.exports = defineConfig({
5-
video: false,
65
e2e: {
76
setupNodeEvents(on, config) {
87
initPlugin(on, config);

examples/webpack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"@frsource/cypress-plugin-visual-regression-diff": "workspace:*",
2020
"@vue/cli-plugin-e2e-cypress": "5.0.8",
2121
"@vue/cli-service": "5.0.8",
22-
"cypress": "12.12.0",
22+
"cypress": "13.14.2",
2323
"typescript": "5.0.4"
2424
}
2525
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
"test:e2e:ci": "pnpm -r test:e2e:ci"
2121
},
2222
"engines": {
23-
"node": ">=10"
23+
"node": ">=14"
2424
},
2525
"packageManager": "[email protected]",
2626
"peerDependencies": {
27-
"cypress": ">=4.5.0"
27+
"cypress": ">=13.0.0"
2828
},
2929
"devDependencies": {
3030
"@frsource/eslint-config": "1.15.0",

packages/cypress-plugin-visual-regression-diff/package.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@
5757
"test:integration:ci": "CI=true vitest run --coverage"
5858
},
5959
"engines": {
60-
"node": ">=10"
60+
"node": ">=14"
6161
},
6262
"packageManager": "[email protected]",
6363
"peerDependencies": {
64-
"cypress": ">=4.5.0"
64+
"cypress": ">=13.0.0"
6565
},
6666
"devDependencies": {
6767
"@frsource/prettier-config": "^1.11.0",
@@ -70,17 +70,16 @@
7070
"@types/pngjs": "6.0.4",
7171
"@types/sharp": "0.32.0",
7272
"@types/tmp": "0.2.6",
73-
"@vitest/coverage-c8": "0.33.0",
7473
"cpy-cli": "4.2.0",
75-
"cypress": "12.14.0",
74+
"cypress": "13.14.2",
7675
"del-cli": "5.0.1",
7776
"microbundle": "0.15.1",
7877
"prettier": "3.3.2",
7978
"sanitize-filename": "1.6.3",
8079
"tmp-promise": "3.0.3",
81-
"typescript": "5.1.6",
82-
"vite-tsconfig-paths": "4.2.1",
83-
"vitest": "0.33.0"
80+
"typescript": "5.6.2",
81+
"vite-tsconfig-paths": "5.0.1",
82+
"vitest": "2.1.1"
8483
},
8584
"keywords": [
8685
"Cypress",
@@ -97,13 +96,13 @@
9796
"Cypress image snapshot"
9897
],
9998
"dependencies": {
100-
"@frsource/base64": "1.0.30",
99+
"@frsource/base64": "1.0.76",
101100
"glob": "8.1.0",
102101
"meta-png": "1.0.6",
103102
"move-file": "2.1.0",
104103
"pixelmatch": "5.3.0",
105104
"pngjs": "7.0.0",
106-
"sharp": "0.32.6"
105+
"sharp": "0.33.5"
107106
},
108107
"publishConfig": {
109108
"access": "public"

packages/cypress-plugin-visual-regression-diff/src/__snapshots__/support.test.ts.snap

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,101 @@
1-
// Vitest Snapshot v1
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

33
exports[`generateOverlayTemplate > generates proper template 1`] = `
4-
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
5-
<header style=\\"position:static\\">
6-
<nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
4+
"<div class="cp-visual-regression-diff-overlay runner" style="position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column">
5+
<header style="position:static">
6+
<nav style="display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;">
77
<h2>some title - screenshot diff</h2>
8-
<form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
9-
<button type=\\"submit\\"><i class=\\"fa fa-check\\"></i> Update screenshot</button>
10-
<button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
8+
<form style="display:flex;align-items:center;gap:5px;text-align:right">
9+
<button type="submit"><i class="fa fa-check"></i> Update screenshot</button>
10+
<button type="button" data-type="close"><i class="fa fa-times"></i> Close</button>
1111
<form>
1212
</nav>
1313
</header>
14-
<div style=\\"padding:15px;overflow:auto\\">
15-
<div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
14+
<div style="padding:15px;overflow:auto">
15+
<div style="display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px">
1616
<div
17-
style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
18-
onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
19-
onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
17+
style="position:relative;background:#fff;border:solid 15px #fff"
18+
onmouseover="this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1"
19+
onmouseleave="this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0"
2020
>
2121
<h3>New screenshot (hover mouse away too see the old one):</h3>
22-
<img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
23-
<div style=\\"position:absolute;top:0;left:0;background:#fff\\">
22+
<img style="min-width:300px;width:100%;opacity:0" src="data:image/png;base64,img-new-base64" />
23+
<div style="position:absolute;top:0;left:0;background:#fff">
2424
<h3>Old screenshot (hover over to see the new one):</h3>
25-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
25+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-old-base64" />
2626
</div>
2727
</div>
28-
<div style=\\"background:#fff;border:solid 15px #fff\\">
28+
<div style="background:#fff;border:solid 15px #fff">
2929
<h3>Diff between new and old screenshot</h3>
30-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
30+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-diff-base64" />
3131
</div>
3232
</div>
3333
</div>
3434
</div>"
3535
`;
3636
3737
exports[`generateOverlayTemplate > generates proper template 2`] = `
38-
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
39-
<header style=\\"position:static\\">
40-
<nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
38+
"<div class="cp-visual-regression-diff-overlay runner" style="position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column">
39+
<header style="position:static">
40+
<nav style="display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;">
4141
<h2>some title - screenshot diff</h2>
42-
<form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
42+
<form style="display:flex;align-items:center;gap:5px;text-align:right">
4343
Image was already updated, rerun test to see new comparison
44-
<button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
44+
<button type="button" data-type="close"><i class="fa fa-times"></i> Close</button>
4545
<form>
4646
</nav>
4747
</header>
48-
<div style=\\"padding:15px;overflow:auto\\">
49-
<div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
48+
<div style="padding:15px;overflow:auto">
49+
<div style="display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px">
5050
<div
51-
style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
52-
onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
53-
onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
51+
style="position:relative;background:#fff;border:solid 15px #fff"
52+
onmouseover="this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1"
53+
onmouseleave="this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0"
5454
>
5555
<h3>New screenshot (hover mouse away too see the old one):</h3>
56-
<img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
57-
<div style=\\"position:absolute;top:0;left:0;background:#fff\\">
56+
<img style="min-width:300px;width:100%;opacity:0" src="data:image/png;base64,img-new-base64" />
57+
<div style="position:absolute;top:0;left:0;background:#fff">
5858
<h3>Old screenshot (hover over to see the new one):</h3>
59-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
59+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-old-base64" />
6060
</div>
6161
</div>
62-
<div style=\\"background:#fff;border:solid 15px #fff\\">
62+
<div style="background:#fff;border:solid 15px #fff">
6363
<h3>Diff between new and old screenshot</h3>
64-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
64+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-diff-base64" />
6565
</div>
6666
</div>
6767
</div>
6868
</div>"
6969
`;
7070
7171
exports[`generateOverlayTemplate > generates proper template 3`] = `
72-
"<div class=\\"cp-visual-regression-diff-overlay runner\\" style=\\"position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column\\">
73-
<header style=\\"position:static\\">
74-
<nav style=\\"display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;\\">
72+
"<div class="cp-visual-regression-diff-overlay runner" style="position:fixed;z-index:10;top:0;bottom:0;left:0;right:0;display:flex;flex-flow:column">
73+
<header style="position:static">
74+
<nav style="display:flex;width:100%;align-items:center;justify-content:space-between;padding:10px 15px;">
7575
<h2>some title - screenshot diff</h2>
76-
<form style=\\"display:flex;align-items:center;gap:5px;text-align:right\\">
76+
<form style="display:flex;align-items:center;gap:5px;text-align:right">
7777
78-
<button type=\\"button\\" data-type=\\"close\\"><i class=\\"fa fa-times\\"></i> Close</button>
78+
<button type="button" data-type="close"><i class="fa fa-times"></i> Close</button>
7979
<form>
8080
</nav>
8181
</header>
82-
<div style=\\"padding:15px;overflow:auto\\">
83-
<div style=\\"display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px\\">
82+
<div style="padding:15px;overflow:auto">
83+
<div style="display:flex;justify-content:space-evenly;align-items:flex-start;gap:15px">
8484
<div
85-
style=\\"position:relative;background:#fff;border:solid 15px #fff\\"
86-
onmouseover=\\"this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1\\"
87-
onmouseleave=\\"this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0\\"
85+
style="position:relative;background:#fff;border:solid 15px #fff"
86+
onmouseover="this.querySelector('div').style.opacity=0,this.querySelector('img').style.opacity=1"
87+
onmouseleave="this.querySelector('div').style.opacity=1,this.querySelector('img').style.opacity=0"
8888
>
8989
<h3>New screenshot (hover mouse away too see the old one):</h3>
90-
<img style=\\"min-width:300px;width:100%;opacity:0\\" src=\\"data:image/png;base64,img-new-base64\\" />
91-
<div style=\\"position:absolute;top:0;left:0;background:#fff\\">
90+
<img style="min-width:300px;width:100%;opacity:0" src="data:image/png;base64,img-new-base64" />
91+
<div style="position:absolute;top:0;left:0;background:#fff">
9292
<h3>Old screenshot (hover over to see the new one):</h3>
93-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-old-base64\\" />
93+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-old-base64" />
9494
</div>
9595
</div>
96-
<div style=\\"background:#fff;border:solid 15px #fff\\">
96+
<div style="background:#fff;border:solid 15px #fff">
9797
<h3>Diff between new and old screenshot</h3>
98-
<img style=\\"min-width:300px;width:100%\\" src=\\"data:image/png;base64,img-diff-base64\\" />
98+
<img style="min-width:300px;width:100%" src="data:image/png;base64,img-diff-base64" />
9999
</div>
100100
</div>
101101
</div>

packages/cypress-plugin-visual-regression-diff/src/__snapshots__/task.hook.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Vitest Snapshot v1
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

33
exports[`compareImagesTask > when images shouldn't be updated > when old screenshot exists > when new image has different resolution > resolves with an error message 1`] = `
44
{

packages/cypress-plugin-visual-regression-diff/src/commands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ Cypress.Commands.add(
165165
.then(({ screenshotPath, title: titleFromTask }) => {
166166
title = titleFromTask;
167167
let imgPath: string;
168-
return ($el ? cy.wrap($el) : cy)
168+
return (($el ? cy.wrap($el) : cy) as Cypress.Chainable<unknown>)
169169
.screenshot(screenshotPath, {
170170
...screenshotConfig,
171171
onAfterScreenshot(el, props) {

packages/cypress-plugin-visual-regression-diff/vitest.config.ts renamed to packages/cypress-plugin-visual-regression-diff/vitest.config.mts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ export default defineConfig({
1313
exclude: exludeFiles,
1414
include: [testsGlob],
1515
coverage: {
16-
provider: 'c8',
16+
provider: 'v8',
1717
reporter: isCI
1818
? ['text', ['lcovonly', { projectRoot: '../..' }]]
1919
: ['text', 'lcov'],
20-
lines: 90,
21-
functions: 90,
22-
branches: 90,
23-
statements: 90,
20+
thresholds: {
21+
lines: 90,
22+
functions: 90,
23+
branches: 90,
24+
statements: 90,
25+
},
2426
},
2527
alias: {
2628
'@fixtures/*': path.resolve(__dirname, '__tests__', 'partials'),

0 commit comments

Comments
 (0)