如何在Jenkins管道中运行Cypress测试[Cypress Jenkins教程]

703 阅读12分钟

Cypress是快速发展的测试自动化框架之一。在你学习Cypress的过程中,你可能会遇到将Cypress测试与CI环境整合的需求。 Jenkins是一个开源的持续集成(CI)服务器,它可以使你的Web应用程序的构建和部署过程自动化。通过在Jenkins中运行你的Cypress测试套件,你也可以将测试作为构建过程的一部分进行自动化。

将LambdaTest添加到公式中,你可以在不同的操作系统和浏览器组合中运行你的应用程序。在这个Cypress Jenkins教程中,我们将深入探讨将Jenkins管道与云Cypress网格整合起来。

那么,让我们开始吧。

Jenkins的优势

Jenkins是一个广泛流行的持续集成(CI)工具。它是免费使用的、用Java编写的开源软件。Jenkins通过提供持续集成服务来提高你的发布敏捷性。你可以通过网络应用服务器触发这些服务,或者简单地使用命令行来加速部署管道和发布迁移活动。此外,Jenkins的流行提供了数以千计的插件来快速跟踪你的生产力。

下面详细介绍了使用Jenkins的一些重要优势。

  • Jenkins是开源的,可以免费使用。它是早期创业公司和大公司的首选CI工具,因为它已经开发了很长时间。
  • 它是一个丰富的插件生态系统。在发表这篇博文时,有接近1500多个插件可供使用。
  • Jenkins可以与流行的云平台集成,如亚马逊EC2、谷歌云、VMWare vSphere、数字海洋等等。
  • 任何人都可以编写测试,以尽快发现他们代码中的错误。因此,开发人员不会在大规模的错误重重的集成上浪费时间。
  • 问题几乎是立即被发现和解决的,这使软件保持在一个可以随时安全发布的状态。
  • 大部分的集成工作是自动化的。因此集成问题较少。在一个项目的生命周期中,它既能节省时间又能节省金钱。

如果你是Jenkins的新手,并希望了解更多关于它的信息,你可以通过这个Jenkins教程来了解什么是Jenkins,以及如何和为什么使用它。

在这个Cypress Jenkins教程的下一节,我们将探讨为什么Cypress Jenkins是你的团队的正确选择。

为什么是Cypress和Jenkins?

Cypress是一个开源的、全功能的、易于使用的测试框架,用于端到端测试。目前,Cypress是懂JavaScript的前端开发人员和自动化测试人员的首选。我们可以使用NPM安装Cypress。而且,我们不需要像Selenium那样安装任何额外的库、依赖项、驱动程序、服务器等。

Why Cypress and Jenkins

如上所述,Jenkins是许多试图完成持续集成的初创公司和大公司的预测选择。它提供了一个重要的插件生态系统,加上与Jenkins的简单配置;如果你正在寻找一个开源的CI工具,并且很容易与Cypress进行配置,这(Cypress Jenkins)是你的团队的正确选择。

Cypress Jenkins

Cypress CTA.

在这个关于Cypress Jenkins的教程的下一节中,我们将学习如何配置Jenkins来运行Cypress测试。

配置Jenkins以运行Cypress测试

我们将需要NodeJS来执行Cypress。在本节Cypress Jenkins教程中,我们将学习如何在我们的Jenkins环境中安装NodeJS。然而,在此之前,你必须安装Cypress。你可以通过这篇关于开始使用Cypress的博客来在本地机器上安装Cypress。

  1. 在Jenkins中,进入Manage Jenkins > Manage Plugins > Available Plugins,搜索NodeJS Plugin并安装它。

NodeJS Plugin

  1. 成功安装NodeJs插件后,我们需要将NodeJs加入其中。进入Manage Jenkins > Global Tool Configuration,点击Add NodeJS。然后。
  • 为你的NodeJS安装提供一个名称 例如:Node14。
  • 点击自动安装。
  • 选择一个兼容Cypress的NodeJS版本。
  • 为Global npm软件包添加Cypress来安装。
  • 我们可以保持其他的配置,因为它是。

install the NodeJs Plugin,

现在我们需要创建你的Cypress Jenkins项目。首先,我们必须保持简单;让我们使用一个自由式项目;作为一个自由式项目,我们可以将我们的构建工作分解成几个较小的构建步骤,使其在不同的阶段管理构建时更加舒适。例如,在一个步骤中,构建可能会运行一套功能测试,如果所有可用的测试都成功了,就在第二个步骤中标记构建。

一个Jenkins自由式项目可以和任何用Jenkins管道或Groovy DSL构建的构建作业一样强大和复杂。自由式项目的缺点是,用户必须知道如何编写所有这些动作的脚本,而开发人员必须学习如何管理这些脚本。

  1. 在Jenkins中,点击新项目,提供一个项目名称,并选择自由式项目。

