Detox CLI 命令完全指南:安装、配置与端到端测试工作流
Detox CLI 命令完全指南安装、配置与端到端测试工作流【免费下载链接】DetoxGray box end-to-end testing and automation framework for mobile apps项目地址: https://gitcode.com/gh_mirrors/de/DetoxDetox 是面向移动应用的灰盒端到端测试与自动化框架而 Detox CLI 是其所有命令行操作的统一入口。本文基于 Detox 20.x 文档体系中的 CLI 概览website/versioned_docs/version-20.x/cli/overview.md及其各子命令文档整理而成并辅以仓库源码佐证。读完本文你将掌握detox命令的安装方式、全局参数以及init、build、test、run-server、框架缓存维护、锁文件管理等全部子命令的用法与实战细节能够独立完成从项目初始化到 CI 上稳定运行的完整 CLI 工作流。安装与基本用法Detox CLI 是独立发布的 npm 包仓库中的实现位于 detox-cli/cli.js对应包元数据见 detox-cli/package.json其 bin 字段将全局detox命令映射到该入口文件。推荐以全局方式安装npm install detox-cli --global安装后即可在任意项目目录中使用统一调用格式detox command [options]两个全局选项对所有子命令通用OptionsDescription--versionShow version number--helpShow help从实现上看全局安装的detox-cli是一个轻量包装器wrapper它主要做两件事——在 macOS 上拦截recorder命令并转发给项目内安装的detox-recorder其余命令则转发到当前项目node_modules/.bin下的真实detox可执行文件若找不到会给出清晰的排错提示建议检查当前目录、执行npm install或安装detox开发依赖。也就是说CLI 的实际命令解析逻辑位于项目本地安装的detox包内其入口为 detox/local-cli/cli.js它基于 yargs 框架通过.commandDir(./)自动注册local-cli目录下的全部子命令并开启了boolean-negation、camel-case-expansion等解析配置。命令总览下表列出了 Detox CLI 提供的全部命令与官方概览一致CommandDescriptioninitCreate initial E2E tests folder for Detox.buildRun the command defined in build property of the specified configuration.testInitiating your test suite.recorderStarts a Detox Recorder recording.build-framework-cacheMacOS only.Builds or rebuilds a cached Detox framework and/or XCUITest-runner in ~/Library/Detox. The cache is specific for each combination of Xcode and Detox versions.clean-framework-cacheMacOS only.Deletes all compiled framework and XCUITest-runner binaries from ~/Library/Detox, they will be rebuilt on npm install or when running build-framework-cache.rebuild-framework-cacheMacOS only.Cleans and builds a cached Detox framework and XCUITest-runner in ~/Library/Detox. The cache is specific for each combination of Xcode and Detox versions.reset-lock-fileResets Detox lock file completely - all devices are marked as available after that.run-serverStarts a standalone Detox server.下面逐一展开每个命令的完整参数与使用场景。detox init一键搭建 E2E 测试骨架detox init该命令会在当前项目目录下创建几个模板文件帮助你快速完成 Detox 项目初始化.detoxrc.js—— Detox 配置文件e2e/jest.config.js—— Jest 测试运行器配置e2e/starter.test.js—— 一个最简单的测试套件示例。模板的实际内容可在仓库中查看detox init所需的配置模板与启动测试模板位于 detox/local-cli/templates其中firstTestContent.js就是生成到e2e目录的起始用例模板。生成目录结构可参考仓库内真实示例项目 examples/demo-react-native/detox.config.js 与 examples/demo-react-native/e2e。detox build构建被测应用detox build [options]该命令会执行指定 configuration 中每个 app 配置的build命令属性。支持的参数如下OptionDescription-c, --configurationdevice configSelect a device configuration from your defined configurations, if not supplied, and there’s only one configuration, detox will default to it-C, --config-pathconfigPathSpecify Detox config file path. If not supplied, detox searches for .detoxrc[.js] or detox section in package.json-i, --if-missingExecute the build command only if the app binary is missing.-s, --silentDo not fail with error if an app config has no build command.--helpShow help典型用法示例# 只有一个配置时直接构建 detox build # 指定具体配置 detox build --configuration yourConfiguration # 跳过已构建的应用 detox build --configuration yourConfiguration --if-missingdetox test启动测试套件核心命令detox test [options] ...testFilePathsdetox test在大多数情况下是一个便捷包装方法它把 CLI 参数转换为环境变量然后运行第三方测试运行器默认是 Jest如果配置了--retries还可能多次重启运行器。所有未知的 flags 都会原样透传给底层的测试运行器。例如detox test -c ios.debug --showConfig会被翻译成DETOX_CONFIGURATIONios.debug jest --showConfigCLI 打印出的这条命令你可以直接复制并独立运行不需要借助 Detox CLI。如果某个选项名在测试运行器与detox test之间发生冲突两者都有同名参数可以在保留的--序列之后显式传入detox test -c ios.debug -- --help ↓ DETOX_CONFIGURATIONios.debug jest --help完整参数表OptionDescription-C, --config-pathconfigPathSpecify Detox config file path. If not supplied, detox searches for .detoxrc[.js] or detox section in package.json-c, --configurationdevice configSelect a device configuration from your defined configurations, if not supplied, and there’s only one configuration, detox will default to it-n, --device-name [name]Override the device name specified in a configuration. Useful for running a single build configuration on multiple devices.-l, --loglevel [value]Log level: fatal, error, warn, info, verbose, trace-d, --debug-synchronizationvalueCustomize how long an action/expectation can take to complete before Detox starts querying the app why it is busy. By default, the app status will be printed if the action takes more than 10s to complete.-a, --artifacts-locationpathArtifacts (logs, screenshots, etc) root directory. 行为细节见下方注释1--record-logs [failing/all/none]Save logs during each test to artifacts directory. Pass failing to save logs of failing tests only. The default value isnone.--take-screenshots [manual/failing/all/none]Save screenshots before and after each test to artifacts directory. Pass failing to save screenshots of failing tests only. The default value ismanual.--record-videos [failing/all/none]Save screen recordings of each test to artifacts directory. Pass failing to save recordings of failing tests only. The default value isnone.--record-performance [all/none][iOS Only] Save Detox Instruments performance recordings of each test to artifacts directory. The default value isnone.--capture-view-hierarchy [enabled/disabled][iOS Only] Capture*.uihierarchysnapshots on view action errors anddevice.captureViewHierarchy()calls. The default value isdisabled.-R, --retriesRe-spawn the test runner for individual failing suite files until they pass, orNtimes at most.-r, --reuseReuse existing installed app (do not delete reinstall) for a faster run.-u, --cleanupShutdown simulator when test is over, useful for CI scripts, to make sure detox exists cleanly with no residue--jest-report-specs[Jest Only] Whether to output logs per each running spec, in real-time. By default, disabled with multiple workers.-H, --headlessLaunch device in headless mode. Useful when running on CI.--device-boot-argsA list of passthrough-arguments to use when (if) devices (Android emulator / iOS simulator) are launched by Detox.注意值必须写在等号之后并用引号包裹。用法示例--device-boot-args-http-proxy http://1.1.1.1:8000 -no-snapshot-load--app-launch-argsCustom arguments to pass (through) onto the app every time it is launched. 与--device-boot-args有同样的写法限制。完整信息见 launch arguments guide。--startControl execution of start commands in the app configs. By default, they run right before the test runner. Pass--startforceto ignore the errors coming from the start commands, and run the test runner anyway. Pass--no-startto skip the start commands altogether.--no-colorDisable colors in log output--use-custom-loggerUse Detox custom console-logging implementation, for logging Detox (non-device) logs. Disabling will fallback to node.js / test runner’s implementation (e.g. Jest).默认值true--gpu[Android Only] Launch Emulator with the specific -gpu [gpu mode] parameter.--force-adb-install[Android Only] Due to problems with theadb installcommand on Android, Detox resorts to a different scheme for installing APKs. Setting true will disable that and force usage ofadb install, instead. 该 flag 在 Detox 自身的安装方案稳定之前属于临时方案。默认值false--inspect-brkUses node’s --inspect-brk flag to let users debug the test runner。默认值false--replLaunch REPL (Read-Eval-Print Loop) mode for interactive debugging. Use--replautoto enter REPL mode automatically on test failures.默认值false--helpShow helpDETOX_ARGV_OVERRIDE故障现场的逃生舱当你在复杂脚本或失败的 CI 构建例如 TeamCity、Jenkins中排查 Detox 测试问题时可以通过设置DETOX_ARGV_OVERRIDE环境变量在不修改任何配置文件的情况下为 Detox 注入额外的 CLI 参数再重跑 export DETOX_ARGV_OVERRIDE--forceExit -w 1 --testNamePatternthat hanging test e2e/sanity/login.test.js bash scripts/ci.e2e.sh # ... some output ... detox test -c ios.sim.release -l verbose --maxWorkers 3 # ... configurationios.sim.release ... jest --maxWorkers 1 --forceExit --testNamePatternthat hanging test e2e/sanity/login.test.js上述示例中DETOX_ARGV_OVERRIDE强制 Detox 以单 worker 模式运行 Jest并在指定测试文件里只执行某个选定用例、1 秒后强制退出。从源码看该机制实现在 detox/local-cli/testCommand/middlewares.js 的applyEnvironmentVariableAddendum中一旦检测到环境变量存在就会打印DETOX_ARGV_OVERRIDE_NOTICE警告然后用 yargs 解析该变量的内容把其中的命名参数与位置参数追加到最终生成的测试运行器命令中。对应行为有测试用例覆盖见 detox/local-cli/test.test.js包括--透传部分也会被正确追加。DETOX_ARGV_OVERRIDE的思路与 NODE_OPTIONS 类似区别在于它不是用于常规流程而是用于对失败的 Detox 配置做强制的一次性临时修补以节省排查时间。请避免在常规流程中使用它——首选方案仍然是 Detox 配置文件.detoxrc.js。detox recorder录制测试脚本已废弃:::danger WarningDetox Recorder 工具因 Detox 团队人力资源不足已废弃。:::如果你在项目中安装了 Detox Recorder可以使用该命令开始一次新的录制。需要说明的是它依赖独立的detox-recorder包从 detox-cli/cli.js 的实现可见仅在 macOS 平台上该命令会被转发到node_modules/detox-recorder/DetoxRecorderCLI可执行文件若未安装会直接报错提示。框架缓存命令仅 macOSbuild / clean / rebuild-framework-cache这类命令用于管理~/Library/Detox下的框架缓存缓存按Xcode 版本 × Detox 版本的组合区分。detox build-framework-cache构建或重建缓存的 Detox 框架与/或 XCUITest-runner。缓存对每种 Xcode 与 Detox 版本组合是专用的。对应脚本可参考 detox/scripts/build_framework.ios.sh 与 detox/scripts/build_xcuitest.ios.sh。detox clean-framework-cache仅 macOS。清理缓存的 Detox 框架与 XCUITest-runner 编译产物。支持两个选择性参数--detox—— 只清理 Detox 注入框架。默认 false两者都清理。--xcuitest—— 只清理 XCUITest runner。默认 false两者都清理。清理后这些二进制会在下次npm install或执行build-framework-cache时被重建。detox rebuild-framework-cache仅 macOS。等价于先 clean 再 build重建缓存的 Detox 框架与 XCUITest-runner。参数与 clean 相同--detox—— 只重建 Detox 注入框架。默认 false两者都重建。--xcuitest—— 只重建 XCUITest runner。默认 false两者都重建。detox reset-lock-file彻底重置设备锁detox reset-lock-file重置 Detox 锁文件。锁文件中记录了设备的忙闲状态以此保证同一台设备不会被多个 Detox 测试会话同时占用。默认情况下detox test启动时会清理锁文件但它只针对已分配给已死进程或不存在的进程的设备条目而reset-lock-file则是彻底清空整个锁文件将所有设备标记为可用。这在设备状态异常残留例如测试进程被强杀后设备仍显示占用时非常有用。detox run-server启动独立 Detox 服务器:::note该工具主要用于 Detox 原生代码库的贡献开发而非外部常规使用。:::detox run-server [options]OptionDescription-p, --port [port]Port number (default: 8099)-l, --loglevel [value]Log level: fatal, error, warn, info, verbose, trace--no-colorDisable colorful logs--helpShow help对应实现位于 detox/local-cli/run-server.js端口参数在 165535 之外会抛出DetoxRuntimeError随后基于 CLI 参数组合 logger 配置并以standalone: true模式打开 DetoxServer 实例。小结与实战建议围绕 Detox CLI 的日常工作流可以概括为一条主线detox init生成骨架 → 编辑.detoxrc.js定义 app 与设备的 configuration →detox build -c 配置构建被测应用 →detox test -c 配置运行测试。CI 场景下常用-Hheadless、-u结束后关闭模拟器、--record-logs/--take-screenshots等产物收集参数而遇到疑难故障时--repl失败自动进入交互调试与DETOX_ARGV_OVERRIDE临时注入参数是两个高效的排障手段。多设备并行的锁异常则交给reset-lock-file兜底。理解CLI 参数 → 环境变量 → 第三方测试运行器的转发链路是熟练驾驭detox test的关键。如果--artifacts-location路径不以/或\结尾detox CLI 会在该路径下追加一个包含配置名和时间戳的子目录例如artifacts/android.emu.release.2018-06-12 05:52:43Z。换句话说以斜杠结尾的路径表示你不需要额外的子目录。更多细节参见 Enabling artifacts。默认值是artifacts外加子目录。↩【免费下载链接】DetoxGray box end-to-end testing and automation framework for mobile apps项目地址: https://gitcode.com/gh_mirrors/de/Detox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

