我正在一个使用量角器进行e2e测试的项目。
一些测试需要验证日期/时间。在我们的持续交付平台上进行测试可以确保时区保持稳定。
但是,当测试在时区可以更改的本地计算机上运行时,测试将失败,因为捕获的浏览器在另一个时区上运行。
我需要通过量角器控制时区,以进行独立于平台的测试。
这可能吗?
最佳答案
答案很晚,但也许将来有人可以使用它...这有点丑陋,但我还没有发现任何更漂亮的东西。它可能对您不起作用,这取决于您的应用程序检测时区的方式。如果与getTimezoneOffset()一起使用,它将起作用。
基本上,它重写Date()类,并向其添加setTimezoneOffset()。
将TimeShift.js添加到您的助手中:https://github.com/cvakiitho/TimeShift-js/blob/master/timeshift.js
在测试中加载TimeShift:var TimeShift = require('./helpers/timeshift.js');
执行TimeShift,并更改时区:
dvr = browser.driver;
dvr.executeScript(TimeShift).then(function(){
dvr.executeScript('' +
'angular.isDate = function(x){return x instanceof Date};' +
'Date = TimeShift.Date;' +
'TimeShift.setTimezoneOffset(60);' +
});
注意:每次刷新页面都会破坏它。