Lambda 测试不适用于 azure devops 管道

Lambda tests not working on azure devops pipeline

我在 运行 来自 Azure DevOps 管道的 lambda 测试中遇到一个问题。

我在 testcafe 中编写了测试,它们在本地工作,成功测试用例的百分比为 100%。

我尝试在本地使用不同的浏览器,例如在 cmd 中为 Microsoft Edge 指定命令:

npx testcafe "lambdatest:MicrosoftEdge@91.0:Windows 10" "e2e-testcafe/regression" -c 1 -q -e --browser-init-timeout 180000.

效果很好。

当我想在 azure 管道上包含任务时,隧道已成功启动,但出现一些关于未处理的承诺拒绝的奇怪错误。

pool:
  name: Azure Pipelines
steps:
- task: NodeTool@0
  displayName: 'Use Node 16.15.0'
  inputs:
    versionSpec: 16.15.0

- script: 'npm install'
  workingDirectory: 'test-main'
  displayName: 'Install Testcafe'

- task: Npm@1
  displayName: 'npm custom'
  inputs:
    command: custom
    workingDir: 'test-main'
    verbose: false
    customCommand: 'install node-lambda -g'

- task: Npm@1
  displayName: 'npm custom testcafe'
  inputs:
    command: custom
    workingDir: 'test-main'
    verbose: false
    customCommand: 'install testcafe -g'

- script: 'npx testcafe "lambdatest:MicrosoftEdge@91.0:Windows 10" "e2e-testcafe/regression" -c 1 -q -e --browser-init-timeout 180000'
  workingDirectory: 'test-main/src'
  displayName: 'Run Lambda Edge'
  env:
    LT_USERNAME: //my username
    LT_ACCESS_KEY: $(LT_ACCESS_KEY)
    LT_CONSOLE: true
    LT_NETWORK: true
    LT_VIDEO: true
    LT_SCREENSHOT: true

我得到的输出是一些奇怪的错误,权限没有得到正确处理,所有测试都失败了 6/6,这是我得到的一些响应:

Successfully auth

× Check application links

    • Error in fixture.beforeEach hook - Unhandled promise rejection:

    Error: Cannot pipe, not readable at new NodeError (node:internal/errors:372:5) at ServerResponse.pipe (node:_http_outgoing:991:22) at Object.respondOnWebSocket

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\websocket.js:39:9) at Array.decideOnProcessingStrategy

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\stages.js:75:25) at Object.run

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\index.js:19:34) at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5)

  Browser: Microsoft Edge 91.0.864.41 / Windows 10 (
  × Check navigation rules
    • Error in fixture.beforeEach hook - Unhandled promise rejection:

    Error: Cannot pipe, not readable at new NodeError (node:internal/errors:372:5) at ServerResponse.pipe (node:_http_outgoing:991:22) at Object.respondOnWebSocket

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\websocket.js:39:9) at Array.decideOnProcessingStrategy

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\stages.js:75:25) at Object.run

(D:\a\s\test-main\node_modules\testcafe-hammerhead\lib\request-pipeline\index.js:19:34) at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5)

  Browser: Microsoft Edge 91.0.864.41 / Windows 10 (

你知道这是怎么回事吗?我也尝试过使用简单的 e2e 任务的管道,它们按预期工作。

感谢任何帮助。

问题似乎出现在 Node.js 的 'http' 模块中。请分享一个可以重现问题的示例,以便我检查此假设是否正确。如果你能做出这样的例子,请在 TestCafe GitHub 存储库中创建一个问题并将你的例子附加到它。

我遇到了类似的问题。 testcafe lambda 运行 在本地成功,但在 Azure DevOps 中由于一些管道错误而失败。

如果您有除 LT_USERNAMELT_ACCESS_KEY 之外的任何其他 lambda 测试变量(如 LT_NETWORK, LT_SNAPSHOT, 等等), 然后尝试删除那些变量.

删除那些额外的环境变量对我的情况有所帮助。希望对你也有帮助!

我知道这个答案没有提供根本原因,但它应该很可能解决您面临的问题。