别再绝望了!3个最佳实践教你彻底搞懂项目架构

别再绝望了!3个最佳实践教你彻底搞懂项目架构

别再绝望了!3个最佳实践教你彻底搞懂项目架构 看了一堆教程还是不会写项目?别慌,这不是你的错。 很多开发者陷入“绝望”的循环:看完视频觉得自己懂了,一动手就卡壳。 其实,你缺的不是知识点,而是 最佳实践 中的工程化思维。…

2026/9/23 21:03:48 阅读更多 →
抖音咋直播从入门到精通:3步搞定技术流直播搭建

抖音咋直播从入门到精通:3步搞定技术流直播搭建

抖音咋直播从入门到精通:3步搞定技术流直播搭建 刚学完Python或Go语法,代码能跑通,但一上手直播项目就懵?别慌,这是90%新手的通病。 语法只是砖头,架构才是房子。很多开发者卡在“知道怎么发请求,却不知怎么推流”,导致项目烂尾。…

2026/9/23 21:03:48 阅读更多 →
Salt NAPALM NTP 模块完全指南:跨厂商网络设备的 NTP 自动化管理

Salt NAPALM NTP 模块完全指南:跨厂商网络设备的 NTP 自动化管理

Salt NAPALM NTP 模块完全指南:跨厂商网络设备的 NTP 自动化管理 【免费下载链接】salt Software to automate the management and configuration of infrastructure and applications at scale. 项目地址: https://gitcode.com/gh_mirrors/sa/salt 导读 本…

