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

Cypress接入lighthouse插件cy.lighthouse() is not a function报错

问题原因

抛出cy.lighthouse() is not a function错误的核心原因是cypress-audit初始化配置缺失,没有完成插件注册和自定义命令挂载:

  • 你仅在plugins配置文件中引入了cypress-audit导出的方法,没有在Cypress的事件钩子中绑定对应逻辑,插件实际并未生效
  • cypress-audit的完整配置分为插件端能力注册、支持文件自定义命令挂载两部分,你当前只写了包引入语句,两部分的核心注册逻辑都为空,Cypress运行实例上不会挂载lighthouse相关自定义命令,调用时就会报方法不存在的错误。
修复步骤

按照以下步骤补全配置即可:

1. 补全插件端配置

打开cypress/plugins/index.js文件,替换为如下完整配置,完成插件事件和任务注册:

const { lighthouse, pa11y, prepareAudit } = require("cypress-audit");

module.exports = (on, config) => {
  // 绑定浏览器启动前的审计初始化钩子
  on("before:browser:launch", (browser = {}, launchOptions) => {
    prepareAudit(launchOptions);
    // Chromium内核浏览器需要指定调试端口,否则审计能力无法连通
    if (browser.family === 'chromium' && browser.name !== 'electron') {
      launchOptions.args.push('--remote-debugging-port=9222')
    }
    return launchOptions
  });

  // 注册审计相关的Cypress任务,供自定义命令调用
  on("task", {
    lighthouse: lighthouse(),
    pa11y: pa11y(),
  });
};

2. 补全支持文件的命令挂载

找到项目支持目录下的命令配置文件:

  • Cypress 10以下版本:cypress/support/commands.js
  • Cypress 10及以上版本:E2E测试对应cypress/support/e2e.js,组件测试对应cypress/support/component.js

在对应文件顶部加入如下引入语句,把cypress-audit提供的自定义命令挂载到cy实例上:

import "cypress-audit/commands";

3. 重启Cypress验证

配置修改完成后必须完全关闭重启Cypress运行器(插件配置修改不会触发热更新),之后即可正常调用cy.lighthouse()、cy.pa11y()方法。

注意:cypress-audit的Lighthouse能力仅支持Chromium内核浏览器(Chrome、Edge、Electron),在Firefox、Safari下运行会抛出兼容性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:51:23