es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con esta configuración es que hay un error de sintaxis en la sección script del trabajo e2e. 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 error Cannot 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.

Comments are closed.