版本 7.0

Squish 7.0是一次功能发布,它为产品所有版本带来了新功能、错误修复和可用性改进。

本次发布值得关注的特点包括

视频录制

  • Squish现在可以录制测试执行的视频。在回放时,视频将同步对应测试结果。
  • 可以通过以下方式从测试脚本、在`squishide`的“控件栏”中以及通过`squishrunner`的播放选项–启用视频录制来开始和停止录制:test.startVideoCapture(message)test.stopVideoCapture(message)
  • 视频将以MPEG-4格式存储在测试结果中,并在squishideSquish测试中心中播放。
  • 请注意,MPEG-4包含专利技术。在第三方软件中增加了两个通知,指出可能需要获取自己的许可证。

改进的许可证服务器

  • 可以使用REST API通过HTTP请求查询由Squish许可证服务器提供的浮动许可证的当前状态。
  • 旧版许可证密钥与Squish 7不兼容。请联系您的销售代表进行升级。
  • Squish许可证服务器现在提供改进的安装程序,该安装程序将在Linux、macOS和Windows上注册服务器为系统范围的服务。

鼠标滚轮支持

  • Windows版的Squish通过引入mouseWheel函数来支持使用鼠标滚轮的录制和回放。

CSS属性访问改进

  • 通过Squish的属性系统提供对HTML对象的CSS属性的访问。所有HTML对象都有一个名为'css'的新属性,其中包含所有当前已知的CSS属性作为子属性。

    在脚本中以及通过squishide中的属性视图都可以访问,这使得创建验证变得容易。颜色相关的CSS属性以一个新的专用类型提供,使得验证单个颜色属性(红色、绿色、蓝色、alpha)变得无缝。

    更多详细信息可以在HTML_Object.cssHTML_Object类的文档中找到。

JavaScript引擎改进

  • 添加了来自ECMAScript 2021的新空合并运算符和其他运算符:??, ??=, &&=||=
  • 添加了Object.seal()Object.isSealed()以及Object.freeze()Object.isFrozen()
  • 调整了Object.preventExtensions()Object.isExtendible()的行为以符合ECMAScript 2015。这两个函数将不再在非对象类型的参数上抛出错误。
  • 支持模块中的export class语句。
  • 添加了额外的对象字面量类型:除了{a: b, c: d}之外,还包括:{x}, {a: b,}, {[expr]: value}, {f() { return 1;}}, {get x() { }}{set x(v) { }}
  • 支持函数调用参数、数组字面量[...e]和对象字面量{...x}的扩展运算符。
  • 支持模块中的“延迟”默认导出。导出x作为默认值的语法是:export { x as default };
  • 修复了通过super引用调用的函数中的this值。

通用

  • XML报告(从3.5版本开始)中所有事件的时精度都提高了,现在可以包含毫秒。格式符合ISO 8601标准,例如读取如下:2020-10-05T10:20:30.005+01:00
  • 对于所有操作系统,squishrunners的--exitCodeOnFail选项的值现在限制在0到255之间,以提高可移植性。

squishide

  • squishide的一些依赖关系需要更新,这导致运行squishide的最低系统要求发生了变化。特别是,现在squishide使用Java 11、Eclipse 2020-12(4.18)和Open JavaFX 16。
    • Linux:
      • CentOS 7.5、RHEL 7.5、SLES 15、Ubuntu 18.04及类似的发行版
      • squishide仅适用于64位系统,Squish的32位Linux软件包不包括squishide
      • 平台必须至少提供GTK 3.20,以便squishide正常运行
      • 只要它们提供必要的最低版本的GTK,旧的Linux发行版版本也可能运行。
    • macOS:macOS 10.13
    • Windows:Windows 7

    此外,squishide的新视频播放功能需要Linux系统上安装FFmpeg库,并支持FFmpeg的几个不同版本:56、57和58。

    这些更改也适用于可以在Eclipse中安装的Eclipse Squish集成。您仍然可以使用较旧版本的Eclipse,但必须使用Java 11,并且Open JavaFX可能还需要GTK的相对较新版本。

  • 现在在squishide中可以方便地切换跨多行的BDD注释。
  • 当在squishide中打开链接时,启用了Eclipse提供的“Web浏览器”行为配置(在“首选项”>“常规”)。

    当在squishide中打开链接时,配置的浏览器被用于例如打开在线手册或在脚本编辑器中打开URL,在悬停于URL的同时按Ctrl/Cmd键。

    此配置允许覆盖Eclipse打开URL时使用外部浏览器时的默认行为——尤其是在确保使用浏览器而不是其他应用程序时。

    注意,此配置条目不相关于Squish在Web中运行测试时使用的浏览器。用于测试的浏览器仍然通过服务器设置对话框进行配置。

  • squishide使用的Python编辑器(Pydev)已更新到版本9.1.0,改进了对Python新版本的支持。

剧本

  • 集成的Perl解释器已更新到版本5.34。
  • 当调用installEventHandler缺少或无效的事件处理函数时,Squish报告中的错误现在也包含Python的代码位置。

安装程序

  • 默认选择安装Python 3,Python 2仍可作为可选项。
  • Squish for Mac、Squish for Java和Squish for Qt(6.2或更高版本)的安装程序提供适用于macOS的通用软件包。

