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