Сквозное тестирование электронного приложения в Windows - PullRequest
0 голосов
/ 10 ноября 2018

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

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

Обнаружены проблемы

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

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

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

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

1 Ответ

0 голосов
/ 16 января 2019

Есть несколько вариантов, как 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 с этой конфигурацией: лазурь-pipelines.yml

...