New Item, provide a project name

  1. 由于我们的Git项目在源代码管理中,添加你的Git URL和Cypress项目的凭证。如果你不使用Git,我鼓励你试试。Git的速度快如闪电;我们说的是每条命令只需几秒钟;它很快就能为你的工作时间增加。记住,一个庞大的社区往往是一个优势,因为一个生态系统是围绕着这个系统的。
  2. 现在我们需要切换到构建环境部分。在这里我们将找到并选择选项,将Node和npm bin/文件夹提供给PATH。

switch to the build environment section

这是我们设置我们的NodeJS环境来运行Cypress的地方。

set our NodeJS environment to run Cypress

  1. 如果你还记得,我们之前添加了一个NodeJS安装。我们将在NodeJS安装下拉菜单中看到我们提供的名称。选择它,然后我们可以保留其他的配置。

我们都准备好了;别忘了添加我们的Cypress命令来执行脚本。

在云网格上运行端到端的Cypress测试。现在就试试LambdaTest吧

配置Jenkins流水线

管线是一系列以特定顺序相互连接的事件或任务。通俗地说,Jenkins管道是一组模块或插件,能够在Jenkins内实施和整合持续交付管道。

Jenkins管道有一个可扩展的自动化系统,通过管道中使用的特定领域语言(DSL)构建基本或复杂的 "模板 "发布管道。例如,声明式管道中的阶段可以有一个阶段部分,包含一个要按顺序运行的嵌套阶段列表。

Jenkins管道中的概念如下。

  • 管道 - 它是为应用程序的构建、测试和交付而执行的代码,是持续交付的代码状态的一组指令。
  • 节点- 它是Jenkins运行的机器或系统。一个节点块是一个流水线语法的脚本。
  • 阶段- 在这里,我们可以描绘Jenkins管道的过程。它由一系列的步骤组成:构建、测试和部署。在早期版本的Declarative Pipeline中,并行运行大块Pipeline代码的唯一方法是使用步骤块内的并行步骤,用于阶段)。
  • 步骤--它是阶段中的一个单一步骤;例如,从一个单一步骤中构建或测试或部署。

Jenkins管道的主要优点是将许多任务自动化,使CI/CD管道任务可靠、高效、可重复、高质量。

我们可以为这个Cypress Jenkins教程找到Pipeline的Jenkins文件,如下所示。

  1. 通过进入Jenkins -> 新项目为Pipeline创建一个新项目。Jenkins -> 选择管线。

Create a new project for Pipeline

  1. 向下滚动到管线选项。并根据你的Git repo进行更新。

Scroll down to Pipeline Options

  1. 我们的Jenkins文件将包含我们的配置,然后我们可以看到我们的结果。

Jenkins file will contain our configuration

到目前为止,我们已经看到了如何配置Jenkins管道。在这个Cypress Jenkins教程的下一节中,我们将深入探讨将你的Cypress Jenkins管道与Cypress云网格整合。

如何将你的Cypress Jenkins管道与Cypress云网格集成?

Jenkins管道,也被称为 "管道",提出了一套插件,以协助将我们的持续交付管道整合到Jenkins中。Jenkins Pipeline在Pipeline DSL(特定领域语言)语法的帮助下做到了这一点,即使是最复杂的交付管道也能方便地建模。

用LambdaTest配置你的Jenkins管道

按照以下步骤将LambdaTest与Jenkins配置起来。

  1. Jenkins 2.X或最新版本。
  2. 一个具有root权限的Jenkins用户。
  3. LambdaTest认证凭证。
  4. 留意你的LambdaTest认证凭证,即你的LambdaTest用户名和访问密钥。你需要将它们设置为你的环境变量。你可以通过点击帮助按钮周围的密钥图标,从你的LambdaTest自动化仪表板上检索它们。

设置Jenkins

在本节Cypress Jenkins教程中,我们将探讨设置Jenkins的步骤。

GitHub

Github Button

  1. 通过进入Jenkins -> 新项目,为Pipeline创建一个新项目。Jenkins -> 选择管线。

new project for Pipeline

  1. 向下滚动到Pipeline选项。并根据你的Git repo进行更新。

Pipeline Options

  1. 我们的Jenkinsfile将包含我们的配置。

our configuration

  1. cypress:lambda "任务将由Jenkins管道中的 "e2e测试 "步骤执行。所以现在我们可以在Jenkins中按下 "Build Now "按钮,得到以下结果。

cypress:lambda

  1. 当检查构建的控制台输出时,我们可以验证Cypress测试的运行。

Cypress tests

从上面的图片中我们可以注意到,我们的构建被成功执行,测试被上传到我们的LambdaTest仪表板。

LambdaTest Dashboard

如何在云网格上执行Cypress并行测试?

