赛普拉斯代码
it('Check all pdf files after buying webstore items: AXQA-7446', () => {
cy.visit(Cypress.env('base_url') + '/en/ShoppingCart/ThankYou/');
cy.get('.ax-btn.ax-btn-secondary.ax-full-width').click();
cy.get('.d-none.d-md-block.ax-pl-1').eq(0).click({timeout: 5000});
cy.get('.ax-pb-2.semi-bold').children().should('have.length.gt', 0);
cy.get('.ax-btn.ax-btn-secondary.ax-mb-1.ax-btn-sm').eq(0).click();
const currentDate = dayjs().format('YYYYMMDD');
const fileName = 'Receipt_' + currentDate + '*.pdf';
const filePath = path.join(__dirname, '..', '..', 'cypress', 'downloads', fileName);
// Check if the file exists
cy.task('fileExists', filePath).then((exists) => {
expect(exists).to.be.true; // Assert that the file exists
});
});
我想添加测试来检查文件是否存在。
未加载如图所示的页面。
有人可以向我解释我做错了什么吗?
就测试下载而言,您似乎没有做错任何事情。
我建议该应用程序正在尝试显示下载的 PDF,并且查看器与 Cypress 测试运行程序不兼容。
您需要与开发人员核实 PDF 查看器的工作原理,但一种流行的方法是
window.open(<pdf-name>)
。
要处理这种情况,请将窗口打开函数存根到
cy.visit()
上并确认该函数已被调用。这可以防止激活实际的查看器,然后您的测试可以确认物理文件的下载。
以下是测试的大致方法:
cy.visit(<my-url>, {
onBeforeLoad: (win) => {
cy.stub(win, 'open').as('open') // stubbing so that the viewer does not load
}
})
...
cy.get('button').click() // initiate the download
cy.get('@open').should('have.been.called') // confirm the open command occurred
cy.task('fileExists', ... // confirm the download here