Windows上electron应用程序的端到端测试 我正在努力实现的目标:

Windows上electron应用程序的端到端测试 我正在努力实现的目标:,electron,e2e-testing,headless-browser,xvfb,Electron,E2e Testing,Headless Browser,Xvfb,我想建立一个具有适当无头端到端测试配置的电子项目 遇到的问题 Spectronjs似乎是实现这一目标的解决方案。但是,没有防止每次测试时打开窗口的配置。阅读存储库中的一些线程+有关测试的electron文档提到了Xvfb。我已经试着了解这一点,但到目前为止,我明白这不能安装在Windows上吗?而且别无选择 页面上的列表包括其他选项,如Appvoyer或Ciclei,但这些都是新的,我几乎找不到关于这些选项的指南,更不用说,我真的不喜欢我必须执行所有这些步骤(链接到github/bitbucke

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

遇到的问题 Spectronjs似乎是实现这一目标的解决方案。但是,没有防止每次测试时打开窗口的配置。阅读存储库中的一些线程+有关测试的electron文档提到了Xvfb。我已经试着了解这一点,但到目前为止,我明白这不能安装在Windows上吗?而且别无选择

页面上的列表包括其他选项,如Appvoyer或Ciclei,但这些都是新的,我几乎找不到关于这些选项的指南,更不用说,我真的不喜欢我必须执行所有这些步骤(链接到github/bitbucket帐户等)

我也尝试过从electronjs列表页面浏览演示应用程序,但并非所有的应用程序都有测试,当它们有测试时,它们有时会用不同的编程语言编写,或者专门针对angular或react,而在我这方面,我的目标是使用vuejs


有人能给我举一个在Windows上对electron应用程序进行离线端到端无头测试的干净例子吗?

有几种方法可以选择如何对electron应用程序进行E2E测试,不幸的是,没有一种方法是真正无头的。在Windows上,您不需要Xvfb,它是Linux的东西。在Windows上,甚至在CI环境中也可以使用“屏幕”(我有Appveyor和Azure管道方面的经验)

  • (木偶演员核心不含铬)
过去我用的是斯派克伦,但最近我换成了木偶演员,我对这一转变非常满意

短木偶演员试用测试文件:

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);
  }
})();
我正在使用以下配置在Azure Pipelines(开源项目免费)中测试和构建Win、Linux和MacOS上的electron应用程序:

谢谢您的回复。我已经用Jest和Spectron实现了一个解决方案,但我对结果不满意,它速度慢,打开多个空终端(显然这个问题始于2016年,至今尚未解决,而且也只在windows上发生)。我想也许docker会帮助实现无头测试?但我发现所有这些都是压倒性的。到目前为止,我已经达到了以下“electronuserland/builder:wine chrome-google chrome stable和xvfb可用-您可以使用此图像进行电子应用程序的无头测试。基于builder:wine。”这似乎表明实现无头测试是可能的。但我仍然无法理解Docker以及如何让它工作。即使将executablePath设置为electron,我仍然无法让它工作。它说“错误:找不到进程“14012”。(节点:28388)未处理的PromisejectionWarning:错误:无法启动chrome!'可能出了什么问题?还有。