1
votes

Erreur CircleCI, vos tests font probablement des requêtes à cette 'baseUrl' et ces tests échoueront si vous ne démarrez pas votre serveur

J'utilise une application Angular 2+ avec des tests d'intégration à l'aide de Cypress.io et CI à l'aide de circleCI.

J'ai supprimé un didacticiel fourni ici pour configurer un Projet angulaire avec circleCI, mais il fallait également ajouter les orbes de cyprès pour exécuter Cypress. Je me suis donc retrouvé avec le script config.yml suivant:

...
- cypress/run:
          requires:
            - cypress/install
            - build
          start: 'npm start'
          wait-on: 'http://localhost:4200'
          context: fireBaseApiKey

Lorsque circleCI démarre, les deux premières tâches du workflow sont réussies (build et cypress / install), mais cypress / run produit l'erreur suivante:

Cypress n'a pas pu vérifier que le serveur défini comme "baseUrl" est en cours d'exécution:

http: // localhost: 4200

Vos tests font probablement des requêtes à cette 'baseUrl' et ces tests échoue si vous ne démarrez pas votre serveur.

Veuillez démarrer ce serveur, puis relancer Cypress.

Je suppose que je n'ai pas démarré le serveur avec la commande npm run build .

J'ai essayé d'ajouter:

- run:
          name: start ng server
          command: ng serve

dans la tâche "build", mais l'erreur était alors:

/ bin / bash: ng: commande introuvable

J'ai essayé de trouver un conteneur docker sur dockerhub qui exécuterait des commandes ng et "angular / ngcontainer" me semblait être un bon candidat car utiliser circleci / node: 6.10-browser comme image de docker par le lien du tutoriel également Je n'ai pas reconnu les commandes ng.

Je suppose que je suis en grande partie hors de ma profondeur ici et que je n'ai pas été en mesure de trouver un exemple de projet Angular qui utilise Cypress et exécute CI sur circleCI. Avoir un tel exemple aiderait probablement beaucoup à donner un sens aux choses. D'ici là, est-ce que quelqu'un a des recommandations sur la façon dont je pourrais exécuter une commande comme ng serve et pensez-vous que cela résoudrait l'erreur de non démarrage de mon serveur?

Mise à jour du 3 février, 2019 19:34:

J'ai ajouté wait-on après avoir examiné l'utilisation de l'orbe de cyprès un peu plus par les conseils d'un ami sur Internet. Ainsi, ma commande mise à jour -cypress / run lit:

version: 2.1
orbs:
  cypress: cypress-io/cypress@1.0.1
jobs:
  build:
    working_directory: ~/project
    docker:
      - image: angular/ngcontainer
    steps:
      - checkout
      - run:
          name: Show current branch
          command: |
            echo ${CIRCLE_BRANCH}
            echo $fireBaseApiKey
      - restore_cache:
          keys:
            - v1-dependencies-{{checksum "package.json"}}
            - v1-dependencies-
      - run:
          name: Install local dependencies
          command: |
            npm install
      - save_cache:
          key: v1-dependencies-{{checksum "package.json"}}
          paths:
            - node_modules
      - run:
          name: Building
          command: npm run build
      - save_cache:
          key: v1-dist-{{ .Environment.CIRCLE_BRANCH}}-{{ .Environment.CIRCLE_SHA1}}
          paths:
            - dist
workflows:
  version: 2.1
  build:
    jobs:
      - build
      - cypress/install:
          requires:
            - build
          build: 'npm run build'
          context: fireBaseApiKey
      - cypress/run:
          requires:
            - cypress/install
            - build
          start: 'npm start'
          context: fireBaseApiKey

Cela semble attendre un ' http: // localhost: 4200 'qui ne se produit jamais.


4 commentaires

avez-vous déjà compris cela? J'ai le même problème mais sur mon pipeline Jenkins


Pas encore. Travailler avec l'un des développeurs de cyprès sur Twitter. Publiera probablement un problème sur github à ce sujet ce week-end.


