Bagaimana cara menggunakan 'resizeWindow' dengan buruh pelabuhan dan elektron di Testcafe?

Aug 21 2020

Saya memiliki masalah dalam menggunakan resizeWindowdari Testcafe di dalam kontainer buruh pelabuhan saat menguji aplikasi elektron dengan gitlab.

Catatan : Pada pengaturan lokal (linux) semua pengujian bekerja seperti yang diharapkan, tetapi di dalam kontainer buruh pelabuhan resizeWindowtampaknya tidak bekerja. Tes lain di dalam wadah juga berfungsi.

Mungkin saya melewatkan konfigurasi apa pun untuk xvfbatau haruskah saya gunakan fluxbox?

Ada saran bagaimana mengatasi ini?


Uji kesalahan dengan buruh pelabuhan:

$ yarn test-e2e-ci yarn run v1.22.4 $ node -r @babel/register ./internals/scripts/CheckBuildsExist.js && cross-env NODE_ENV=test testcafe electron:./ci ./test/e2e/DockerTest.e2e.ts --screenshots takeOnFails=true
 Running tests in:
 - Electron 9.0.4 / Linux 0.0
 Docker execution
 ✖ `ResizeWindow` works as expected 
   1) AssertionError: expected 1024 to deeply equal 100
      Browser: Electron 9.0.4 / Linux 0.0
          8 |
          9 |test('`ResizeWindow` works as expected ', async t => {
         10 |  await t.resizeWindow(100, 100);
         11 |  const innerWidth = await t.eval(() => window.innerWidth);
         12 |  const innerHeight = await t.eval(() => window.innerHeight);
       > 13 |  await t.expect(innerWidth).eql(100);
         14 |  await t.expect(innerHeight).eql(100);
         15 |});
         16 |
         at <anonymous>
      (/builds/myFancyProject/test/e2e/DockerTest.e2e.ts:13:30)
         at fulfilled
      (/builds/myFancyProject/test/e2e/DockerTest.e2e.ts:5:58)
 1/1 failed (8s)

Peringatan:

 Warnings (3):
 --
  Was unable to resize the window due to an error.
  The
  /builds/myFancyProject/node_modules/testcafe-browser-tools/bin/linux/glibc-64/resize
  process failed with the null exit code.
 --

Pengaturan Tes yang Digunakan:

Tes ResizeWindow Testcafe

test('`ResizeWindow` works as expected ', async t => {
  await t.resizeWindow(100, 100);
  const innerWidth = await t.eval(() => window.innerWidth);
  const innerHeight = await t.eval(() => window.innerHeight);
  await t.expect(innerWidth).eql(100);
  await t.expect(innerHeight).eql(100);
});

Mulai di dalam gitlab yml

- xvfb-run --server-num=99 --server-args='-ac -screen 0 1024x768x16' yarn test-e2e-ci

package.json

"test-e2e-ci": "node -r @babel/register ./internals/scripts/CheckBuildsExist.js && cross-env NODE_ENV=test testcafe electron:./ci ./test/e2e/ --screenshots takeOnFails=true",

./ci/.testcafe-electron-rc

{
  "mainWindowUrl": "../app/app.html",
  "appPath": "../app",
  "appArgs": "--no-sandbox"
}

Gambar buruh pelabuhan yang diuji:

circleci/node:latest-browsers

FROM node:lts-stretch

RUN apt-get update \
    && apt-get install -y xvfb \
    libnotify4 \
    libgconf2-4 \
    libnss3 \
    libxtst-dev \
    libc6 \
    libstdc++6 \
    libgcc1 \
    libgtk-3-0 \
    libasound2 \
    libxrender1 \
    libxss1

Jawaban

2 mlosev Aug 24 2020 at 10:35

Anda perlu menginstal dan mengatur fluxboxalat dengan benar. Lihat contoh di file terkait buruh pelabuhan TestCafe:

  • https://github.com/DevExpress/testcafe/blob/master/docker/Dockerfile
  • https://github.com/DevExpress/testcafe/blob/master/docker/testcafe-docker.sh