自动化 End-End 测试 Nightwatch.js 之踩雷笔记:检查颜色

cssProperty() ?

对於写 E2E 检查颜色是否正确应该是再平凡不过的事了,当然 Nightwatch.js 其实也内建了 cssProperty 一系列的指令:

  • assert/verify[.not].cssProperty()
  • getCssProperty()

用法也相当简单,cssProperty() 带入 selector, property 以及要验证的颜色即可,并且会回传一个 true/false,并在 console 中会有打勾勾与预设的文字。

getCssProperty() 则是将最後一个要验证的颜色改为 callback function,并可以自行建立较复杂的验证。

cssProperty()

写法范例:
https://ithelp.ithome.com.tw/upload/images/20210917/20120250FX1RnzOFn1.png

执行结果:
https://ithelp.ithome.com.tw/upload/images/20210917/20120250hANzmxElhd.png

看起来很正常简单,但遇到其他浏览器就不一定了:
https://ithelp.ithome.com.tw/upload/images/20210917/20120250JvI67cCbXp.png

有趣的是,即便点开 devtool 中检查元素,颜色也会由 hex 转成 rgb 或 rgba
且只有 FirefoxSafari 才会有这个问题。

解决方法

既然已经知道单纯使用 cssProperty() 验证颜色失败,那麽就用 getCssProperty() 自己做一个吧!

checkColorSafe()

先前提到 getCssProperty() 可以将 Nightwatch 读到的颜色转为 rgb/rgba,并放入一个 callback function,因此:

https://ithelp.ithome.com.tw/upload/images/20210917/20120250ZLYv3sPl2o.png

透过简单的检查与替换,便可以完成:

https://ithelp.ithome.com.tw/upload/images/20210917/20120250vJHm4GUUmn.png

当然,写在测试的档案是绝对没有问题的。只不过 Nightwatch 是可以将常用的指令模组化,建立自己的客制化指令。并会在明天的内容做个简单的 demo.


<<:  JavaScript入门 Day12_如何使用数字4

>>:  【DAY03】如何在VSCODE上运行HTML

Nice day 30 (iphone10s 功能挖掘)-完赛感言

感言 感谢笔者的夥伴,在这一路走来都给予支持和鼓励,想到当初不小心报到团体赛,不熟悉规则,以为是三人...

[重构倒数第16天] - 选择套件给我好好选啊!

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...

Raspberry pi 的GPIO

翻开Raspberry pi 4b的datasheet "raspberry-pi-4-d...

Windows Server 2019 如何安装 Mail Server,使用 hMailServer 来管理收发信

hMailServer 是一个免费、开源的 Windows 电子邮件服务器,可轻松管理收信及发信服务...

DAY26 深度学习-卷积神经网路-Yolo V1

接续昨天的文章,今天介绍一下Yolo v1的Loss Function,由於在训练的时候我们当然希...