我们可以使用像LambdaTest这样的Cypress云网格,它在40多种浏览器和操作系统上提供自动化的跨浏览器测试,并使用Cypress并行测试来加快测试执行,帮助执行我们的Jenkin管道。此外,这将有助于提高我们的整体测试覆盖率,因为我们可以使用相同的测试脚本覆盖不同的组合,从而带来更好的产品质量。

您还可以订阅LambdaTest YouTube频道,并随时了解围绕自动化浏览器测试Cypress测试、CI/CD等的最新教程。

要开始使用Cypress e2e测试,请按照下面提到的步骤进行。

  1. 在你的机器上安装LambdaTest Cypress CLI。触发以下命令进行安装。
npm install -g lambdatest-cypress-cli
  1. 安装完成后,使用下面的命令设置配置。
lambdatest-cypress init
  1. 一旦命令完成,在项目文件夹中就会创建lambdatest-config.json。接下来,从LambdaTest配置文件部分输入LambdaTest凭证。
"lambdatest_auth": {
      "username": "<Your LambdaTest username>",
      "access_key": "<Your LambdaTest access key>"
  1. 下面是你如何在lambdatest-config.json中配置所需的浏览器和操作系统组合的方法。
{
  "lambdatest_auth": {
     "username": "",
     "access_key": ""
  },
  "browsers": [
     {
        "browser": "MicrosoftEdge",
        "platform": "Windows 10",
        "versions": [
           "latest"
        ]
     },
     {
        "browser": "Chrome",
        "platform": "Windows 10",
        "versions": [
           "latest"
        ]
     },
     {
        "browser": "Firefox",
        "platform": "Windows 10",
        "versions": [
           "latest"
        ]
     }
  ],
  1. JSON文件中的run_settings部分包含所需的Cypress测试套件能力,包括Cypress_version、build_name、并行会话的数量等。
"run_settings": {
     "cypress_config_file": "cypress.json",
     "build_name": "build-Cypress-test",
     "parallels": 5,
     "specs": "./cypress/integration/e2e_tests/*.spec.js",
     "pluginsFile": true,
     "ignore_files": "",
     "npm_dependencies": {
        "cypress": "9.0.0",
        "@cypress-audit/pa11y": "^1.3.0",
        "cypress-plugin-snapshots": "^1.4.4",
        "cypress-visual-regression": "^1.6.2"
     },
     "feature_file_suppport": true
  },
  1. JSON文件中的Tunnel_settings可以让你通过一个基于SSH的集成隧道将你的本地系统与LambdaTest服务器相连。一旦这个隧道建立起来,你就可以在LambdaTest上测试Cypress目前支持的所有浏览器上的本地托管页面
"tunnel_settings": {
    "tunnel": false,
    "tunnelName": null
}

使用LambdaTest,我们可以并行地运行我们的测试,减少执行时间。并行测试不是依次一个一个地运行测试,而是允许同时运行多个测试。此外,这种方法还可以在各种浏览器、设备和操作系统上平行地执行测试。

不使用Cypress Cloud Grid(比较e2e测试时间)。

Without Cypress Cloud Grid

使用Cypress Cloud Grid并运行多个操作系统和浏览器(比较e2e测试时间)。

Using Cypress Cloud Grid

要查看测试性能指标,请导航到LambdaTest分析仪表板。测试概览将提供一个与稳定行为一致的测试快照。你可以看到所有的测试结果,它们的状态,以及在失败和失败的细分区域的测试通过或失败的总数量。

如果你是一名开发人员或测试人员,Cypress 101认证将使你准备好更快、更有信心地编写测试。你将学习Cypress端到端测试的基础知识,并对如何编写更好的测试有一个清晰的认识。

最后的思考

最后,我们已经介绍了Jenkins的重要性,以及如何将其与我们的Cypress项目集成,以有效地运行我们的测试并实现持续集成的目标。使用Jenkins来运行我们的测试是非常有效的,而且测试结果可以通过完整的日志进行可视化。它有助于完成整个软件开发生命周期,从开发、部署、测试、监控和发布。

Jenkins支持各种插件来实现项目的要求。它还通过电子邮件不断提醒用户有关构建的稳定性。谢谢你阅读这个Cypress Jenkins教程。

祝您捉虫愉快!

常见问题(FAQ)

Cypress能与Jenkins一起工作吗?

是的。将Cypress与Jenkins设置在一起的最佳方式是安装和配置官方的cypress-jenkins插件。它允许你在创建新的构建时或在每个拉动请求上从Jenkins运行Cypress测试。

Cypress适合E2E测试吗?

Cypress是一个流行的端到端测试框架,允许在JavaScript中创建完整的测试套件。它支持Karma、Protractor和Jest等测试运行器,可用于测试任何可在浏览器中运行的网络应用,包括Node应用。