Qt

  • 支持Qt 6.2.x。Qt 6.3发布后将提供软件包。
  • 在测试嵌入式设备时使用grabWidget() API捕获的图像可以通过etc/qtwrapper.ini中的DisplayRotation设置进行旋转,以改进屏幕截图验证的工作。
  • 因为依赖于已被 mousePress 和其他函数的通用变体所取代的脚本函数,所以删除了 RecordNativeMouseCommands 设置(来自 qtwrapper.ini)。
  • 当 Squish 被添加到静态链接的 Qt AUT 中时,已修复了 Qt 工具包支持的扩展的初始化问题。使用静态 Qt 和非 qmake 的构建系统的客户可能需要根据 qtbuiltinhook.pri 的变化来适应他们的构建规则。
  • 为在 iOS 模拟器中运行的 Qt 5.15 或更高版本增加了嵌入式软件包。
  • 已修复在 Qt 6.2 及更高版本中加载 QWebEngineView 的支持问题。
  • 已修复通过安全模式(例如,setuid)中的内置钩子加载 Qt Wrapper 的问题。
  • 当 Qt 和其 XCB 平台插件在未带有 Xlib 支持的情况下构建时,原生测试脚本函数如 mousePress() 现在可以工作了。
  • 在 macOS 上的 Qt 应用程序中删除了对基于 Carbon 的菜单的支持。

    macOS Carbon 框架自 2007 年起已停止使用,且始终作为 32 位库提供。现代 64 位应用程序不再使用它,因此不再提供支持。

服务器

  • 修改了 squishserver 和 startaut 的行为,以确保在基于 ARM64 的 macOS 系统上运行且 Squish 版本也支持此功能时,总是以该架构启动支持 ARM64 架构的 AUT。这 affects Squish for Qt,Squish for Java 和 Squish for macOS。

Web

  • 如果未在 Squish for Web 中配置默认浏览器,则回退到 Internet Explorer(适用于 Windows 10 或更早版本)将在 server.ini 文件中设置为默认浏览器。
  • 将 Squish for Web 的默认浏览器从 Internet Explorer 更改为 Windows 11 或更高版本上的 Edge。
  • 使用 Google Chrome 时启用使用 Content-Security-Policy 的网站的自动化,现在不再需要额外的第三方扩展。

Android

  • 在录制 tapObject 调用时尊重 GUI 元素的 Z 轴顺序。从 Android API 级别 21 开始变得相关。
  • 将构建包升级到 Android SDK 31,并使用优化的 d8 Dalvik 编译器。

未来平台更改

为了让我们能够继续支持更新的编译器和平台,将不得不删除一些旧编译器和平台的支持。此计划定于在 7.0 后的下一次特性版本(即 7.1 或 8,哪个先到来)发生,但我们想提前宣布此计划,以便客户可以为此做好准备或通过我们的支持渠道联系我们来了解更多关于此计划的信息。

此更改的主要影响将是 Squish for Qt 版本,这将影响二进制包和源包用户。我们对于源包的计划可以在 源包 中找到。我们计划 删除 作为以下 Squish for Qt 的以下二进制包

  • 使用 MSVC < 14(Visual Studio 2015)的包
  • 使用 MinGW < 4.8 的包
  • Windows CE < 8 的包

其他Squish版本的二进制包受影响较小。在实施更改时,我们可能需要要求使用CentOS 7(或等效)Linux发行版,但我们不期望Windows或macOS平台的二进制包有任何变化。我们将在二进制包的最低系统要求中相应反映变更要求。

原生Windows

  • 在Windows 11、.NET 6以及ARM64硬件(仿真模式)上首次测试显示出良好的结果。

macOS

  • Squish for Mac软件包已准备就绪,也支持M1机器,即运行在ARM64硬件上的macOS。

iOS

  • Squish现在支持从Xcode 13及更高版本开始的iOS模拟器。旧的Squish版本在从Xcode 12升级到13后无法找到模拟设备。

Tk

  • 修复了有时在使用AUT中成功评估Tcl代码时,tcleval会引发脚本错误的问题。
  • 改进了读取Tk小部件属性失败时的错误报告。

源代码包

  • configure现在可以检测到来自QNX 7.0或更高版本的q++作为一个有效的C++编译器。
  • 修复了由于明确的运行时库路径引起的构建问题(特别是交叉编译)。要求通过运行时库路径找到其Qt的构建环境现在需要在Squish构建之前设置此环境。
  • 现在支持使用Qt 6.0或更高版本构建squishrunner和ide-utils。
  • Squish for Qt现在可以在不使用QtWidgets的情况下构建,这可以在嵌入式设备上特别减少内存占用。
  • 对于下一个在7.0之后的特征版本,我们将要求对所有源代码包需要C++11以及一个兼容C++11的编译器。这个变更将取消支持以下编译器和平台
    • MSVC7(Visual Studio 2005)到MSVC12(Visual Studio 2013),它们都不完全支持C++11
    • GCC < 4.8(Linux和MinGW)
    • QNX < 7.0
    • Windows CE < 8
    • Solaris(没有与C++11-编译器兼容的Qt版本)

    参见未来平台更改

©2024 The Qt Company Ltd. 本文档中的贡献包含各自的版权所有者的版权。
提供的文档依据由自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。
Qt及其相应标志是芬兰的和/或世界其他地区的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。