首页 > 解决方案 > Cypress 跨多台机器 [Azure Devops]

问题描述

我有 20 个 Windows 10 VMS 和大约 700 个单独的柏树测试,我想要一种能够将所有这些测试分布在 20 个虚拟机上的方法,以便测试运行得更快,这是否可能以及如何考虑我需要运行一个 Jar 以及那个构建了运行 cypress 测试的网站。有什么建议可以加快这些过程吗?我也在使用 Azure DevOps,因为这是运行这些自动化测试的公司标准。

标签: javascriptazureautomationdevopscypress

解决方案


在不使用任何额外的付费服务(如 Cypress.io 的仪表板服务)的情况下,我认为策略是:

  1. 将你的 700 个测试分成几个子集,然后
  2. 在多个代理上并行运行这些子集。

要完成 #1,您可以使用多个赛普拉斯配置文件并使用该属性对特定的测试子集进行硬编码testFiles,或者您可以创建一个脚本来动态选择确定测试(基于某些参数),然后使用赛普拉斯模块 API实际运行你的测试。

无论您对 #1 采取哪种方法,您都必须使用 ADO 多配置(请参阅此处的 SO 帖子,其中提供了有关如何设置和使用它们的指南)以完成 #2。从本质上讲,ADO 多配置允许您定义可以在多个代理上运行的同一组任务,同时将Multiplier参数传递给每个代理。此Multiplier参数只是一个以逗号分隔的字符串,例如'testSet1,testSet2,testSet3'. 但是,每个代理将只接收其中一个值,例如,第一个代理可能会收到'testSet1',第二个代理可能会收到'testSet2',等等。

所以现在,您可以想象每个代理执行您的应用程序的设置,然后运行赛普拉斯测试的子集,具体取决于它接收的参数('testSet1'、、'testSet2'等)。

最后,您可能想要整理测试结果以便发布它们。我建议将测试结果输出到每个测试运行的共享网络驱动器中生成的确定性文件夹中。例如,如果您有 3 个代理运行 700 个测试,他们可以将他们的测试结果 XML 发布到//shared-drive/cypress/results/<date>文件夹中。然后,您将有一个最终的、单独的代理作业来整理测试结果并发布它们。


推荐阅读