Testing 在每个钩子之前测试.before钩子覆盖功能.before钩子。糟糕的逻辑?

Testing 在每个钩子之前测试.before钩子覆盖功能.before钩子。糟糕的逻辑?,testing,automated-tests,hook,e2e-testing,testcafe,Testing,Automated Tests,Hook,E2e Testing,Testcafe,文档()说明: 如果指定了test.before或test.after,它将覆盖每个挂钩对应的fixture.beforeach和fixture.afterEach,以便后者不会执行 这不合逻辑。不应在每次执行之前先执行功能 我的代码使用feature.beforeach钩子最大化浏览器。我工作的网站根据页面大小有不同的DOM元素-手机、平板电脑、桌面等 当TestCafe打开浏览器时,它的大小总是很小。如果我想处理桌面元素,我必须先等待浏览器最大化。我不能使用test.before钩子,因为它

文档()说明:
如果指定了test.before或test.after,它将覆盖每个挂钩对应的fixture.beforeach和fixture.afterEach,以便后者不会执行

这不合逻辑。不应在每次执行之前先执行功能

我的代码使用feature.beforeach钩子最大化浏览器。我工作的网站根据页面大小有不同的DOM元素-手机、平板电脑、桌面等

当TestCafe打开浏览器时,它的大小总是很小。如果我想处理桌面元素,我必须先等待浏览器最大化。我不能使用test.before钩子,因为它将尝试访问不存在的元素,并立即失败


建议:我们能让每个钩子之前的特性总是先执行吗?这可能类似于Cucumber中的“Background”命令,该命令在功能的每个场景之前运行?

我不会在一个套件中混合测试不同的域,如桌面和移动设备,但如果是这样:

我建议建立一个小黄瓜句子,根据即将进行的测试设置环境设置

小黄瓜内部的业务逻辑必须更加灵活,java代码必须根据之前设置的开关对应不同的Web元素

根据DSL gherkin提供的参数,您可以创建涵盖所有域(移动、桌面)的gherkin步骤定义,也可以为每个域构建自己的语句,例如:

Either (parameter driven):
Open the Startpage on the <domain> interface

OR:
Open the Startpage on the mobile interface
AND
Open the Startpage on the desktop interface

Method for parameter-driven:

@When ("^Open the Startpage on the (.*) interface$")
public void OpenTheStartpageOnTheInterface(String domain){
if(domain.equals("desktop"){
  driver.get("desktop.url");
}else if (domain.equals("mobile")){
  driver.get("mobile.url");
}
任一(参数驱动):
在界面上打开Startpage
或:
在移动界面上打开Startpage
及
在桌面界面上打开Startpage
参数驱动的方法:
@当(“^打开(.*)接口$”上的起始页)
public void在界面上打开起始页(字符串域){
if(domain.equals(“桌面”){
get(“desktop.url”);
}else if(domain.equals(“移动”)){
driver.get(“mobile.url”);
}

因此,我要么将java方法复杂化,以对不同的域做出反应,要么将testsuite划分为不同的词汇表,甚至是不同的项目。

测试之前的
钩子可能只在有操作的情况下访问元素(并且
maximeWindow
不是其中之一)尝试访问元素。在钩子之前,
测试中有哪些操作?