title: Issue when trying to run Webdriver IO (end to end) tests in a Gitlab CI pipeline runner using a docker image
body: <p>This is my first time posting in this plateform so if my request lacks informations let me know so I can provide them.</p>
  <p>I'm trying to run my end to end tests using Webdriver IO, I've been running my tests locally at first but now I need to execute them in a Gitlab CI pipeline using a docker image, and here are some information about the setup:</p>
  <p><strong>Docker image:</strong></p>
  <ul>
  <li>it's an alpinedocker image</li>
  <li>node version: 12.18.3</li>
  <li>npm version:6.14.6</li>
  <li>Java version: openjdk &quot;11.0.8&quot;</li>
  <li>Chromium: 85.0.4183.83</li>
  <li>Mozilla: 80.0.1</li>
  </ul>
  <p><strong>Webdriver IO configuration:</strong></p>
  <ul>
  <li>latest versions of webdriver IO framework, geckodriver, and wdio-geckodriver-service
  Here is my wdio.cong.js file</li>
  </ul>
  <pre><code>const { generate } = require('multiple-cucumber-html-reporter');
  const { removeSync } = require('fs-extra');
  exports.config = {
    runner: 'local',
    maxInstances: 1,
    capabilities: [
      {
        maxInstances: 1,
        browserName: 'firefox',
        acceptInsecureCerts: true,
        'moz:firefoxOptions': {
          args: ['--headless', '--lang=fr-FR', '--disable-dev-shm-usage']
        }
      }
    ],
    specs: ['./features/adminNavigation.feature'],
  
    logLevel: 'info',
  
    bail: 0,
  
    baseUrl: 'http://localhost:3000',
  
    waitforTimeout: 10000000,
  
    connectionRetryTimeout: 120000,
  
    connectionRetryCount: 3,
  
    services: ['geckodriver'],
  
    framework: 'cucumber',
  
    reporters: [
      [
        'cucumberjs-json',
        {
          jsonFolder: './cucumberjs-reports/json',
          language: 'en'
        }
      ]
    ],
  
    cucumberOpts: {
      timeout: 40000,
      requireModule: [
        'tsconfig-paths/register',
        () =&gt; {
          require('ts-node').register({ files: true, project: './tsconfig.json' });
        }
      ],
      require: ['./**/**/*.step.ts']
    },
    onPrepare: function(config, capabilities) {
      removeSync('./cucumberjs-reports');
    },
    onComplete: function(exitCode, config, capabilities, results) {
      generate({
        jsonDir: './cucumberjs-reports/json',
        reportPath: './cucumberjs-reports/report'
      });
    }
  };
  
  
  </code></pre>
  <p>My package.json:</p>
  <pre><code>    &quot;geckodriver&quot;: &quot;^1.20.0&quot;,
      &quot;@wdio/cli&quot;: &quot;^6.4.5&quot;,
      &quot;@wdio/cucumber-framework&quot;: &quot;^6.4.3&quot;,
      &quot;@wdio/local-runner&quot;: &quot;^6.4.5&quot;,
      &quot;@wdio/mocha-framework&quot;: &quot;^6.4.0&quot;,
      &quot;@wdio/selenium-standalone-service&quot;: &quot;^6.4.7&quot;,
      &quot;@wdio/spec-reporter&quot;: &quot;^6.4.0&quot;,
      &quot;@wdio/sync&quot;: &quot;^6.4.5&quot;,
      &quot;chromedriver&quot;: &quot;^85.0.1&quot;,
      &quot;wdio-chromedriver-service&quot;: &quot;^6.0.4&quot;,
      &quot;wdio-cucumberjs-json-reporter&quot;: &quot;^2.0.2&quot;,
      &quot;wdio-geckodriver-service&quot;: &quot;^1.1.0&quot;,
  
  </code></pre>
  <p>And here's the error logs :</p>
  <pre><code>Execution of 1 spec files started at 2020-09-11T13:15:06.515Z
  2062020-09-11T13:15:06.519Z DEBUG @wdio/utils:initialiseServices: initialise service &quot;geckodriver&quot; as NPM package
  2072020-09-11T13:15:06.522Z INFO @wdio/cli:launcher: Run onPrepare hook
  2082020-09-11T13:15:06.525Z INFO @wdio/cli:launcher: Run onWorkerStart hook
  2092020-09-11T13:15:06.535Z INFO @wdio/local-runner: Start worker 0-0 with arg: ./apps/front-e2e-wdio/wdio.ci.conf.js
  210[0-0] 2020-09-11T13:15:07.117Z INFO @wdio/local-runner: Run worker command: run
  211[0-0] 2020-09-11T13:15:07.247Z DEBUG @wdio/local-runner:utils: init remote session
  212[0-0] 2020-09-11T13:15:07.252Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
  213[0-0] RUNNING in firefox - /apps/front-e2e-wdio/features/adminNavigation.feature
  214[0-0] 2020-09-11T13:15:07.749Z DEBUG @wdio/utils:initialiseServices: initialise service &quot;geckodriver&quot; as NPM package
  215[0-0] 2020-09-11T13:15:07.772Z DEBUG @wdio/local-runner:utils: init remote session
  216[0-0] 2020-09-11T13:15:07.774Z INFO webdriverio: Initiate new session using the webdriver protocol
  217[0-0] 2020-09-11T13:15:07.778Z INFO webdriver: [POST] http://localhost:34305/session
  218[0-0] 2020-09-11T13:15:07.778Z INFO webdriver: DATA {
  219 capabilities: {
  220 alwaysMatch: {
  221 browserName: 'firefox',
  222 acceptInsecureCerts: true,
  223 'moz:firefoxOptions': [Object]
  224 },
  225 firstMatch: [ {} ]
  226 },
  227 desiredCapabilities: {
  228 browserName: 'firefox',
  229 acceptInsecureCerts: true,
  230 'moz:firefoxOptions': { args: [Array] }
  231 }
  232}
  233[0-0] 2020-09-11T13:15:10.623Z DEBUG webdriver: request failed due to response error: unknown error
  234[0-0] 2020-09-11T13:15:10.624Z INFO webdriver: Retrying 1/3
  2352020-09-11T13:15:10.624Z INFO webdriver: [POST] http://localhost:34305/session
  2362020-09-11T13:15:10.624Z INFO webdriver: DATA {
  237 capabilities: {
  238 alwaysMatch: {
  239 browserName: 'firefox',
  240 acceptInsecureCerts: true,
  241 'moz:firefoxOptions': [Object]
  242 },
  243 firstMatch: [ {} ]
  244 },
  245 desiredCapabilities: {
  246 browserName: 'firefox',
  247 acceptInsecureCerts: true,
  248 'moz:firefoxOptions': { args: [Array] }
  249 }
  250}
  251[0-0] 2020-09-11T13:15:10.623Z WARN webdriver: Request failed with status 500 due to invalid argument: can't kill an exited process
  252[0-0] 2020-09-11T13:15:13.141Z DEBUG webdriver: request failed due to response error: unknown error
  253[0-0] 2020-09-11T13:15:13.142Z WARN webdriver: Request failed with status 500 due to invalid argument: can't kill an exited process
  254[0-0] 2020-09-11T13:15:13.142Z INFO webdriver: Retrying 2/3
  255[0-0] 2020-09-11T13:15:13.143Z INFO webdriver: [POST] http://localhost:34305/session
  256[0-0] 2020-09-11T13:15:13.143Z INFO webdriver: DATA {
  257 capabilities: {
  258 alwaysMatch: {
  259 browserName: 'firefox',
  260 acceptInsecureCerts: true,
  261 'moz:firefoxOptions': [Object]
  262 },
  263 firstMatch: [ {} ]
  264 },
  265 desiredCapabilities: {
  266 browserName: 'firefox',
  267 acceptInsecureCerts: true,
  268 'moz:firefoxOptions': { args: [Array] }
  269 }
  270}
  271[0-0] 2020-09-11T13:15:15.558Z DEBUG webdriver: request failed due to response error: unknown error
  272[0-0] 2020-09-11T13:15:15.567Z INFO webdriver: Retrying 3/3
  273[0-0] 2020-09-11T13:15:15.567Z INFO webdriver: [POST] http://localhost:34305/session
  274[0-0] 2020-09-11T13:15:15.568Z INFO webdriver: DATA {
  275 capabilities: {
  276 alwaysMatch: {
  277 browserName: 'firefox',
  278 acceptInsecureCerts: true,
  279 'moz:firefoxOptions': [Object]
  280 },
  281 firstMatch: [ {} ]
  282 },
  283 desiredCapabilities: {
  284 browserName: 'firefox',
  285 acceptInsecureCerts: true,
  286 'moz:firefoxOptions': { args: [Array] }
  287 }
  288}
  289[0-0] 2020-09-11T13:15:15.566Z WARN webdriver: Request failed with status 500 due to invalid argument: can't kill an exited process
  290[0-0] 2020-09-11T13:15:17.985Z DEBUG webdriver: request failed due to response error: unknown error
  291[0-0] 2020-09-11T13:15:17.986Z ERROR webdriver: Request failed with status 500 due to unknown error: invalid argument: can't kill an exited process
  2922020-09-11T13:15:17.986Z ERROR webdriver: unknown error: invalid argument: can't kill an exited process
  293 at getErrorFromResponseBody (/builds/node_modules/webdriver/build/utils.js:121:10)
  294 at WebDriverRequest._request (/builds/node_modules/webdriver/build/request.js:149:56)
  295 at processTicksAndRejections (internal/process/task_queues.js:97:5)
  296 at async startWebDriverSession (/builds/node_modules/webdriver/build/utils.js:41:16)
  297 at async Function.newSession (/builds/node_modules/webdriver/build/index.js:44:23)
  298 at async remote (/builds/node_modules/webdriverio/build/index.js:75:20)
  299 at async Runner._startSession (/builds/node_modules/@wdio/runner/build/index.js:206:50)
  300 at async Runner._initSession (/builds/node_modules/@wdio/runner/build/index.js:175:21)
  301 at async Runner.run (/builds/node_modules/@wdio/runner/build/index.js:93:15)
  3022020-09-11T13:15:17.987Z ERROR @wdio/runner: Error: Failed to create session.
  303invalid argument: can't kill an exited process
  304 at startWebDriverSession (/builds/node_modules/webdriver/build/utils.js:45:11)
  305 at processTicksAndRejections (internal/process/task_queues.js:97:5)
  306[0-0] Error: Failed to create session.
  307invalid argument: can't kill an exited process
  3082020-09-11T13:15:18.108Z DEBUG @wdio/local-runner: Runner 0-0 finished with exit code 1
  309[0-0] FAILED in firefox - /apps/front-e2e-wdio/features/adminNavigation.feature
  3102020-09-11T13:15:18.110Z INFO @wdio/cli:launcher: Run onComplete hook
  3112020-09-11T13:15:18.112Z ERROR @wdio/cli:utils: Error in onCompleteHook: Error: There were issues reading JSON-files from './apps/front-e2e-wdio/cucumberjs-reports/json'.
  312 at collectJSONS (/builds/node_modules/multiple-cucumber-html-reporter/lib/collect-jsons.js:16:15)
  313 at generateReport (/builds/node_modules/multiple-cucumber-html-reporter/lib/generate-report.js:69:22)
  314 at Object.onComplete (/builds/apps/front-e2e-wdio/wdio.ci.conf.js:44:5)
  315 at /builds/node_modules/@wdio/cli/build/utils.js:109:13
  316 at Array.map (&lt;anonymous&gt;)
  317 at runOnCompleteHook (/builds/node_modules/@wdio/cli/build/utils.js:107:37)
  318 at Launcher.run (/builds/node_modules/@wdio/cli/build/launcher.js:83:69)
  319 at processTicksAndRejections (internal/process/task_queues.js:97:5)
  320Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:11 
  3212020-09-11T13:15:18.114Z INFO @wdio/local-runner: Shutting down spawned worker
  3222020-09-11T13:15:18.365Z INFO @wdio/local-runner: Waiting for 0 to shut down gracefully
  3232020-09-11T13:15:18.366Z INFO @wdio/local-runner: shutting down
  
  
  </code></pre>
  <p><em>edit</em>
  The commande that i'm using to run my tests is the following : &quot;npx wdio wdio.conf.js&quot;.</p>
  <p>And here's the Docker config file im using:</p>
  <pre><code>FROM alpine:latest
  
  ARG BUILD_DATE
  ARG VCS_REF
  
  USER root
  
  # Install node
  RUN apk add --update nodejs npm
  
  # Installs latest Chromium package.
  RUN echo &quot;http://dl-cdn.alpinelinux.org/alpine/edge/main&quot; &gt; /etc/apk/repositories \
      &amp;&amp; echo &quot;http://dl-cdn.alpinelinux.org/alpine/edge/community&quot; &gt;&gt; /etc/apk/repositories \
      &amp;&amp; echo &quot;http://dl-cdn.alpinelinux.org/alpine/edge/testing&quot; &gt;&gt; /etc/apk/repositories \
      &amp;&amp; echo &quot;http://dl-cdn.alpinelinux.org/alpine/v3.11/main&quot; &gt;&gt; /etc/apk/repositories \
      &amp;&amp; apk upgrade -U -a \
      &amp;&amp; apk add --no-cache \
      libstdc++ \
      chromium \
      harfbuzz \
      nss \
      freetype \
      ttf-freefont \
      wqy-zenhei \
      &amp;&amp; rm -rf /var/cache/* \
      &amp;&amp; mkdir /var/cache/apk
  
  # Add Chrome as a user
  RUN mkdir -p /usr/src/app \
      &amp;&amp; adduser -D chrome \
      &amp;&amp; chown -R chrome:chrome /usr/src/app
  # Run Chrome as non-privileged
  USER chrome
  WORKDIR /usr/src/app
  
  ENV CHROME_BIN=/usr/bin/chromium-browser \
      CHROME_PATH=/usr/lib/chromium/
  
  USER root
  # Install firefox
  RUN apk upgrade --update-cache --available
  RUN apk add xvfb firefox dbus py-pip ttf-dejavu
  
  ENV FIREFOX_BIN=/usr/bin/firefox
  
  # Install bash &amp;&amp; curl
  RUN apk add --no-cache bash
  RUN apk --no-cache add curl
  
  #ADD wait module
  ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.2.1/wait /wait
  RUN chmod +x /wait
  
  # Install Mongo Tools
  RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.9/community' &gt;&gt; /etc/apk/repositories
  RUN apk add mongodb-tools
  
  # Install jdk11
  RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
  
  # Install chromeDriver
  RUN apk add --no-cache chromium-chromedriver
  
  RUN ls
  
  RUN node -v
  RUN npm -v
  RUN java -version
  RUN chromium-browser --version
  RUN firefox --version
  # RUN apt-cache policy chromium | grep Installed | sed -e &quot;s/Installed/Chrome/&quot;
  
  CMD tail -f /dev/null  
  
  </code></pre>