2026/9/23 21:03:48 阅读更多 →

最新新闻

OpenLayers v3.8.0 版本解析:像素级栅格运算、编辑交互修复与 API 变更盘点

OpenLayers v3.8.0 版本解析:像素级栅格运算、编辑交互修复与 API 变更盘点

前端GIS数据可视化 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 点击查看 免费下载 导读 v3.8.0 是 OpenLayers 3 系列中一个承上启下的版本,自 v3.7.0 起共合入 33 个 Pull Request,重…

2026/9/23 21:50:43 阅读更多 →
大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战

大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战

大模型多机并行训练与推理的 GPU 故障隔离:nvidia-smi drain 编排实战在大规模 GPU 集群中,硬件故障率与显卡数量呈严格的正相关关系。当集群规模达到上千张 A100/H800/H100 显卡时,每天几乎都会遇到不同程度的硬件亚健康与不可逆损坏&#x…

2026/9/23 21:50:43 阅读更多 →
Airbyte Google Search Console 连接器深度解析:Streams 架构、OAuth/服务账号授权与限流策略

Airbyte Google Search Console 连接器深度解析:Streams 架构、OAuth/服务账号授权与限流策略

数据工程数据集成ETL后端大数据 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud. 项目地址: https://gitcode.…

2026/9/23 21:50:43 阅读更多 →
信用卡客户价值预测实战:多元线性回归建模与报告输出