Ok cool, pourriez-vous s'il vous plaît me taguer whereisjefe et je peux vous aider à fournir des informations de débogage supplémentaires


@ Atticus29 Pourriez-vous relier le problème ici afin que d'autres personnes qui trébuchent sur ce problème puissent suivre?


3 Réponses :


2
votes

Je pense que je peux vous aider avec le problème ng command not found .

Vous devez installer angular cli dans vos dépendances de développement:

npm install --save-dev @angular/cli@latest

Ensuite, après l'exécution de npm install , votre script ng existera afin que vous puissiez ajouter votre étape ng serve pour démarrer votre serveur. p>


1 commentaires

Malheureusement, il est déjà dans mon package.json, mais une très bonne suggestion!



1
votes

Bien que je ne pense pas que cela s'applique à vous, cette question est apparue pour moi lorsque j'ai recherché mon problème sur Google. Donc, au cas où une autre personne aurait un problème similaire, voici comment je l'ai fait fonctionner.

Pour que certains packages NPM fonctionnent dans notre environnement, je devais utiliser notre proxy d'entreprise et le définir via les variables d'environnement HTTP_PROXY et HTTPS_PROXY dans mon pipeline Jenkins. Après un peu de débogage, j'ai remarqué que Cypress essayait de faire quelque chose avec le proxy. Une fois que j'ai défini NO_PROXY = localhost cyprès connecté, succès!


0 commentaires

1
votes

Il y avait en fait quelques problèmes ici:

  1. Il semble que j'avais besoin d'utiliser http-get au lieu de http. Donc: wait-on: 'http-get: // localhost: 4200'
  2. J'avais encore des problèmes avec mes variables d'environnement, qui ont été posées et répondues ici .

Donc, le fichier de configuration final a fini par ressembler à:

export var masterFirebaseConfig = {
    apiKey: "circleCiApiKey",
    authDomain: "dataJitsu.firebaseapp.com",
    databaseURL: "https://datajitsu.firebaseio.com",
    storageBucket: "",
    messagingSenderId: "495992924984"
  };

export var masterStripeConfig = {
  publicApiTestKey: "pk_test_NKyjLSwnMosdX0mIgQaRRHbS",
  secretApiTestKey: "sk_test_6YWZDNhzfMq3UWZwdvcaOwSa",
  publicApiKey: "",
  secretApiKey: ""
};

Avec le fichier api-key.ts référencé dans le sed code> instruction ressemblant à:

version: 2.1
orbs:
  cypress: cypress-io/cypress@1.5.1
jobs:
  build:
    working_directory: ~/project
    docker:
      - image: circleci/node:9.6.1-browsers
    environment:
      circleCiApiKey: fireBaseApiKey
    steps:
      - checkout
      - run:
          name: Show current branch
          command: |
            echo ${CIRCLE_BRANCH}
            ls -larth
            echo $fireBaseApiKey
            cat src/app/api-keys.ts
            sed -i "s/circleCiApiKey/$fireBaseApiKey/g" src/app/api-keys.ts
            cat src/app/api-keys.ts
      - restore_cache:
          keys:
            - v1-dependencies-{{checksum "package.json"}}
            - v1-dependencies-
      - run:
          name: Install local dependencies
          command: |
            npm install
      - save_cache:
          key: v1-dependencies-{{checksum "package.json"}}
          paths:
            - node_modules
      - run:
          name: Building
          command: npm run build
      - save_cache:
          key: v1-dist-{{ .Environment.CIRCLE_BRANCH}}-{{ .Environment.CIRCLE_SHA1}}
          paths:
            - dist
workflows:
  version: 2.1
  build:
    jobs:
      - build
      - cypress/install:
          requires:
            - build
          build: 'npm run build'
      - cypress/run:
          requires:
            - cypress/install
            - build
          start: 'npm start'
          store_artifacts: true
          wait-on: 'http-get://localhost:4200'


0 commentaires