我想建立一个具有正确的无头端到端测试配置的电子项目。
Spectronjs似乎是实现此目标的解决方案。但是,没有配置可防止在每次测试中打开窗口。读取存储库中的一些线程+有关测试的电子文档提到Xvfb。我试图解决这个问题,但是到目前为止,您还不能理解它无法安装在Windows上吗?而且别无选择。
页面上的列表包括其他选项,例如Appvoyer或CicleCI,但它们又是新的,我几乎无法找到关于这些的指南,更不用说了,我真的不喜欢必须做所有这些步骤(链接到github / bitbucket帐户等)。
我也曾尝试从electronjs列表页面浏览演示应用程序,但并非所有应用程序都具有测试,并且当它们运行时,有时会用似乎是另一种编程语言编写,或者专门针对它们。对于角度或反应,我打算使用vuejs。
有人能给我指出一个干净的示例,该示例在Windows上对电子应用进行离线端到端无头测试吗?
答案 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