Сквозное тестирование электронного приложения в Windows

Чего я пытаюсь достичь:

Я хотел бы создать электронный проект с надлежащей конфигурацией сквозного тестирования без головы.

Возникли проблемы

Spectronjs, кажется, решение для достижения этой цели. Однако нет никакой конфигурации, чтобы предотвратить открытие окна при каждом тесте. Чтение некоторых потоков в репозитории + документация об электронике в отношении тестирования упоминает Xvfb. Я пытался обдумать это, но до сих пор понимаю, что это не может быть установлено в Windows? И что нет альтернативы.

Список на странице включает в себя другие параметры, такие как Appvoyer или CicleCI, но они снова являются новыми, и я едва могу найти руководство по этим вопросам, не говоря уже о том, что мне не очень нравится, что я должен делать все эти шаги (ссылка на github / bitbucket account и т. д.).

Я также пытался просмотреть демонстрационные приложения со страницы списка Electronjs, но не все из них имеют тесты, и когда они это делают, они когда-то написаны на том, что, кажется, другой язык программирования, или специально предназначены для угловых или реагировать, в то время как с моей стороны я стремлюсь использовать vuejs.

Может кто-нибудь указать мне на чистый пример автономного конца, чтобы закончить безголовый тест электронного приложения на Windows?

0 ответов

Есть несколько вариантов, как E2E протестировать приложение Electron, к сожалению, ни один из них не является действительно безголовым. В 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);
  }
})();

Я тестирую и собираю электронное приложение в конвейерах Azure (бесплатно для проектов с открытым исходным кодом) на Win, Linux и MacOS с этим конфигом: azure-pipelines.yml

Другие вопросы по тегам