Commit 19ed5fc9 authored by Lionel DURAND's avatar Lionel DURAND
Browse files

Livraison #1 septembre 2022

parents aa6459a7 5baf649d
/**/build
/**/node_modules
/**/cypress/screenshots
/**/cypress/videos
/**/lib
\ No newline at end of file
{
"root": true,
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"plugins": ["@typescript-eslint", "simple-import-sort"],
"env": {
"browser": true
},
"rules": {
"no-prototype-builtins": "off",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_"
}
],
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error"
},
"overrides": [
{
"files": ["rollup.config.js", "web-test-runner.config.js"],
"env": {
"node": true
}
},
{
"files": [
"*_test.ts",
"**/custom_typings/*.ts",
"packages/labs/ssr/src/test/integration/tests/**",
"packages/labs/ssr/src/lib/util/parse5-utils.ts"
],
"rules": {
"@typescript-eslint/no-explicit-any": "off"
}
}
]
}
\ No newline at end of file
# Created by .ignore support plugin (hsz.mobi)
/.idea/
/build/
/_ts-build/
/dist/
/**/node_modules/
*.iml
.DS_Store
/cypress/screenshots/
/cypress/videos/
/src/**/__test__/output/
/.idea/
/**/build/
/**/dist/
/**/node_modules/
/**/cypress/screenshots/
/**/cypress/videos/
/**/src/**/__test__/output/
/**/*.tsbuildinfo
......@@ -17,29 +17,31 @@ cache:
- cache/Cypress
- node_modules
npm-build-dev:
build-dev:
stage: build
except:
- master
image: node:16.14.0-alpine
script:
- npm ci
- npm run build:o2switch-dev
- npm run build -ws --env=dev
artifacts:
paths:
- build/
- apps/crater/build/
- apps/transition-alimentaire/build/
npm-build-prod:
build-prod:
stage: build
only:
- master
image: node:14-alpine
image: node:16.14.0-alpine
script:
- npm ci
- npm run build:o2switch-crater
- npm run build -ws --env=prod
artifacts:
paths:
- build/
- apps/crater/build/
- apps/transition-alimentaire/build/
# this job installs NPM dependencies and Cypress
cypress-install:
......@@ -51,14 +53,14 @@ cypress-install:
# useful to make sure we are not carrying around old versions
- npx cypress cache path
- npx cypress cache list
- npm run cypress:verify
- npm run cypress:info
- npm run cypress:verify -w apps/crater/
- npm run cypress:info -w apps/crater/
cypress-tests:
image: cypress/browsers:node16.14.0-slim-chrome99-ff97
stage: test
script:
- npm run cypress:test:shell-mode:firefox
- npm run cypress:test:shell-mode:firefox -w apps/crater/
artifacts:
when: always
paths:
......@@ -73,7 +75,8 @@ deploy-prod:
- master
script:
- apk --no-cache add lftp ca-certificates openssh
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev build ./crater/app/crater-ui --parallel=10"
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev apps/crater/build ./crater/app/crater-ui --parallel=10"
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev apps/transition-alimentaire/build ./transition-alimentaire/prod --parallel=10"
deploy-dev:
image: alpine
......@@ -82,4 +85,6 @@ deploy-dev:
- develop
script:
- apk --no-cache add lftp ca-certificates openssh
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev build ./crater/dev/crater-ui --parallel=10"
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev apps/crater/build ./crater/dev/crater-ui --parallel=10"
- lftp -c "set ftp:ssl-allow no; open -u $O2S_FTP_USERNAME,$O2S_FTP_PASSWORD $O2S_FTP_HOST; mirror -Rev apps/transition-alimentaire/build ./transition-alimentaire/dev --parallel=10"
# Environnement de build par défaut quand le param --env n'est pas précisé (par ex 'npm run build')
env=dev
\ No newline at end of file
.idea
build
_ts-build
dist
node_modules
*.iml
.DS_Store
cypress/screenshots
cypress/videos
www
\ No newline at end of file
# CRATER UI
Ce repo contient l'application web de CRATer, accessible à cette adresse : https://crater.resiliencealimentaire.org
Ce repo contient les applications web et composants maintenus par l'équipe CRATer. En particulier l'[application web de CRATer](https://crater.resiliencealimentaire.org) et l'application [transition-alimentaire](https://transition-alimentaire.fr)
## A lire avant de contribuer
......@@ -11,51 +11,55 @@ Pour commencer, il faut :
* Disposer d'un compte framagit, si besoin [le créer ici](https://framagit.org/users/sign_up) (attention un délai de 1 à 5 jours peut être nécessaire)
* Voir la [liste des tâches ouvertes à contribution](https://framagit.org/lga/crater-ui/-/boards/18553?label_name[]=Contribution)
* Consulter également les [pratiques de développement et règles de codage du projet](https://framagit.org/lga/crater-ui/-/blob/develop/pratiques-de-developpement.md)
* Et installer un environnement de dév sur votre poste en suivant les instructions ci-dessous, elles sont valables pour linux et mac.
* Et installer un environnement de dév sur votre poste en suivant les instructions ci-dessous, elles sont valables pour linux, mac et windows.
## 1) Installer l'environnement
Pre-requis : installer [nodejs](https://nodejs.org/en/download/)
Il faut installer la version 16.14.0, qui est celle utilisée par les pipelines gitlab (voir gitlabci)
Il faut installer la version [16.14.0](https://nodejs.org/download/release/v16.14.0/), qui est celle utilisée par les pipelines gitlab (voir .gitlab-ci.yml)
Puis :
1. Cloner le dépôt.
2. Configurer l'application : `npm install`
2. Installer les dépendances : `npm install`
3. Installer cypress : `cypress install`
## 2) Lancer l'application en local
## 2) Développer en local
Pour lancer l'application en mode développement (démarrage rapide, sans build ni tests, ni formatage, avec prise en compte à chaud des modifications) : `npm run start`
Les app web sont dans le dossier ./apps
Pour lancer un build avec test et formatage : `npm run build`, et pour tester le build : `npm run serve`
Elles partagent certains modules qui sont dans le dossier ./modules
Remarque :
* Cette configuration utilise l'environnement `dev` par défaut avec l'api disponible à cette adresse https://dev.resiliencealimentaire.org/.
* En utilisant le script `start:localhost` il est possible de lancer l'application en mode développement, en utilisant un instance de crater-api exécutée en local, à cette adresse http://localhost:3000.
* En utilisant les scripts `build:localhost` et `build:o2switch-crater` (puis `serve`) il est possible de construire un build puis de le tester en utilisant respectivement l'api à l'adresse http://localhost:3000 ou l'api de production à l'adresse https://crater.resiliencealimentaire.org/.
* `npm run start:crater` ou `npm run start -w apps/crater/` : lancer l'app crater en mode développement (démarrage rapide, sans build ni tests, ni formatage, avec prise en compte à chaud des modifications)
* `npm run start:transition-alimentaire` ou `npm run start -w apps/transition-alimentaire/` : lancer l'app transition-alimentaire en mode développement
* `npm run build` : build de toutes les apps et modules
* `npm run build:crater:dev` : build de crater et des modules nécessaires (par ex composants/commun), en utilisant l'api [crater de dev](https://dev.resiliencealimentaire.org/crater/api)
* `npm run build:transition-alimentaire:dev` : build de transition-alimentaire et des modules nécessaires (par ex composants/commun), en utilisant l'api [crater de dev](https://dev.resiliencealimentaire.org/crater/api)
* `npm run build:crater:localhost` et `npm run build:transition-alimentaire:localhost` : comme précédemment, mais en utilisant une api [crater sur localhost](http://localhost:3000/crater/api) (instance de crater-api lancée en local)
## 3) Valider l'application (tests cypress)
## 3) Valider l'application avant de pousser une merge request
Pour valider l'ensemble de l'application : `npm run validate`
Cette commande est à lancer avant de pousser le code d'une branche sur le serveur. Elle permet de lancer l'ensemble des tests unitaires, ainsi que les tests cypress
Commande à lancer avant de pousser une branche : `npm run validate` pour valider toutes les apps et modules.
Pour valider une app ou un module ciblé (ici crater) : `npm run validate -w crater`
Pour lancer les tests cypress spécifiquement :
* lancer les tests en mode interactif dans l'app cypress `npm run cypress:test:app-mode`
* lancer les tests dans un shell en ligne de commande `npm run cypress:test:shell-mode`
* vérifie le code et fait certaines corrections automatique : formatage avec prettier, lint avec eslint et lit-analyzer
* build
* passe l'ensemble des tests (TU + tests cypress)
En cas d'échec, pour lancer spécifiquement les tests (exemple sur l'app crater) :
* `npm run build:test -w apps/crater/` pour lancer les tests unitaires
* `npm run cypress:test:app-mode -w apps/crater/` pour lancer les tests cypress en mode interactif (sinon `npm run cypress:test:shell-mode -w apps/crater/` pour lancer dans un shell)
## 4) Livrer sur les environnements dev et crater
L'application est déployée automatiquement sur les 2 environnements de développement (`dev`) et de production (`crater`), via des pipelines gitlab définis dans le fichier [.gitlab-ci.yml](.gitlab-ci.yml)
Les apps sont déployées automatiquement sur les 2 environnements de développement et de production via des pipelines gitlab définis dans le fichier [.gitlab-ci.yml](.gitlab-ci.yml)
L'avancement et le résultat des pipelines sont visible ici https://framagit.org/lga/crater-ui/pipelines
Ces pipelines s'exécutent de manière automatique : Lors de chaque commit sur la branche develop, le code correspondant est poussé sur l'hébergeur o2switch, et après quelques secondes à quelques minutes, les mises à jour sont disponibles à cette adresse http://dev.resiliencealimentaire.org
Ces pipelines s'exécutent de manière automatique : Lors de chaque commit sur la branche develop, le code correspondant est poussé sur l'hébergeur o2switch, et après quelques secondes / minutes, les mises à jour sont disponibles à cette adresse https://dev.resiliencealimentaire.org (crater) et celle-ci https://ta-dev.resiliencealimentaire.org
Même fonctionnement sur la branche master, ou les mises à jour sont livrées sur l'environnement de production : http://crater.resiliencealimentaire.org
Même fonctionnement sur la branche master, ou les mises à jour sont livrées sur les environnement de production : https://crater.resiliencealimentaire.org et https://transition-alimentaire.fr
Rq : La branche master est protégé, il n'est pas possible de commiter directement dessus, il faut passer par une merge request gitlab
This diff is collapsed.
......@@ -6,6 +6,6 @@ context("Test de vérification des couleurs des territoires après un changement
cy.get('c-barre-navigation-echelle-territoriale').find('#REGION').click({ force: true });
cy.get('c-carte').shadow().find('.cmp__carte__id-territoire__R-24').should('have.attr', 'fill', '#769850');
cy.get('c-carte').find('.carte__id-territoire__R-24').should('have.attr', 'fill', '#9f984e');
});
});
context('Test de vérification des couleurs des territoires selon leur note sur la page carte', () => {
const COULEUR_TERRITOIRE_DONNEES_NON_DISPONIBLES = '#d7d7d7';
const COULEUR_TERRITOIRE_NOTE_0 = '#9b0000';
const COULEUR_TERRITOIRE_NOTE_3 = '#d05c2d';
it('Valider couleur des territoires pour pratiques agricoles', () => {
it('Valider couleur des territoires pour agriculteurs & exploitations', () => {
// init
cy.viewport(1500, 1000);
cy.visit('carte.html');
// Permet d'attendre que la carte soit chargée avant de changer d'axe
cy.get('c-carte').shadow().find('.cmp__carte__id-territoire__D-92').should('have.attr', 'fill', COULEUR_TERRITOIRE_NOTE_0);
cy.get('c-carte').find('.carte__id-territoire__D-75').should('have.attr', 'fill', COULEUR_TERRITOIRE_DONNEES_NON_DISPONIBLES);
cy.get('c-carte').find('.carte__id-territoire__D-38').should('have.attr', 'fill', '#d05c2d');
// Changer d'axe
cy.get('#carte__menu-choix-indicateur-dans-panneau-statique').find('label[for=note-pratiques-agricoles]').click({ force: true });
cy.get('#carte__menu-choix-indicateur-dans-panneau-statique')
.find('label[for=evaluation-globale-agriculteurs-exploitations]')
.click({ force: true });
cy.get('c-carte').shadow().find('.cmp__carte__id-territoire__D-75').should('have.attr', 'fill', COULEUR_TERRITOIRE_DONNEES_NON_DISPONIBLES);
cy.get('c-carte').shadow().find('.cmp__carte__id-territoire__D-55').should('have.attr', 'fill', COULEUR_TERRITOIRE_NOTE_3);
cy.get('c-carte').find('.carte__id-territoire__D-38').should('have.attr', 'fill', '#e17b3c');
});
});
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment