Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# Dependencies and build output
/node_modules/
/dist/
/coverage/

# Local scratch files and logs
/tmp/
/*.log
/dist/

# Editor and tool settings
/.vscode/
.npmrc
.codex
.env.e2e

# Secrets and local configuration
.env
/tmp/
.npmrc
1 change: 0 additions & 1 deletion docs/config/corporate-proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ Le support du proxy est activé par l'environnement dans les principaux contexte

- En exécution locale, le serveur démarre avec `node --use-env-proxy`.
- Les tests d'intégration propagent `NODE_USE_ENV_PROXY=1` au sous-processus MCP lancé en `stdio`.
- Les tests E2E démarrent les workers Vitest avec `--use-env-proxy`.

Il suffit ensuite de définir les variables d'environnement standard selon votre contexte réseau :

Expand Down
53 changes: 5 additions & 48 deletions docs/dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,14 @@ npm run inspect:mcp:cli # mode CLI

## Tests

Le projet distingue trois niveaux de tests :
Le projet distingue deux niveaux de tests :

- **Unitaires** : pas de réseau, exécutés par défaut.
- **Intégration niveau 1** (`test/integration/level1-protocol`) : appels MCP directs vers les tools, avec de vrais appels réseau vers la Géoplateforme.
- **E2E niveau 2** (`test/integration/level2-agent`) : un agent LangChain branché au serveur MCP local avec un vrai modèle LLM.

Les niveaux 1 et 2 nécessitent un build à jour (`npm run build`) et un accès réseau aux services appelés. Les deux suites s'exécutent séquentiellement pour limiter la charge sur les services externes et éviter de démarrer plusieurs serveurs MCP en parallèle.
Les tests d'intégration nécessitent un build à jour (`npm run build`) et un accès réseau aux services appelés. Ils s'exécutent séquentiellement pour limiter la charge sur les services externes et éviter de démarrer plusieurs serveurs MCP en parallèle.

Les tests de bout en bout, avec un agent et un vrai modèle LLM, sont dans le dépôt [geocontext-test](https://github.com/ignfab/geocontext-test).

### Vue d'ensemble des commandes

Expand All @@ -129,12 +130,10 @@ Les niveaux 1 et 2 nécessitent un build à jour (`npm run build`) et un accès
| `npm test` / `test:unit` | Tests unitaires |
| `npm run test:perf` | Tests chronométrés (`*.perf.test.ts`), un fichier à la fois |
| `npm run test:integration` | Tests d'intégration niveau 1 |
| `npm run test:e2e` | Tests E2E agent niveau 2 |
| `npm run test:coverage` | Tests unitaires avec couverture |
| `npm run bench` | Benchmark du calcul de `intersection_area` |
| `npm run verify:fast` | `typecheck` + `typecheck:test` + `build` + `test:unit` + `test:perf` |
| `npm run verify` | `verify:fast` + `test:integration` |
| `npm run verify:full` | `verify` + `test:e2e` |

### Tests unitaires

Expand All @@ -159,13 +158,6 @@ npm run build
npm run test:integration
```

### Tests E2E agent (niveau 2)

```bash
npm run build
npm run test:e2e
```

### Couverture

```bash
Expand All @@ -177,56 +169,21 @@ npm run test:coverage
```bash
npm run verify:fast # typecheck + build + tests unitaires et chronométrés
npm run verify # verify:fast + tests d'intégration niveau 1
npm run verify:full # verify + tests E2E niveau 2
```

### Variables d'environnement

Communes aux suites d'intégration (niveaux 1 et 2) :
Pour les tests d'intégration :

| Variable | Description |
| ----------------------------------------- | ------------------------------------------------------------------- |
| `GEOCONTEXT_SERVER_PATH` | Chemin vers le point d'entrée du serveur (défaut : `dist/index.js`) |
| `GEOCONTEXT_LOG_LEVEL` | Niveau de log du serveur lancé par les tests |
| `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` | Configuration proxy réseau |

Spécifiques aux tests E2E agent (`test:e2e`) :

| Variable | Description |
| ------------------- | ------------------------------------------------------------------- |
| `MODEL_NAME` | Modèle LangChain à utiliser (défaut : `anthropic:claude-haiku-4-5`) |
| `ANTHROPIC_API_KEY` | Clé API Anthropic |
| `OPENAI_API_KEY` | Clé API OpenAI |
| `GOOGLE_API_KEY` | Clé API Google |
| `MISTRAL_API_KEY` | Clé API Mistral |

La clé API requise dépend du provider indiqué dans `MODEL_NAME`.

### Exemples de lancement des tests E2E

Avec Anthropic :

```bash
export MODEL_NAME=anthropic:claude-haiku-4-5
export ANTHROPIC_API_KEY=...
npm run build
npm run test:e2e
```

Avec Ollama en local :

```bash
export MODEL_NAME=ollama:llama3.1
export OLLAMA_BASE_URL=http://127.0.0.1:11434
npm run build
npm run test:e2e
```

## Dépannage

- Si `test:integration` échoue immédiatement : vérifier que `dist/index.js` existe (`npm run build`).
- Si `test:e2e` est ignoré : vérifier que la clé API attendue par `MODEL_NAME` est définie.
- Si un provider local (Ollama, etc.) est utilisé derrière un proxy : ajouter `NO_PROXY=localhost,127.0.0.1`.

## Commandes utiles

Expand Down
Loading
Loading