在 github 操作中使用 .shadow() 和 cypress.io

Posted

技术标签:

【中文标题】在 github 操作中使用 .shadow() 和 cypress.io【英文标题】:Using .shadow() with cypress.io in github actions 【发布时间】:2021-12-05 23:54:41 【问题描述】:

我正在使用 Cypress 在 React 中编写一些 e2e 测试。我让它在我的本地开发环境中正常工作,但是当测试在 GitHub Action 管道中运行时它失败了。

我认为这是因为我正在尝试访问影子 Dom 元素,并且在运行操作时由于某种原因无法正常工作。

这是我的测试:

it('Should be able to click add to list button',
     includeShadowDom: true ,
    () => 
        cy.get('.IPEX_HSD_product_sheet_add_to_bag')
        .shadow()
        .find('kompis-icon-button',  includeShadowDom: true )
        .shadow()
        .find('button')
        .click();
    
);

这是我的柏树配置:


    "baseUrl": "http://127.0.0.1:3000/#/",
    "includeShadowDom": true,
    "defaultCommandTimeout": 10000,
    "fixturesFolder": false,
    "integrationFolder": "./test/e2e",
    "pluginsFile": false,
    "supportFile": "./test/cypress.support.ts",
    "testFiles": "**/*.test.ts",
    "video": false

这些是我的 package.json 中的脚本:

"cypress:open": "cypress open --config-file ./test/cypress.config.json",
"test:e2e": "cypress run --headed --config-file ./test/cypress.config.json",
"test:e2e:ci": "start-server-and-test serve http://localhost:3000 test:e2e"

这是来自我的 workflow.yml:

  - name: Install dependencies and cache them. Run E2E tests against production build ????
    uses: cypress-io/github-action@v2
    with:
      build: npm run build
      start: npm start
      command: npm run test:e2e:ci
      cache-key: node-modules-$ hashFiles('package-lock.json') 

如您所见,我已尽可能添加 includeShadowDom: true ,但似乎没有效果。

我得到的错误是:

AssertionError: Timed out retrying after 10000ms: Expected to find element: `kompis-icon-button`, but never found it. Queried from element: <kompis-add-to-bag.IPEX_HSD_product_sheet_add_to_bag>

这是源 html

【问题讨论】:

可以添加元素的html吗? @AlapanDas 是的,我已经添加了。 【参考方案1】:

假设您在cypress.json 中添加了"includeShadowDom": true,,那么您不需要在其他任何地方添加shadow()cy.get() 会自动遍历 shadow dom。

cy.get('.IPEX_HSD_product_sheet_add_to_bag', timeout: 7000)
  .should('be.visible')
  .find('kompis-button > button', timeout: 7000)
  .click()

【讨论】:

谢谢,但我已经尝试过了,它在本地运行良好,但是一旦我通过 git 操作运行它,测试就会中断。 你可以添加一个可见的断言。 再次感谢,但我很确定我的测试语法没问题。我的问题是 git 操作管道中发生了什么以及为什么它似乎无法在那里找到阴影元素。 我很想这样做,但我该怎么做呢? 您可以截取屏幕截图并将其添加到工件中进行调试。

以上是关于在 github 操作中使用 .shadow() 和 cypress.io的主要内容,如果未能解决你的问题,请参考以下文章

如何使用gradle任务运行shadow jar?

linux 中普通用户访问/etc/shadow 的问题

使用 Shadow 重定位的包中的 Kotlin 属性不起作用

Flutter Web:Shadow Root问题

Shadow dom 中的 FontAwesome svg

Linux 修改密码出现“鉴定令牌操作错误”