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

如何在Cypress中访问React src目录外的本地HTML文件?

如何在Cypress中直接加载本地HTML文件(避免自动添加baseURL前缀)

Cypress默认会将cy.visit()的路径拼接上配置的baseURL,导致本地HTML文件无法正确访问,以下是几种可行的解决方法:

方法1:使用绝对文件路径(推荐)

直接通过本地文件协议(file://)加载HTML文件的绝对路径,Cypress会识别为本地资源,不会添加baseURL前缀。可以借助Node.js的__dirname或path模块拼接路径,避免硬编码:

// cypress.test.ts
import path from 'path';

it('访问本地HTML文件', () => {
  // 拼接test目录下chat.html的绝对路径
  const filePath = path.resolve(__dirname, 'chat.html');
  cy.visit(`file://${filePath}`);
  cy.contains('local file');
});

如果不想引入path模块,也可以直接用__dirname拼接:

it('访问本地HTML文件', () => {
  cy.visit(`file://${__dirname}/chat.html`);
  cy.contains('local file');
});

方法2:修改Cypress配置指定文件根目录

如果有多个本地HTML文件都在test目录下,可以修改Cypress配置,将fileServerFolder指向test目录,之后直接用相对路径访问即可:

  1. 修改cypress.config.ts:
import { defineConfig } from 'cypress';

export default defineConfig({
  e2e: {
    fileServerFolder: './test', // 设置文件服务根目录为test文件夹
    // 其他配置项...
  },
});
  1. 测试代码中直接访问文件名:
it('访问本地HTML文件', () => {
  cy.visit('/chat.html'); // 自动加载test/chat.html
  cy.contains('local file');
});

方法3:读取HTML内容注入到当前文档

如果HTML内容较为简单,也可以读取文件内容后直接写入当前测试页面的文档对象:

it('加载本地HTML内容', () => {
  cy.readFile('./test/chat.html').then((htmlContent) => {
    cy.document().then((doc) => {
      doc.write(htmlContent);
      doc.close();
    });
  });
  cy.contains('local file');
});

注意事项

  • __dirname在Cypress测试文件中指向当前测试文件所在的目录(即test目录),因此路径拼接无需额外调整。
  • 使用file://协议时,path.resolve会自动处理Windows和Linux的路径格式差异,避免路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:42:19