信用卡客户价值预测实战:多元线性回归建模与报告输出

简介:一套完整的Python多元线性回归实战项目,聚焦信用卡客户价值预测场景,适合作数据分析和机器学习课程的期末大作业、课程设计或毕业设计参考。项目包含可直接运行的Python代码、客户价值数据表,以及项目设计报告的Markdown、PD…

2026/9/23 21:50:43 阅读更多 →
运动健身社交媒体数据分析:从数据采集到业务洞察的完整指南

运动健身社交媒体数据分析:从数据采集到业务洞察的完整指南

今年年初,一个做运动消费品牌的朋友问我:社交媒体数据分析到底能不能帮我们定下下一季的产品方向?他手里有几十万条运动健身相关的打卡帖、评论和话题数据,却不知道怎么转化成决策。这个问题我太熟了。过去几年,我帮健…

2026/9/23 21:50:43 阅读更多 →
opencodex Cursor 桥接 mcp_tools 工具通告通道加固实战:channel 一致性缺陷修复与回归验证

opencodex Cursor 桥接 mcp_tools 工具通告通道加固实战:channel 一致性缺陷修复与回归验证

【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code 项目地址: https://gitcode.com/gh_mirrors/ope/opencodex 点击…

2026/9/23 21:49:43 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/23 9:53:40 阅读更多 →