Search code examples
seleniumdockernightwatch.js

Docker command won't work unless I open an interactive bash terminal


I'm using Docker to running automated browser testing using nightwatch.js

When I open an interactive terminal it works fine, e.g.

docker run -it --rm username/image-name /bin/bash

that gives me a bash prompt and I run:

xvfb-run node nightwatch.js

and everything works fine.

But when I run:

docker run --rm username/image-name xvfb-run node nightwatch.js

It just hangs.

What's the difference between opening a bash terminal and manually running the test command, and just running the test command directly? Surely they should both work?


Solution

  • Ok so I still don't know what is causing this issue, but I have a workaround that works quite well:

    Run bash as a daemon:

    CONTAINERID=$(docker run -it -d username/image-name /bin/bash)
    

    Then use docker exec:

    docker exec $CONTAINERID xvfb-run node nightwatch.js
    

    Of course you will need to do some tidying up afterwards:

    docker stop $CONTAINERID
    docker rm $CONTAINERID