react-native-vision-camera 自动化测试避坑指南:搭一条真能测到相机的 E2E 流水线
react-native-vision-camera 自动化测试避坑指南搭一条真能测到相机的 E2E 流水线【免费下载链接】react-native-vision-camera A powerful, high-performance React Native Camera library.项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-camera刚补完 react-native-vision-camera 自动化测试聊聊真实的踩坑过程。相机库测试最容易死的地方是Jest 全绿真机却不行。因为你 mock 得越全相机就越存在断言只证明 mock 忠实不证明相机工作。写测试前先翻车三次不先讲分层理论先看事故。mock 到全绿型在 node 环境里把原生桥全 mock 掉session 的启动停止断言一路通过真机上configure却卡死。那个测试从头到尾没碰过硬件什么回归都抓不到。流水线沉默型CI 任务挂四十分钟模拟器没起来测试日志一个字没有。根因是 KVM 权限没开机器在纯软渲染卡死在开机阶段。权限失忆型adb install -r重装 APK 后每个用例的权限断言集体变红。pm grant授予的权限不会随重装自动恢复重装就得重授。三次翻车指向同一个结论相机库的测试只有两种纯函数和真机。前者哪都能跑后者必须落在硬件上没有第三种。先看 CI 全貌你的代码会过哪几个节点别急先倒过来看流水线。项目有两条真机测试工作流.github/workflows/harness-android-emulator.yml跑在模拟器上尽力而为硬件相关用例可能跳过.github/workflows/harness-aws-device.yml跑在 AWS Device Farm 的真手机上结果才是 source of truth。两者都在apps/simple-camera/**或packages/变动时触发。模拟器链路做了不少缓存先构建 APKGradle、CMake 缓存都有APK 本身也进缓存再用 KVM 起模拟器。模拟器启动参数里带了虚拟前后摄像头所以预览至少能亮起来。跑测阶段交给apps/simple-camera/scripts/run-harness-android-ci.sh等设备上线、装 APK、验证进程没秒崩最后用硬超时包一层跑测试超时就失败绝不无限等。3 分钟跑通第一条真机用例 git clone https://gitcode.com/GitHub_Trending/re/react-native-vision-camera cd react-native-vision-camera bun i测试入口在示例应用里runner 是 react-native-harness它把一个 Jest 兼容的 runner 嵌进 App经 Metro 驱动本质是真实 App 测试桥不是测试框架加模拟器的组合。设备与超时配置在apps/simple-camera/rn-harness.config.mjs。连上真机后这样跑adb shell pm grant BUNDLE_ID android.permission.CAMERA bun run test:harness:android -- --testPathPatternsphoto第一行授相机权限重装 APK 后记得重授。第二行只跑拍照相关文件厂商和型号参数可从adb shell getprop里查。用例文件由jest.harness.config.mjs按__tests__/**/*.harness.ts匹配命名别乱改。怎么让测试不活在 mock 里其实这里的分层比一般项目简单。层级覆盖什么位置纯函数getUIRotation等朝向计算、坐标换算apps/simple-camera/__tests__/.harness.ts后缀真机 E2Esession、拍照、录像、帧输出、多输出同目录按领域分文件一个领域一个文件文档站页面渲染、API 参考页布局docs/tests/Playwright 快照对比写法规范都在apps/simple-camera/__tests__/README.md里反直觉的一条是禁止抽共享 helper。每个it块都从零完整建一个 session测试代码和用户代码一模一样。这样有人报 bug 时直接写一个最小失败用例提 PRCI 的红色运行本身就是复现。断言原则是只断语义结果拍出的照片width 0未configure就start()必须抛错监听器按序触发。typeof x number这类断言是噪音类型不对桥早就抛了。设备不支持和真 bug怎么分相机设备之间能力不齐skip 纪律最容易在这里破功。it(resolves HDR when supported, async (context) { if (!backDevice.supportsPhotoHDR) { return context.skip(photoHDR: not supported on this device) } // 从这里开始硬断言 })硬要求直接expect挂掉就是 bug软能力先用device.supportsPhotoHDR这类能力位查询不支持就context.skip带原因skip 会进 JUnit 报告。别用 try/catch 静默吞错也别用sleep(500)等相机缓过来等真实生命周期事件。让覆盖率报告不再骗人说白了真机测试的覆盖率不看行数。流水线里没有单一覆盖率百分比而是根package.json里的jest-junit产出 JUnit XML从工作流下载 artifact 查看failed、skipped、passed 分列清楚。拿到报告看两件事哪个it挂了哪些软需求被 skip 以及为什么。skip 原因才是真实的能力缺口清单。文档站的 Playwright 快照则拿仓库里已提交的 PNG 做基线比对。流水线红了从哪查 先下载失败运行里的harness output logartifact每个用例的 JS 控制台输出都在里面。翻 JUnit 的 skip 摘要skipped 说明设备缺能力不是 bug。模拟器和真机结果不一致以真机为准。Device Farm 的摄像头常被胶带贴住预览带灰色噪点是正常现象。超时类失败检查工作流里模拟器启动超时和测试硬超时是否配紧CI 下bridgeTimeout和maxAppRestarts都会放宽。相机库测试拼的不是 mock 数量是让测试碰到真硬件的比例。先把utils里的纯函数用例跑绿再接一台真机把拍照全流程走通两者都稳了再让 CI 在两条链路上各跑一遍。apps/simple-camera/tests/README.md apps/simple-camera/rn-harness.config.mjs【免费下载链接】react-native-vision-camera A powerful, high-performance React Native Camera library.项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-camera创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Ollama本地模型联网实战:从Open WebUI搜索到Function Calling工具调用

Ollama本地模型联网实战:从Open WebUI搜索到Function Calling工具调用

去年有一阵子,我把一个基于Llama 3的模型部署到Ollama里,满心欢喜地问它“今天北京天气怎么样”,结果它一本正经地告诉我一个大模型的经典答案:“作为AI,我无法获取实时信息。”那一刻其实挺窝火的,本地推理…

2026/9/18 21:55:21 阅读更多 →
AWS SDK for Java v2 命名约定指南:类名与测试命名的完整规范

AWS SDK for Java v2 命名约定指南:类名与测试命名的完整规范

AWS SDK for Java v2 命名约定指南:类名与测试命名的完整规范 【免费下载链接】aws-sdk-java-v2 The official AWS SDK for Java - Version 2 项目地址: https://gitcode.com/GitHub_Trending/aw/aws-sdk-java-v2 本文是 AWS SDK for Java v2 官方开发指南&a…

2026/9/18 21:55:21 阅读更多 →
YuE 词生歌开源模型本地部署与完整歌曲生成实战

YuE 词生歌开源模型本地部署与完整歌曲生成实战

凌晨一点,我把一段自己写的中文词塞进 YuE,敲下回车,然后去泡了杯茶。二十多分钟后终端还在滚 token,音箱里传出第一句时我愣了一下——咬字是糊的,但旋律走向、和声色彩和我想的基本一致。那一刻我就知道,…

2026/9/18 21:55:21 阅读更多 →

最新新闻

2026惠州电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

2026惠州电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

惠州本地电气防爆检测机构鳞次栉比,但资质水平参差不齐、鱼龙混杂。化工园区、油库加油站、矿山厂区、制药企业及危化品仓储场所进行防爆电气安全排查与生产验收时,大量无资质机构出具的检测报告往往无法通过应急管理部门核查,导致企业反复整…

2026/9/19 0:01:31 阅读更多 →
2026黄石电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

2026黄石电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

黄石街头巷尾的电气防爆检测机构可谓鳞次栉比,但真正能扛住应急管理部门严苛核查的却凤毛麟角。化工园区、油库加油站、矿山厂区、制药车间以及危化品仓储场所,每逢防爆电气安全排查或生产验收,总有企业因误信无资质机构,出具的报…

2026/9/19 0:01:31 阅读更多 →
离散数学集合运算的C++实现:位图与哈希表选型与实验指南

离散数学集合运算的C++实现:位图与哈希表选型与实验指南

简介:离散数学集合运算C或C语言实验报告以PDF格式呈现,面向计算机专业需完成集合运算编程实验的学生。报告包含完整的实验目的、实验内容与算法描述,用数组A、B、C、E表示集合,针对交、并、差、补四种运算分别给出清晰的C语言实现…

2026/9/19 0:01:31 阅读更多 →
把 Cline 的 Base URL 改到 TaoToken 之后,DeepSeek 仍能修调试配置

把 Cline 的 Base URL 改到 TaoToken 之后,DeepSeek 仍能修调试配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:01:31 阅读更多 →
Spring Boot+Vue垃圾分类毕设:分层、权限与排错实战

Spring Boot+Vue垃圾分类毕设:分层、权限与排错实战

简介:这份资源是面向高校计算机专业毕业设计场景的论文参考文档,围绕基于Spring Boot的城市垃圾分类管理系统展开,适合正在选题、撰写论文或需要了解同类系统设计思路的学生与开发者参考。压缩包内共1个docx文档,约1.13MB&#xf…

2026/9/19 0:01:31 阅读更多 →
Apache Superset 4.0.1 补丁版本解析:Bug 修复清单与源码级定位指南

Apache Superset 4.0.1 补丁版本解析:Bug 修复清单与源码级定位指南

Apache Superset 4.0.1 补丁版本解析:Bug 修复清单与源码级定位指南 【免费下载链接】superset Apache Superset is a Data Visualization and Data Exploration Platform 项目地址: https://gitcode.com/gh_mirrors/supers/superset 本指南以 Apache Supers…

2026/9/19 0:00:30 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →