Windows上电子应用程序的端到端测试

时间:2018-11-10 20:13:31

标签: electron e2e-testing headless-browser xvfb

我要实现的目标:

我想建立一个具有正确的无头端到端测试配置的电子项目。

遇到问题

Spectronjs似乎是实现此目标的解决方案。但是,没有配置可防止在每次测试中打开窗口。读取存储库中的一些线程+有关测试的电子文档提到Xvfb。我试图解决这个问题,但是到目前为止,您还不能理解它无法安装在Windows上吗?而且别无选择。

页面上的列表包括其他选项,例如Appvoyer或CicleCI,但它们又是新的,我几乎无法找到关于这些的指南,更不用说了,我真的不喜欢必须做所有这些步骤(链接到github / bitbucket帐户等)。

我也曾尝试从electronjs列表页面浏览演示应用程序,但并非所有应用程序都具有测试,并且当它们运行时,有时会用似乎是另一种编程语言编写,或者专门针对它们。对于角度或反应,我打算使用vuejs。

有人能给我指出一个干净的示例,该示例在Windows上对电子应用进行离线端到端无头测试吗?

1 个答案:

答案 0 :(得分:0)

有多种方法可以进行E2E测试电子应用程序,但不幸的是,这些方法都不是真正的失败。在Windows上,您不需要Xvfb,这是Linux的东西。在Windows上,即使在CI环境中也有一个“屏幕”可用(我在Appveyor和Azure Pipelines上有经验)。

过去我使用Spectron,但最近我切换到了Puppeteer,对此切换感到非常满意。

短木偶试用版测试文件:

const electron = require("electron");
const puppeteer = require("puppeteer-core");

const delay = ms =>
  new Promise(resolve => {
    setTimeout(() => {
      resolve();
    }, ms);
  });

(async () => {
  try {
    const app = await puppeteer.launch({
      executablePath: electron,
      args: ["."],
      headless: false,
    });
    const pages = await app.pages();
    const [page] = pages;

    await page.setViewport({ width: 1200, height: 700 });
    await delay(5000);
    const image = await page.screenshot();
    console.log(image);
    await page.close();
    await delay(2000);

    await app.close();
  } catch (error) {
    console.error(error);
  }
})();

我正在使用以下配置在Win,Linux和MacOS上的Azure Pipelines(对于开源项目免费)中测试和构建电子应用程序: azure-pipelines.yml