npm est le gestionnaire de paquets qui télécharge Playwright, TypeScript et toutes les autres dépendances de votre projet de tests. node_modules est le dossier où ces paquets résident sur le disque, et il ne doit jamais être committé dans le dépôt Git.
Ce qu'est npm
npm (Node Package Manager) est un outil qui :1. Maintient un registre de paquets JavaScript (plus de 2 millions)
2. Télécharge ces paquets dans votre projet
3. Suit quels paquets votre projet nécessite
Quand quelqu'un écrit du code utile (comme le framework Playwright), il le publie sous forme de paquet sur npm. Tout le monde peut ensuite installer ce paquet au lieu de réécrire le même code. Playwright, TypeScript, ESLint, Faker.js, dotenv : ce sont tous des paquets npm qui alimentent votre setup d'automatisation.
Le fichier package.json
Chaque projet Node.js a un fichier package.json. C'est le descripteur du projet : il indique ce qu'il est, ce dont il a besoin et comment l'exécuter.
Un package.json typique pour un projet Playwright ressemble à ceci :
{
"name": "my-playwright-tests",
"version": "1.0.0",
"scripts": {
"test": "npx playwright test",
"test:headed": "npx playwright test --headed",
"test:ui": "npx playwright test --ui"
},
"devDependencies": {
"@playwright/test": "^1.44.0",
"typescript": "^5.4.5"
}
}name: le nom du projetscripts: les commandes exécutables avecnpm rundevDependencies: paquets nécessaires en développement (outils de test, linters)dependencies: paquets nécessaires en production (non pertinent pour un projet de tests uniquement)
dependencies vs. devDependencies
| | dependencies | devDependencies |
|---|---|---|
| Quand utilisé | En production (exécution de l'app) | En développement seulement (build, tests, lint) |
| Exemples | express, react, axios | playwright, typescript, eslint |
| Flag d'installation | npm install nom-du-paquet | npm install -D nom-du-paquet |
Pour les dépôts d'automatisation QA, presque tout va dans devDependencies. Vous construisez des outils de test, pas une application de production.
Le dossier node_modules
Quand vous lancez npm install, npm :
1. Lit package.json
2. Télécharge tous les paquets listés depuis le registre npm
3. Les place dans node_modules/
4. Installe aussi toutes leurs dépendances (et les dépendances de leurs dépendances...)
C'est pour ça que node_modules peut contenir des milliers de fichiers même pour un projet avec seulement 3 dépendances directes. Playwright, par exemple, embarque des dizaines de paquets dont il dépend en interne.
Vous ne touchez jamais directement les fichiers dans node_modules. Ils sont gérés par npm.
Vous ne committez jamais node_modules dans Git. Le dossier peut peser des centaines de mégaoctets. À la place, vous committez package.json et package-lock.json, et chaque personne qui clone le dépôt lance npm install pour le régénérer.
Vérifiez votre .gitignore :
node_modules/Cette ligne doit s'y trouver. Si elle est absente, ajoutez-la.
package-lock.json
Quand npm installe des paquets, il crée ou met à jour package-lock.json. Ce fichier enregistre les versions exactes de chaque paquet installé, y compris les dépendances transitives.
package.json peut indiquer "playwright": "^1.44.0" (c'est-à-dire 1.44.0 ou toute version compatible plus récente). package-lock.json enregistre la version exacte réellement installée. Cela garantit que toute l'équipe obtient des versions de dépendances identiques.
Committez package-lock.json dans Git. Contrairement à node_modules, ce fichier est petit et déterministe.
Les commandes npm essentielles
# Installer toutes les dépendances listées dans package.json
npm install
# Installer un paquet spécifique et l'ajouter à devDependencies
npm install -D @faker-js/faker
# Installer un paquet spécifique et l'ajouter à dependencies
npm install dotenv
# Supprimer un paquet
npm uninstall @faker-js/faker
# Mettre à jour tous les paquets vers leurs dernières versions compatibles
npm update
# Vérifier les paquets avec des vulnérabilités de sécurité connues
npm audit
# Corriger les vulnérabilités automatiquement (quand c'est possible)
npm audit fix
# Exécuter un script défini dans package.json
npm run test
npm run test:headed
# Lister tous les paquets installés
npm list --depth=0
# Voir la version d'un paquet spécifique
npm list playwrightLa commande npx
npx exécute un paquet npm sans l'installer globalement. Vous le verrez constamment avec Playwright :
# Lancer le test runner Playwright (utilise la version locale dans node_modules)
npx playwright test
# Installer les navigateurs Playwright
npx playwright install
# Ouvrir le mode UI de Playwright
npx playwright test --ui
# Lancer le codegen
npx playwright codegen https://lab.becomeqa.comQuand vous exécutez npx playwright test, npm trouve Playwright dans votre dossier local node_modules/.bin/ et le lance. Cela garantit que vous utilisez la version spécifique du projet, pas une version installée globalement.
Créer un nouveau projet Playwright from scratch
# Créer et accéder à un nouveau répertoire
mkdir my-test-project && cd my-test-project
# Initialiser le projet npm (crée package.json)
npm init -y
# Installer Playwright
npm init playwright@latest
# C'est tout — Playwright s'installe avec ses dépendancesPour ajouter Playwright à un projet existant :
npm install -D @playwright/test
npx playwright installProblèmes courants et solutions
Erreur "Cannot find module"
Error: Cannot find module '@playwright/test'npm install. Vous avez probablement cloné un dépôt sans installer les dépendances.
Navigateurs Playwright obsolètes
Error: Executable doesn't exist at /home/user/.cache/ms-playwright/chromium-XXXnpx playwright install. Les binaires du navigateur ont besoin d'être mis à jour.
Vulnérabilités de sécurité
found 3 vulnerabilities (1 moderate, 2 high)npm audit fix. Vérifiez ce qui est mis à jour. Pour les vulnérabilités non corrigeables, vérifiez si elles concernent des dépendances de développement uniquement (moins risqué pour du code de test).
Conflits dans node_modules après un git pull
Si quelqu'un a mis à jour les dépendances, votre node_modules local peut être obsolète :
rm -rf node_modules
npm installC'est l'option radicale, mais elle fonctionne toujours.
Pourquoi les versions ont ^ et ~
Dans package.json :
"@playwright/test": "^1.44.0"| Symbole | Signification | Exemple |
|---|---|---|
| ^1.44.0 | Compatible avec 1.44.0 (met à jour mineur et patch) | Accepte 1.45.0, 1.50.0 mais pas 2.0.0 |
| ~1.44.0 | Approximativement 1.44.0 (met à jour le patch uniquement) | Accepte 1.44.1, 1.44.9 mais pas 1.45.0 |
| 1.44.0 | Exactement 1.44.0 | Aucune mise à jour |
Pour les projets d'automatisation de tests, ^ (caret) est le standard. Il vous maintient à jour avec les améliorations mineures tout en vous protégeant des changements majeurs.
Ce que doit savoir un ingénieur QA
À connaître :- Ce que fait
npm installet quand le lancer (toujours après avoir cloné, après qu'on a mis à jourpackage.json) - Ce que contient
package.jsonet comment le lire - La différence entre
dependenciesetdevDependencies - Comment fonctionne
npm run test(il lance le scripttestdepackage.json) - Pourquoi
node_modulesn'est pas committé dans Git
C'est suffisant pour configurer des projets, installer des dépendances, lancer des tests et déboguer les problèmes de setup les plus courants.
→ See also: Installer Playwright: Guide d'Installation Étape par Étape (2026) | JavaScript pour les QA Engineers: Le Minimum pour Commencer à Automatiser | TypeScript pour QA: Pourquoi les Types Statiques Améliorent Vos Tests