欢迎来到全新的 Nightwatch 工程博客,这里将发布 Nightwatch 项目的最新更新和进展。它还将作为教程和其他相关资料的资源库。内容将由 Nightwatch 团队撰写和管理,但也可能包含由我们的朋友和合作者撰写的偶尔的客座文章。
背景
Nightwatch 于 2014 年初发布,它是一个完整的集成框架,使工程师能够快速轻松地编写端到端测试。在编写它时,我们秉持着一个信念,即编写和运行自动化的 UI 测试应该是一项简单且令人愉快的任务,并且应该尽可能地减少配置和维护。
与浏览器内部进行交互的任务已由 Selenium 项目处理,并且通过基于 HTTP 的 API 与 Selenium 服务器进行交互是一项简单的任务。因此,Nightwatch 通过将各种现有的工具和技术集成到一个易于使用的解决方案中而诞生。
七年后,Node.js 的开源测试领域已经发生了很大变化。在过去几年中出现了几个新的框架,每个框架都带来了自己的功能集,以及对如何进行自动化测试的独特见解。
与此同时,Selenium 的 json-wire 协议 已过渡到 W3C Webdriver 标准,该标准目前已由所有主要浏览器实施。就 Nightwatch 而言,策略并没有太大变化。事实上,我个人更有信心地说,作为一个开源项目,Nightwatch 现在进入了其发展和成熟的下一个主要阶段。
Nightwatch 的策略仍然是,我们应该使用自动化领域中经过验证的现有的工具和技术来构建解决方案,而不是走自己的路。Selenium 项目(也包括 Webdriver)已经存在了十多年,并且一直在不断改进和发展浏览器自动化工作方式,无论是在本地开发环境中,还是在大规模分布式云基础设施中。这就是为什么与 Selenium 生态系统合作让我有信心地说,Nightwatch 不仅会兑现承诺,甚至会超越预期。
Nightcloud.io
另一个重要的更新可能是,我们已经停止开发自己的云测试平台 - Nightcloud.io。我们本来打算在去年推出一个初始的公开测试版,但我们不得不取消了它。这有很多原因,但我想主要原因是,我们 - Pineview.io 的团队 - 没有看到足够的市场需求来证明投资的合理性。我们决定专注于 Nightwatch,并努力使其成为市场上最复杂且最友好的开源测试框架。
Nightwatch V2
这让我想到这篇文章中最令人兴奋的部分。下一个重大更新 - Nightwatch v2 的工作已经开始,它应该在今年秋季登陆公共 NPM 频道。一个 alpha 版本将在今年 8 月发布。
我们正在完全重新设计传输层以使用官方的 Selenium Webdriver Node.js 绑定,这意味着更无缝的浏览器集成、更好、更可靠的 DOM 元素处理,以及总体上更稳定、更快的测试。Nightwatch v1.x 仍然会得到支持,我们将发布针对关键问题的定期补丁更新。我们还将尽力使从 Nightwatch v1.5 或更高版本升级到 v2 尽可能平滑,并且我们尽力不引入任何重大破坏性更改。
以下是一些您可能会觉得有吸引力的 v2 中的新功能。
• 支持 Actions API
Actions api 提供了一种更可靠的方法来生成复杂的使用者手势,并且将成为 Nightwatch 中的内置功能(通过现有的 .perform()
命令)。
• 扩展自动命令重试
在当前版本中,Nightwatch 只支持重试失败的元素检索操作,但在 v2 中,它还将重试失败的元素命令(例如,当点击遇到 element click intercepted
等错误时)。
• 新的相对元素定位器
新的 Selenium 4 相对定位器 将在 Nightwatch 中默认可用,以及通过 Selenium By() api 改进的现有定位器。
• 内置支持文件上传
目前使用 Nightwatch 上传文件可能很麻烦,但在 v2 中,我们将添加一个内置命令,它与 FileDetector api 协同工作。
• 支持扩展 Capabilities 对象
定义功能的主要方式仍然是在 nightwatch.conf.js
配置文件中,但在 v2 中,使用 Selenium Capabilities api 创建的所有功能对象也将默认支持。
• 在 Chrome 中设置网络条件
在进行浏览器自动化时,操作网络条件是一个经常需要的功能,我们将能够在 v2 中为 Chrome 和 Edge 提供支持,最初只支持这两个浏览器。
• 支持使用 Devtools 协议
Chrome Devtools 协议 允许工具检测、检查、调试和分析基于 Chromium 的浏览器(如 Chrome 和 Edge),我们将在 Nightwatch v2 中添加此功能。
• 准备好 Webdriver BiDi
新的 双向 WebDriver 协议 是 Selenium 项目中最令人兴奋的最新发展之一,它有可能在速度和稳定性方面带来远超预期的改进。一旦它可用,它也将成为 Nightwatch 的一部分。您可以关注 Selenium 网站 上的开发进展。
• 各种新的命令 API
Nightwatch v2 还将带来一个新的 .ensure
断言 api,它将镜像 Selenium until api,全局 element()
、expect()
、by()
和 browser
对象,这将增强编写测试的体验并提供更大的灵活性。
• 测试运行器改进
Nightwatch v2 还将对测试运行器进行一些改进,例如能够重新运行仅失败的测试,以及对并行测试执行的改进支持。
以上列表并不详尽,并且在版本 2 的初始公开发布之前可能会发生变化。您还可以查看在 Nightwatch v1.7 中发布的更新,以防您错过了任何内容。
告诉我们您的意见
我们还正在考虑其他新功能、API 以及与 Appium 或 Playwright 等其他工具的集成。如果您能花点时间填写 这份简短的调查问卷 并告诉我们您正在使用或想要在新的版本中看到的功能,这将非常有帮助。请与您的团队分享这份问卷。
感谢您的阅读。请务必在 Github 上 为该项目加星,并在 Twitter 上关注我们;我们的 Twitter 账号是 @nightwatchjs。