How to use ‘resizeWindow’ with docker and electron in Testcafe?

I have an issue using resizeWindow from Testcafe inside a docker container while testing an electron app with gitlab.

Note: On local setup (linux) all tests work as expected, but inside the docker container resizeWindow does not seem to work. Other tests inside the container work as well.

Maybe i’m missing any configuration for xvfb or should i use fluxbox?

Any suggestion how to solve this?


Test error with docker:

$ 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)

Warnings:

 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.
 --

Used Test setup:

ResizeWindow Testcafe test

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);
});

Start up inside 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"
}

Tested docker images:

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

Source: Docker Questions