Cypress Hangs with cy.clock()



目前我有一组测试,我将cy.clock()设置为将来的某个时间运行。这行代码位于before()代码块中,因此所有测试都使用after()代码块中具有restore()的未来日期。

我面临的问题是,测试运行程序是缓慢的,有时冻结,无响应。测试不会一直进行(没有错误),当测试完成时,测试运行器UI被冻结。

有什么建议吗?删除cy.clock()代码确实使测试运行器正常运行,但是没有它,测试是脆弱的,除非在一天中的某个特定时间运行测试,否则可能无法成功。

describe("A group of tests", () => {
before(() => {
cy.clock(Date.UTC(2037, 0, 3, 12, 0, 0, 0), ['Date']);
});
beforeEach(() => {
cy.viewport(1000, 1000);
});
// Tests here

after(() => {
cy.clock().then((clock) => {
clock.restore();
});
});
});

如果您确定cy.clock()是导致问题的原因,您可以替换@sinonjs/fake-timers

内部,Cypress时钟使用相同的库。直接使用它可以为您提供更多的选项来微调代码。

例如,advanceTimeDelta选项允许您控制时钟的自动滴答。如果您有片状测试,请将其降低。

const FakeTimers = require("@sinonjs/fake-timers")
cy.window().then((win) => {
const clock = FakeTimers.withGlobal(win).install({
now: Date.UTC(2037, 0, 3, 12, 0, 0, 0),
toFake: ["Date"],
shouldAdvanceTime: true,
advanceTimeDelta: 100,
})
})

相关内容

  • 没有找到相关文章

最新更新