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

Storybook+Loki在CI环境运行截图测试时出现资源加载失败问题

解决Storybook 7.x + Loki 0.31.x在CI环境的资源加载失败问题

问题背景

React项目使用Storybook ^7.0.12和Loki 0.31.2做UI组件截图测试,本地dev模式正常,但CI环境下构建Storybook后执行npx loki --requireReference --reactUri file: ./storybook-static时,出现8个资源加载失败(涉及字体、bundle.js),部分测试无法运行,Docker运行也未解决,推测是版本冲突导致。

解决方案

1. 升级Loki到支持Storybook 7的版本

Loki 0.31.x对Storybook 7的构建输出结构兼容性不足,0.32.0及以上版本正式支持Storybook 7。直接升级:

npm install loki@^0.32.0 --save-dev
# 或 yarn add loki@^0.32.0 --dev

升级后记得重新生成基准截图:

npx loki capture

2. 调整Loki配置适配CI环境

在项目根目录的.lokirc.js中添加/修改以下配置,确保资源路径正确解析:

module.exports = {
  target: 'chrome.docker', // CI环境优先用docker目标,避免本地环境差异
  reactUri: 'file:./storybook-static',
  server: {
    port: 6006,
  },
  chromeFlags: [
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-dev-shm-usage' // 解决CI环境内存不足问题
  ],
};

3. 校验Storybook构建配置

在.storybook/main.js中确认静态资源和构建输出配置正确:

module.exports = {
  core: {
    builder: '@storybook/builder-webpack5', // Storybook 7默认使用webpack5,确保启用
  },
  staticDirs: ['../public'], // 若有自定义静态资源(如字体),需配置此处
  outputDir: 'storybook-static',
};

构建后检查storybook-static目录,确认字体、bundle.js等资源是否存在且路径正确。

4. CI环境的额外优化

  • 运行Loki时添加--verbose参数,查看详细的资源加载日志,定位具体错误路径:
    npx loki test --requireReference --verbose
    
  • 若使用Docker,确保镜像包含完整的Chrome依赖和系统字体(可选用官方的storybook-chrome镜像或自行安装字体包)。

总结

核心问题是Loki 0.31.x与Storybook 7的构建输出结构不兼容,升级Loki到兼容版本后,配合调整配置即可解决资源加载失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:32:41