我有 20 个 Windows 10 VMS,并且有大约 700 个单独的 cypress 测试,我希望有一种方法能够将所有这些测试分布在 20 个虚拟机上,这样测试运行得更快,这是否可能,以及如何考虑我需要运行一个 Jar,以及构建运行 cypress 测试的网站的内容。有什么建议可以加快这些过程吗?我还使用 Azure DevOps,因为这是运行这些自动化测试的公司标准。
最佳答案
在不使用任何额外付费服务(例如 Cypress.io 的仪表板服务)的情况下,我认为策略是:
- 将 700 个测试分为几个子集,然后
- 在多个代理上并行运行这些子集。
要实现#1,您可以使用多个 Cypress 配置文件并使用 testFiles
硬编码特定的测试子集。属性,或者您可以创建一个脚本,选择动态确定测试(基于某些参数),然后使用 Cypress module API实际运行您的测试。
无论您采用哪种方法 #1,您都必须使用 ADO 多重配置(请参阅 SO 帖子 here,其中提供了如何设置和使用它们的指南)才能完成 #2 。本质上,ADO 多重配置允许您定义可在多个代理上运行的同一组任务,同时传递 Multiplier
向每个代理人提出论点。这个Multiplier
参数只是一个以逗号分隔的字符串,例如 'testSet1,testSet2,testSet3'
。但是,每个代理只会收到其中的一个值,例如,第一个代理可能会收到 'testSet1'
,第二个代理可能会收到 'testSet2'
等
现在,您可以想象每个代理执行应用程序的设置,然后根据它收到的参数( 'testSet1'
、 'testSet2'
等)运行 Cypress 测试的子集。
最后,您可能想要整理测试结果以便发布它们。我建议将测试结果输出到每次测试运行的共享网络驱动器中生成的确定性文件夹中。例如,如果您有 3 个代理运行 700 个测试,他们可以将测试结果 XML 发布到 //shared-drive/cypress/results/<date>
文件夹。然后,您将有一个最终的、单独的代理工作来整理测试结果并发布它们。
关于javascript - 跨多台机器的 Cypress [Azure Devops],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66068333/