Typescript 如何在TestCafe中实现Percy

Typescript 如何在TestCafe中实现Percy,typescript,google-chrome,testing,automated-tests,testcafe,Typescript,Google Chrome,Testing,Automated Tests,Testcafe,我正在使用并尝试集成Percy进行视觉回归测试。我已经导入了,但出现以下错误ReferenceError:XMLHttpRequest未定义。任何关于如何实现这一点的见解都会有所帮助 const PercyAgent = require('@percy/agent').default; export default class Helper { takeSnapshot(snapshotName: any, snapshotOptions: any) { const percyAge

我正在使用并尝试集成Percy进行视觉回归测试。我已经导入了,但出现以下错误
ReferenceError:XMLHttpRequest未定义
。任何关于如何实现这一点的见解都会有所帮助

const PercyAgent = require('@percy/agent').default;
export default class Helper {
  takeSnapshot(snapshotName: any, snapshotOptions: any) {
    const percyAgentClient = new PercyAgent({
      clientInfo: 'awesome-percy-sdk@0.0.1',
      environmentInfo: 'some helpful os or browser information for debugging',
    });
    percyAgentClient.snapshot(snapshotName, snapshotOptions);
  }
}

Percy代理客户端正在TestCafe节点进程中运行,而不是在浏览器中运行。这就是为什么会出现错误

在第一步中,应按照以下文档将Percy客户端插入浏览器:


在第二步中,您应该按照文档中的建议将Helper类转换为
客户机函数。

您还可以利用它将Percy和TestCafe结合使用

导入库后,使用TestCafe在e2e测试中通过Percy拍摄快照非常简单:

import percySnapshot from '@percy/testcafe';

fixture('MyFixture')
  .page('http://devexpress.github.io/testcafe/example');

test('Test1', async t => {
  await t.typeText('#developer-name', 'John Doe');
  await percySnapshot(t, 'TestCafe Example');
});
请记住在运行测试之前设置特定于项目的Percy令牌,以便Percy可以在每次运行测试时创建新的构建

要在Mac OS上设置令牌,请执行以下操作:

export PERCY_TOKEN=[your-project-token]
要在Windows上设置令牌,请执行以下操作:

set PERCY_TOKEN=[your-project-token]
您可以向package.json添加新脚本以简化测试运行:

"scripts": {
    "percy:chrome": "percy exec -- testcafe chrome src/testcafe/tests"
  },
此外,您还可以将其用作设置方向

"scripts": {
    "percy:chrome": "percy exec -- testcafe chrome src/testcafe/tests"
  },