You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中Cypress测试遇peer依赖冲突问题求助

解决GitHub Actions中Cypress peer依赖冲突问题

问题背景

配置GitHub Actions的Cypress自动化测试工作流时,遇到peer依赖冲突:cypress-plugin-snapshots@1.4.4要求peer依赖cypress@^4.5.0,但项目使用的是cypress@^8.4.1。手动添加npm ci --legacy-peer-deps安装依赖后,由于Cypress Run Action会自行执行npm ci,问题仍未解决。

错误信息

npm ERR! While resolving: cypress-plugin-snapshots@1.4.4
npm ERR! Found: cypress@8.4.1
npm ERR! node_modules/cypress
npm ERR!   dev cypress@"^8.4.1" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer cypress@"^4.5.0" from cypress-plugin-snapshots@1.4.4
npm ERR! node_modules/cypress-plugin-snapshots
npm ERR!   dev cypress-plugin-snapshots@"1.4.4" from the root project
npm ERR! 
npm ERR! Conflicting peer dependency: cypress@4.12.1
npm ERR! node_modules/cypress
npm ERR!   peer cypress@"^4.5.0" from cypress-plugin-snapshots@1.4.4
npm ERR!   node_modules/cypress-plugin-snapshots
npm ERR!     dev cypress-plugin-snapshots@"1.4.4" from the root project

当前工作流YAML片段

jobs:
  cypress-run:
    runs-on: ubuntu-latest
      
    steps:
      - name: Checkout
        uses: actions/checkout@v3 
      
      - name: Cypress Run
        uses: cypress-io/github-action@v4
        with:
          build: npm run build
          start: npm start 
          spec: cypress/integration/example.js

package.json内容

{
  "name": "cypressautomations",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "cypress:open": "cypress open",
    "cypress:debug": "cross-env CYPRESS_REMOTE_DEBUGGING_PORT=9222 cypress open",
    "delete-mochawesome-folder": "rm -f mochawesome-report/*.json",
    "e2e_mochawesome": "yarn cypress run --spec cypress/integration/Tests/*.js",
    "merge-json": "npx mochawesome-merge --reportDir mochawesome-report > mochawesome1.json",
    "html-generator": " npx mochawesome-report-generator mochawesome1.json"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@cypress/snapshot": "2.1.7",
    "cross-env": "7.0.3",
    "cypress": "^8.4.1",
    "cypress-fail-on-console-error": "2.0.6",
    "cypress-multi-reporters": "1.4.0",
    "cypress-plugin-snapshots": "1.4.4",
    "cypress-wait-until": "1.7.1",
    "eslint": "7.26.0"
  },
  "dependencies": {
    "@azure/cosmos": "3.10.5",
    "bson-ext": "4.0.1",
    "dotenv": "8.2.0",
    "kerberos": "1.1.7",
    "lodash": "4.17.21",
    "mocha-junit-reporter": "2.0.0",
    "mochawesome": "6.2.2",
    "mochawesome-merge": "4.2.0",
    "mochawesome-report-generator": "5.2.0",
    "mongodb": "4.1.2",
    "mongodb-client-encryption": "1.2.7"
  },
  "peerDependencies": {
    "mocha": "3.1.2"
  }
}

已尝试的步骤

- name: Install Dependencies
  run: npm ci --legacy-peer-deps

解决方案

方案一:禁用Cypress Action自动安装依赖

Cypress GitHub Action默认会执行npm ci,通过设置install: false跳过自动安装,手动执行带--legacy-peer-deps的安装命令。修改后的工作流:

jobs:
  cypress-run:
    runs-on: ubuntu-latest
      
    steps:
      - name: Checkout
        uses: actions/checkout@v3 
      
      - name: Install Dependencies
        run: npm ci --legacy-peer-deps
      
      - name: Cypress Run
        uses: cypress-io/github-action@v4
        with:
          install: false  # 跳过Action自带的依赖安装
          build: npm run build
          start: npm start 
          spec: cypress/integration/example.js

方案二:升级兼容版本的cypress-plugin-snapshots

查看cypress-plugin-snapshots的更新日志,找到支持Cypress 8.x的版本,更新package.json中的依赖版本后提交到仓库。例如:

"devDependencies": {
  // ...
  "cypress-plugin-snapshots": "最新兼容版本"
}

方案三:使用npm overrides强制解决冲突

如果你的npm版本>=8.3.0,可以在package.json中添加overrides字段,强制cypress-plugin-snapshots使用项目中的Cypress版本:

{
  // ... 其他原有内容
  "overrides": {
    "cypress-plugin-snapshots": {
      "cypress": "^8.4.1"
    }
  }
}

提交修改后,GitHub Actions中执行默认的npm ci即可解决冲突。

内容的提问来源于stack exchange,提问作者drenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:45:30