使用cypress和vuetify

rkttyhzu  于 7个月前  发布在  Vue.js
关注(0)|答案(1)|浏览(83)

我有一个Vue.js项目(Nuxt.js),我使用Vuetify作为UI。对于e2 e测试,我使用Cypress。
下面是我在Cypress的测试场景:
我在为使用v-autocomplete组件的页面创建测试时遇到问题。问题是我无法使用Vuetify原生类来获取我要测试的元素。下面是一个使用data-cy选择器的示例

<v-autocomplete
      v-model="model"
      :items="items"
      item-text="Description"
      item-value="API"
      label="Public APIs"
      placeholder="Start typing to Search"
      data-cy="autocomplete"
    ></v-autocomplete>

字符串
我键入一些文本到搜索输入.然后在v-自动完成已经找到搜索结果.和例子之一有下面:

...
    <div>
       <a class="v-list__tile v-list__tile--link theme--light">
         <div class="v-list__tile__content">
         <div class="v-list__tile__title">Result item
           <span class="v-list__tile__mask">result item</span>
         </div>
         </div>
       </a>
   </div>
...


然后,我想通过点击找到的结果之一选择搜索项目之一.为此,我应该使用Vuetify的原生类,但它不是有稳定性(.v-list__tile--link类可以由开发人员重命名).我如何可以添加数据cy选择器到结果搜索html项目?也许谁知道任何其他方法来解决这个问题?

fcg9iug3

fcg9iug31#

我不认为v-list__tile--link可以被开发人员更改,它似乎是由Vuetify库在运行时添加的DOM(除非你指的是Vuetify开发人员,那么肯定它可以在版本之间更改)。
在任何情况下,如果您希望选择器更面向内容,请使用Cypress.parent()选择器
比如说,

cy.contains('div', 'itemTextToSelect').parent('a').click()

字符串
如果可能的话,确保**itemTextToSelect '**是真正独特的(如果您可以在测试夹具中设置它)。
顺便说一句,在用户开始输入之前,自动完成列表是display: none,所以你需要在输入中输入.type('something'),或者在输入中输入.click({force: true})

相关问题