From 893e6a303792af6c088b9a889e42c307abc73509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Fri, 23 Feb 2024 09:30:29 +0100 Subject: [PATCH 1/2] feat(testing): update cypress version --- packages/cypress/src/utils/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cypress/src/utils/versions.ts b/packages/cypress/src/utils/versions.ts index 1e52447f29fae..2be49d83936f4 100644 --- a/packages/cypress/src/utils/versions.ts +++ b/packages/cypress/src/utils/versions.ts @@ -2,7 +2,7 @@ export const nxVersion = require('../../package.json').version; export const eslintPluginCypressVersion = '^2.13.4'; export const typesNodeVersion = '18.16.9'; export const cypressViteDevServerVersion = '^2.2.1'; -export const cypressVersion = '13.6.4'; +export const cypressVersion = '^13.6.6'; export const cypressWebpackVersion = '^2.0.0'; export const webpackHttpPluginVersion = '^5.5.0'; export const viteVersion = '~5.0.0'; From 01352502edaa374fdf4204a5c8d09b6ea557883f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Fri, 23 Feb 2024 12:28:56 +0100 Subject: [PATCH 2/2] feat(testing): add migration to bump cypress version --- packages/cypress/migrations.json | 6 +++ .../update-cypress-version-13-6-6.spec.ts | 42 +++++++++++++++++++ .../update-cypress-version-13-6-6.ts | 16 +++++++ 3 files changed, 64 insertions(+) create mode 100644 packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.spec.ts create mode 100644 packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.ts diff --git a/packages/cypress/migrations.json b/packages/cypress/migrations.json index 25abb73638e35..b3d3cbc3cad2c 100644 --- a/packages/cypress/migrations.json +++ b/packages/cypress/migrations.json @@ -47,6 +47,12 @@ "version": "16.8.0-beta.4", "description": "Update to Cypress v13. Most noteable change is video recording is off by default. This migration will only update if the workspace is already on Cypress v12. https://docs.cypress.io/guides/references/migration-guide#Migrating-to-Cypress-130", "implementation": "./src/migrations/update-16-8-0/cypress-13" + }, + "update-cypress-version-13-6-6": { + "cli": "nx", + "version": "18.1.0-beta.3", + "description": "Update to Cypress ^13.6.6 if the workspace is using Cypress v13 to ensure workspaces don't use v13.6.5 which has an issue when verifying Cypress.", + "implementation": "./src/migrations/update-18-1-0/update-cypress-version-13-6-6" } }, "packageJsonUpdates": { diff --git a/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.spec.ts b/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.spec.ts new file mode 100644 index 0000000000000..e44f80369fd1d --- /dev/null +++ b/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.spec.ts @@ -0,0 +1,42 @@ +import { readJson, updateJson, type Tree } from '@nx/devkit'; +import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; +import * as cypressVersionUtils from '../../utils/cypress-version'; +import migration from './update-cypress-version-13-6-6'; + +describe('update-cypress-version migration', () => { + let tree: Tree; + + function setCypressVersion(version: string) { + updateJson(tree, 'package.json', (json) => { + json.devDependencies ??= {}; + json.devDependencies.cypress = version; + return json; + }); + const major = parseInt(version.split('.')[0].replace('^', ''), 10); + jest + .spyOn(cypressVersionUtils, 'installedCypressVersion') + .mockReturnValue(major); + } + + beforeEach(() => { + tree = createTreeWithEmptyWorkspace(); + }); + + it('should bump cypress version to ^13.6.6', async () => { + setCypressVersion('^13.0.0'); + + await migration(tree); + + const { devDependencies } = readJson(tree, 'package.json'); + expect(devDependencies.cypress).toBe('^13.6.6'); + }); + + it('should not update cypress version if it is not >= 13', async () => { + setCypressVersion('^12.0.0'); + + await migration(tree); + + const { devDependencies } = readJson(tree, 'package.json'); + expect(devDependencies.cypress).toBe('^12.0.0'); + }); +}); diff --git a/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.ts b/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.ts new file mode 100644 index 0000000000000..dd92ef72175c5 --- /dev/null +++ b/packages/cypress/src/migrations/update-18-1-0/update-cypress-version-13-6-6.ts @@ -0,0 +1,16 @@ +import { + addDependenciesToPackageJson, + formatFiles, + type Tree, +} from '@nx/devkit'; +import { installedCypressVersion } from '../../utils/cypress-version'; + +export default async function (tree: Tree) { + if (installedCypressVersion() < 13) { + return; + } + + addDependenciesToPackageJson(tree, {}, { cypress: '^13.6.6' }); + + await formatFiles(tree); +}