测试移动开发质量保障开发工具【免费下载链接】DetoxGray box end-to-end testing and automation framework for mobile apps项目地址https://gitcode.com/gh_mirrors/de/Detox点击查看免费下载detox run-server是 Detox 提供的一个独立启动测试服务器的 CLI 命令它可以让开发者脱离测试运行器如 Jest、Mocha单独拉起一个监听本地端口的 WebSocket 服务器供应用与测试端手动连接与调试。本文围绕该命令的完整语法、全部参数、源码实现与测试验证展开帮助你在调试 Detox 原生代码或排查会话连接问题时能够熟练地使用这个幕后工具。命令定位为什么需要独立服务器在常规的 Detox 测试流程中服务器进程是内嵌在测试运行器生命周期里的detox test会自行创建DetoxServer实例测试结束后随之关闭开发者通常感知不到它的存在。而detox run-server提供的是standalone独立模式——正如官方文档在 docs/cli/run-server.md 中特别注明的This tool is useful mostly for contributing to the native codebase of Detox, not for the outside use.也就是说它的主要使用场景是Detox 原生代码iOS/Android的贡献者与调试者当你需要观察应用与服务器之间的真实 WebSocket 消息、分析会话建立过程、或者在修改原生端后手动验证通信协议时就可以用这个命令把服务器单独拉起来再手动启动应用或连接测试端。命令语法与完整参数表命令的调用形式为detox run-server [options]在仓库中该命令由 detox/local-cli/run-server.js 实现完整的参数定义如下选项说明默认值-p, --port port服务器监听端口号8099-l, --loglevel value日志级别fatal、error、warn、info、verbose、trace取决于全局日志配置--no-color禁用彩色日志输出false--help显示帮助信息-对应到源码 detox/local-cli/run-server.js 中的 yargsbuilder定义l被声明为choices: [fatal, error, warn, info, verbose, trace]传入不合法的级别会直接报错从源头保证日志级别取值合法p被声明为number: true且default: 8099与文档表格完全一致no-color是一个boolean型开关。端口参数校验越界立即报错run-server与其他命令不同它不接受范围外的端口。看 detox/local-cli/run-server.js 的 handler 实现module.exports.handler async function runServer(argv) { if (isNaN(argv.port) || argv.port 1 || argv.port 65535) { throw new DetoxRuntimeError(The port should be between 1 and 65535, got ${argv.port}); } ... };端口必须落在1 ~ 65535之间非数字、0或100000都会被拒绝。这一点有对应的测试用例与快照佐证detox/local-cli/run-server.test.js 分别用-p PORT非数字、-p 0、-p 100000三种输入验证抛错并且断言DetoxServer构造函数不会被调用错误信息原文见 detox/local-cli/snapshots/run-server.test.js.snapThe port should be between 1 and 65535, got NaN The port should be between 1 and 65535, got 0 The port should be between 1 and 65535, got 100000注意这里的校验是硬性的因此不要指望用-p 0让系统自动分配一个随机端口——这在独立模式下是不允许的。日志级别与颜色控制-l, --loglevel用于控制服务器输出日志的详尽程度。在排查连接问题时建议使用verbose甚至trace级别因为会话建立、消息收发等关键日志都以debug/trace级别输出详见下文源码分析--no-color用于在无 TTY 环境如 CI 流水线、日志重定向到文件下关闭 ANSI 彩色输出避免日志文件被颜色转义码污染。启动后的行为从命令到服务器的完整调用链run-server的 handler 逻辑虽然简短但背后是一条完整的链路。执行detox run-server后会发生校验端口见上文非法端口直接抛出DetoxRuntimeError组装并应用日志配置调用 detox/src/configuration/composeLoggerConfig.js 与 detox/src/configuration/collectCliConfig.js把命令行里传入的loglevel、no-color等参数合入日志器配置见 detox/local-cli/run-server.js实例化并打开服务器await new DetoxServer({ port: argv.port, standalone: true, }).open();standalone: true是关键标记——它直接决定了启动日志的级别。DetoxServer底层 WebSocket 服务DetoxServer类位于 detox/src/server/DetoxServer.js基于ws库的WebSocket.Server实现open()会调用_startListening()在指定端口上创建WebSocket.Server启用perMessageDeflate压缩见 detox/src/server/DetoxServer.js启动成功后standalone 模式用info级别打印监听地址非 standalone 模式则用debug级别见 detox/src/server/DetoxServer.jsconst level this._options.standalone ? info : debug; loglevel;这一点在 detox/src/server/DetoxServer.test.js 中有两个对应的测试用例standalone 模式断言log.info被调用且log.debug未被调用反之亦然。也就是说用detox run-server启动后你会在终端直接看到Detox server listening on localhost:8099...这一行info日志——这也是确认服务器已就绪的最直观信号。关闭时close()服务器最多等待 10 秒_closeWithTimeout(10000)让所有连接优雅关闭超时或异常会以warn级别记录abruptly closed告警见 detox/src/server/DetoxServer.js 与 detox/src/server/DetoxServer.test.js 中的超时/拒绝/错误三种关闭失败场景。会话管理tester 与 app 的双端模型服务器接收到 WebSocket 连接后会交给DetoxSessionManagerdetox/src/server/DetoxSessionManager.js管理registerConnection()为每个 WebSocket 建立一个DetoxConnectiondetox/src/server/DetoxConnection.js后者负责消息收发收到的 payload 必须是合法 JSON 且包含type字段否则抛出DetoxRuntimeErrorregisterSession()把连接按roletester | app挂到某个sessionId对应的DetoxSession上见 detox/src/server/DetoxSessionManager.js每个DetoxSessiondetox/src/server/DetoxSession.js最多承载一个 tester 连接和一个 app 连接当任一方加入/离开时通过notify()向另一方广播appConnected、appDisconnected、testerDisconnected等事件见 detox/src/server/DetoxSession.js。这个一测一端的会话模型正是 Detox 客户端-服务器架构的核心更完整的架构说明可参考 docs/architecture/client-server.md。独立模式与内嵌模式的对比DetoxServer本身既可以独立运行standalone: true也可以由测试流程内嵌启动standalone: false即常规detox test模式。两者差异集中体现在维度detox run-server独立模式detox test内嵌模式启动方开发者手动执行 CLI测试运行器自动创建生命周期常驻前台CtrlC 结束随测试会话开始/结束启动日志级别info醒目可见debug默认不展示适用场景调试原生代码、观察协议消息、排查连接问题常规端到端测试从源码看standalone只是DetoxServer构造函数的一个布尔选项detox/src/server/DetoxServer.js 中的默认值合并逻辑_.defaults说明它甚至可以替换底层WebSocket.Server实现——这也是单元测试注入 mock 服务的方式。实战如何用 run-server 调试以下是在当前仓库语境下推荐的使用路径启动独立服务器npx detox run-server --port 8099 --loglevel verbose看到Detox server listening on localhost:8099...info 级别即表示就绪。若端口被占用可选择其他端口如--port 9000但需同步修改应用与测试端的连接配置。观察会话日志将--loglevel提到trace可以逐条看到connection :localPort-:remotePort、created session id、app joined session、tester joined session等会话事件这些日志分别来自 detox/src/server/DetoxConnection.js 与 detox/src/server/DetoxSession.js从而判断应用端与测试端是否都成功入会。在无颜色环境下运行CI、日志落盘npx detox run-server --no-color查看帮助npx detox run-server --help会输出上文参数表对应的帮助文本。需要说明的是run-server只负责把服务器拉起来它本身不参与测试调度。若你的目标只是跑一遍端到端测试请直接使用detox test参见 docs/cli/overview.md 的命令总览服务器会自动内嵌启动若你需要在测试会话中使用自定义的sessionId或外部服务器地址可参考 docs/config/session.mdx 中的session配置项。小结detox run-server是一个短小精悍却直击要害的调试工具语法上只有端口、日志级别、颜色三个开关但通过它拉起的DetoxServer承载了 Detox 完整的 WebSocket 会话管理逻辑。掌握它意味着你在调试 Detox 原生代码或排查应用连不上测试端类问题时拥有了一把可以直接观察协议层面的钥匙。进一步阅读命令实现detox/local-cli/run-server.js命令测试与错误快照detox/local-cli/run-server.test.js、detox/local-cli/snapshots/run-server.test.js.snap服务器核心实现detox/src/server/DetoxServer.js、detox/src/server/DetoxSessionManager.js、detox/src/server/DetoxSession.js服务器单元测试detox/src/server/DetoxServer.test.js架构与配置 docs/architecture/client-server.md、docs/cli/overview.md、docs/config/session.mdx赞分享测试移动开发质量保障开发工具【免费下载链接】DetoxGray box end-to-end testing and automation framework for mobile apps项目地址https://gitcode.com/gh_mirrors/de/Detox点击查看免费下载相关推荐freqtrade webserver 命令详解启动独立 Web 服务器模式FreqUI/回测控制freqtrade webserver 命令详解启动独立 Web 服务器模式FreqUI/回测控制 freqtrade webserver 是 freqt金融科技后端机器学习猫抓浏览器插件如何轻松获取网页中的任何视频资源猫抓浏览器插件如何轻松获取网页中的任何视频资源 还在为无法保存网页上的精彩视频而烦恼吗猫抓浏览器插件为你提供了一键式解决方案让你轻松捕获网页中的视频、音测试移动开发质量保障开发工具Jasig CAS 独立模式配置服务器详解Jasig CAS 独立模式配置服务器详解 概述 Jasig CASCentral Authentication Service作为企业级单点登录解决方案后端认证鉴权单点登录上一篇探索Cassandra一个强大的分布式数据库客户端下一篇Ray RLlib 示例脚本实战指南从运行方式到源码级参数解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
