我们管理着一个在多个市场中运营的类似站点的长长列表,其中很多是配置驱动的,有时发行版只能破坏某些域上的情况。
因此,我想构建一个由config驱动的测试列表,以在发布之前检查我们所有的域是否正常。
请参见下面的基本示例,如果将其更改为[beforeEach],则可以正常工作,但是如果使用[before],则在第一组测试之后,cypress会一直重新加载并最终导航至该域。
当我们使用beforeEach时,一切正常,但是显然,当我们进行非交互式检查(如仅检查页面内容)时,这要慢得多。
请建议在多个域上循环执行相同测试的建议方法。
config.sites.forEach((site) => {
describe('Testing SEO:' + site.url, function() {
before(function() {
cy.visit(site.url);
});
it('Check there is only one h1 on the page on', function() {
cy.get('h1').should('have.length', 1)
});
it('Checks the contents of an h1', function() {
cy.get('h1').should('have.text', site.seo.h1)
});
});
});
答案 0 :(得分:1)
虽然您的确对每个测试来说cy.visit
都比较慢,但这实际上是赛普拉斯建议编写测试的方式。
根据"Best Practices" documentation,您不应创建一堆仅测试单个断言的测试。
Cypress会告诉您哪个断言仍然失败,因此将断言拆分为多个it
不会给您带来任何好处。
我建议这样做:
config.sites.forEach((site) => {
describe('Testing SEO:' + site.url, function() {
beforeEach(function() {
cy.visit(site.url);
});
it('Check all headers', function() {
cy.get('h1').should('have.length', 1)
cy.get('h1').should('have.text', site.seo.h1)
});
});
});