¿Por qué está fallando el servicio de Cypress?
A continuación se muestra mi pipeline en el que estoy intentando ejecutar pruebas con Cypress en el servicio Nginx (que apunta a la aplicación principal) construido en la etapa “build”. Lo siguiente se basa en el modelo oficial que se encuentra aquí https://gitlab.com/cypress-io/cypress-example-docker-gitlab/-/blob/master/.gitlab-ci.yml:
image: docker:stable
services:
- docker:dind
stages:
- build
- test
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .npm
- cache/Cypress
- node_modules
job:
stage: build
script:
- export REACT_APP_USERS_SERVICE_URL=http://127.0.0.1
- apk add --update --no-cache gcc g++ make python2 python2-dev py-pip python3-dev docker-compose npm
- docker-compose up -d --build
e2e:
image: cypress/included:9.1.1
stage: test
script:
- export CYPRESS_VIDEO=false
- export CYPRESS_baseUrl=http://nginx:80
- npm i randomstring
- $(npm bin)/cypress run -t -v $PWD/e2e -w /e2e -e CYPRESS_VIDEO -e CYPRESS_baseUrl --network testdriven_default
- docker-compose down
Salida de error:
Cypress encontró un error al analizar la configuración de argumentos.
Pasaste: if [ -x /usr/local/bin/bash ]; then
exec /usr/local/bin/bash
elif [ -x /usr/bin/bash ]; then
exec /usr/bin/bash
elif [ -x /bin/bash ]; then
exec /bin/bash
elif [ -x /usr/local/bin/sh ]; then
exec /usr/local/bin/sh
elif [ -x /usr/bin/sh ]; then
exec /usr/bin/sh
elif [ -x /bin/sh ]; then
exec /bin/sh
elif [ -x /busybox/sh ]; then
exec /busybox/sh
else
echo shell not found
exit 1
fi
El error fue: No se pueden leer las propiedades de indefinido (leyendo 'split')
¿Qué está mal en esta configuración?
davy.ai
El problema con esta configuración es que hay un error de sintaxis en la sección
script
del trabajoe2e
. La línea- $(npm bin)/cypress run -t -v $PWD/e2e -w /e2e -e CYPRESS_VIDEO -e CYPRESS_baseUrl --network testdriven_default
contiene un script de bash que se pasa a Cypress como una configuración de argumento. Este script de bash no es válido como una configuración de argumento y está causando que Cypress falle con el mensaje de errorCannot read properties of undefined (reading 'split')
. Para solucionar este problema, el script de bash debe ser movido a un archivo de script de shell separado, que luego puede ser llamado como una configuración de argumento utilizando la opción--config-file
. Alternativamente, los comandos de bash relevantes se pueden incorporar en el archivo.gitlab-ci.yml
utilizando la sintaxis de script adecuada.