【问题标题】:End to end test of electron app on WindowsWindows 上电子应用的端到端测试
【发布时间】:2018-11-10 20:13:31
【问题描述】:

我想要达到的目标:

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

遇到的问题

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

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

我也尝试过从 electronjs 列表页面浏览演示应用程序,但并不是所有的应用程序都进行了测试,而且当它们进行测试时,它们有时是用一种不同的编程语言编写的,或者专门针对角度或反应,而我的目标是使用 vuejs。

谁能指出一个在 Windows 上对电子应用程序进行离线端到端无头测试的干净示例?

【问题讨论】:

    标签: electron e2e-testing headless-browser xvfb


    【解决方案1】:

    E2E 测试 Electron 应用程序有多种选择,遗憾的是它们都不是真正无头的。在 Windows 上你不需要 Xvfb,它是 Linux 的东西。在 Windows 上,即使在 CI 环境中也有一个“屏幕”可用(我有使用 Appveyor 和 Azure Pipelines 的经验)。

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

    Short 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

    【讨论】:

    • 感谢您的回复。我已经用 Jest 和 Spectron 实现了一个解决方案,但我对结果不满意,它很慢,打开了多个空终端(显然是一个从 2016 年开始至今尚未解决的问题,并且也只发生在 Windows 上)。我想也许 docker 会帮助实现无头测试?但我发现这一切势不可挡。
    • 到目前为止,我已经达到了以下“electronuserland/builder:wine-chrome — google-chrome-stable 和 xvfb 可用 — 您可以使用此图像对 Electron 应用程序进行无头测试。基于在建筑商:酒上。”这似乎表明可以实现无头测试。但我仍然无法理解 Docker 以及如何让它工作。
    • 即使将 executablePath 设置为电子,我仍然无法使其工作。它说'错误:找不到进程“14012”。 (节点:28388)UnhandledPromiseRejectionWarning:错误:无法启动 chrome!可能出了什么问题?
    猜你喜欢
    • 2015-09-28
    • 2013-04-17
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多