TestCafe测试在Semaphore运行偶尔挂起 如何设置超时自动判定失败?
TestCafe 超时配置及自动终止方案
针对你需要设置超时阈值、避免测试无限挂起同时保留排查信息的需求,可通过以下几层配置实现:
1. 全局测试执行超时配置
该配置用于限制单条测试用例的最大执行时长,到达阈值后测试自动标记为失败,会完整保留错误堆栈、测试录制视频与失败截图,不会强制杀死进程。
有两种配置方式:
- 命令行启动时传入参数:
示例设置单测试最大执行时长为5分钟(300000毫秒):testcafe chrome your_test_path/ --test-timeout 300000 --assertion-timeout 120000 --page-load-timeout 120000
参数说明:--test-timeout:单条测试用例的总执行时长阈值,单位为毫秒--assertion-timeout:断言等待的最大时长,避免断言逻辑无限等待--page-load-timeout:页面加载的最大时长,避免页面加载逻辑阻塞
- 配置文件写入(.testcaferc.json):
{ "testTimeout": 300000, "assertionTimeout": 120000, "pageLoadTimeout": 120000 }
2. Selector 专属超时配置
针对你提到的单个Selector导致挂起的问题,可以给Selector单独设置等待超时,避免单步查询无限阻塞:
- 单个Selector单独配置:
示例设置元素等待最长15秒:const targetElement = Selector('#target-id', { timeout: 15000 }) - 全局统一设置所有Selector默认超时:
在测试代码入口处添加如下配置:import { Selector } from 'testcafe'; Selector({ timeout: 15000 });
3. CI 环境适配建议
在Semaphore Docker环境中运行时,启动命令需额外开启失败采集配置,确保超时失败后可以正常获取排查资源:testcafe chrome your_test_path/ --test-timeout 300000 --screenshots takeOnFails=true --video your_video_save_path/
内容的提问来源于stack exchange,提问作者Zoe Jobson
相关产品推荐
相关产品推荐

