This is my first time posting in this plateform so if my request lacks informations let me know so I can provide them.
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:
Docker image:
- it's an alpinedocker image
- node version: 12.18.3
- npm version:6.14.6
- Java version: openjdk "11.0.8"
- Chromium: 85.0.4183.83
- Mozilla: 80.0.1
Webdriver IO configuration:
- latest versions of webdriver IO framework, geckodriver, and wdio-geckodriver-service Here is my wdio.cong.js file
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',
() => {
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'
});
}
};
My package.json:
"geckodriver": "^1.20.0",
"@wdio/cli": "^6.4.5",
"@wdio/cucumber-framework": "^6.4.3",
"@wdio/local-runner": "^6.4.5",
"@wdio/mocha-framework": "^6.4.0",
"@wdio/selenium-standalone-service": "^6.4.7",
"@wdio/spec-reporter": "^6.4.0",
"@wdio/sync": "^6.4.5",
"chromedriver": "^85.0.1",
"wdio-chromedriver-service": "^6.0.4",
"wdio-cucumberjs-json-reporter": "^2.0.2",
"wdio-geckodriver-service": "^1.1.0",
And here's the error logs :
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 "geckodriver" 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 "geckodriver" 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 (<anonymous>)
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
edit The commande that i'm using to run my tests is the following : "npx wdio wdio.conf.js".
And here's the Docker config file im using:
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 "http://dl-cdn.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" >> /etc/apk/repositories \
&& apk upgrade -U -a \
&& apk add --no-cache \
libstdc++ \
chromium \
harfbuzz \
nss \
freetype \
ttf-freefont \
wqy-zenhei \
&& rm -rf /var/cache/* \
&& mkdir /var/cache/apk
# Add Chrome as a user
RUN mkdir -p /usr/src/app \
&& adduser -D chrome \
&& 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 && 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' >> /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 "s/Installed/Chrome/"
CMD tail -f /dev/null