使用赛普拉斯的“ within()”会提高性能吗?

时间:2019-12-09 15:44:38

标签: javascript performance performance-testing cypress

问题:

cy.get()回调中使用within()而不是在document级别使用性能提高了吗?

建议的解决方案:

我想创建一个高阶函数,该函数具有一个“元素选择器函数”和一个“回调”函数,可用于包装组件的所有后续测试。我希望这可以提高性能,但是我没有足够的数据来支持这种说法。

export const withinEntryPoint = (callbackFn, entrySelectorFn) => () => entrySelectorFn().within(callbackFn);

entrySelectorFn如下所示:

const selectEntryPoint = () => cy.get(`${selectors.ENTRY}`); // Or more complex logic if needed

对于每个测试,我都会做:

it('should do blah', withinEntryPoint(() => { ... }, selectEntryPoint)

所需结论:

这是否会使我的测试运行更快?还是我在浪费一些语法糖?


更新:

在研究了赛普拉斯的接口之后,它脱颖而出:

within Interface method

Withinable Interface

这里文档的关键部分是:“要在其中搜索子级的元素。如果为null,则从根级DOM元素开始搜索。”

get()上搜索文档大概是:Ω(n)其中n = DOM elementsΩ的意思是“它必须遍历每个DOM元素以确保它是否符合选择器条件”

除非使用选择器进行内部优化,否则?假设cy.get('body > #id1 > #id2'),其中cy.get()仅在元素id2中正确搜索ID为id1的元素。

我想问题就出在这里,赛普拉斯是否根据选择器为您进行了优化?如果没有,那么我认为如果您有大量的单个组件化测试套件,从理论上讲,它将通过使用within()设置范围来加快处理速度?

0 个答案:

没有答案