Test
Notre essayons de garder une couverture de code élevée pour Electron. Nous demandons que toutes les pull request non seulement passent tous les tests existants, mais qu'elles ajoutent idéalement de nouveaux tests pour couvrir les changements de code et les nouveaux scénarios. Cela nous assure ainsi que nous intégrons le plus de code possible tout en étant sûr que Electron soit livré avec le moins de bugs possible.
Ce dépôt utilise des règles de qualité de code pour JavaScript et C++ ainsi que des tests unitaires et d'intégrations. Pour en apprendre plus sur le style de code d'Electron, référez-vous au document style de code.
Linting
Pour s'assurer que vos changements sont conformes au style de code d'Electron, exécutez npm run lint, qui exécutera une multitude de vérifications de règles de qualité sur le code de vos changements en fonction des zones du code qu'ils affectent.
Many of these checks are included as precommit hooks, so it's likely your error would be caught at commit time.
Tests unitaires
Si vous n'utilisez pas les build-tools, assurez vous que le nom que vous avez configuré pour votre version locale d'Electron est des valeurs suivantes: Testing, Release, Default, ou que vous avez défini process.env.ELECTRON_OUT_DIR. Sans cette définition, Electron échouera à effectuer certaines étapes de pré-test.
Pour exécuter tous les tests unitaires, exécutez npm run test. Les tests unitaires sont une application Electron (surprise !) qui se trouve dans le dossier spec. Notez qu'elle a son propre package.json et que ses dépendances ne sont donc pas définies dans le package.json à la racine du projet.
The suite is driven by vitest: the vitest CLI runs under Node.js and starts several instances of the spec app, each of which runs one spec file at a time in Electron's main process. Suites that need the machine to themselves (window focus, the clipboard, the screen, global shortcuts) are declared with describe(title, { tags: ['serial'] }, fn) and run one at a time after everything else has finished. Set ELECTRON_SPEC_WORKERS to change how many Electron processes run at once.
To run only some spec files, pass them with --files: npm run test -- --files spec/api-app.spec.ts. To run only tests whose name matches a pattern, run npm run test -- -g=PATTERN, replacing PATTERN with a regex. À titre d'exemple : si vous voulez exécuter uniquement les tests IPC, vous exécuterez npm run test -- -g ipc.
Specs import describe, it, expect and the hooks from vitest and assert with its matchers (expect(x).toBe(y), toEqual, toHaveProperty, ...); chai-style chains (expect(x).to.equal(y)) are rejected by the linter because their property form can silently assert nothing. A few Electron specific behaviours (a macrotask between tests, defer() cleanup, spec/disabled-tests.json) live in spec/vitest/runner.ts.
Smoke Tests de Node.js
Si vous avez apporté des modifications qui pourraient affecter la façon dont Node.js est intégré dans Electron, nous avons un exécuteur de test qui exécute tous les tests de Node.js en utilisant le fork de Node.js personnalisé d'Electron.
Pour exécuter tous les tests Node.js :
$ node script/node-spec-runner.js
Pour exécuter un seul test Node.js :
$ node script/node-spec-runner.js parallel/test-crypto-keygen
où l'argument passé à l'exécuteur est le chemin vers le test dans l'arborescence de fichiers des sources de Node.js.
Tests sur les appareils sous Windows 10
Étapes supplémentaires pour exécuter les tests unitaires :
-
Visual Studio 2019 doit être installé.
-
Les headers de Node doivent être compilés pour votre configuration.
ninja -C out\Testing electron:node_headers -
Le fichier electron.lib doit être copié en tant que node.lib.
cd out\Testingmkdir gen\node_headers\Releasecopy electron.lib gen\node_headers\Release\node.lib
Polices d'écriture manquantes
Certains appareils sous Windows 10 ne sont pas livrés avec la police Meiryo installée, ce qui peut entraîner l'échec d'un test de repli des polices d'écriture. Pour installer Meiryo :
- Appuyez sur la touche Windows et recherchez Gérer les fonctionnalités facultatives.
- Cliquez sur Ajouter une fonctionnalité.
- Sélectionnez Polices japonaises supplémentaires et cliquez sur Installer.
Mesures en pixels
Certains tests s'appuyant sur des mesures précises en pixels peuvent ne pas fonctionner correctement sur des appareils avec les paramètres de l'écran Hi-DPI en raison d'erreurs de précision à virgule flottante. Pour exécuter correctement ces tests , assurez-vous que la mise à l'échelle de votre appareil est réglée sur 100%.
Pour configurer la mise à l'échelle de l'affichage:
- Appuyez sur la touche Windows et recherchez Affichage.
- Sous Mise à l'échelle et disposition, assurez-vous que le paramètre saisi pour votre appareil est de 100%.
Multi-Monitor Tests
Some Electron APIs require testing across multiple displays, such as screen detection, window positioning, and display-related events. For contributors working on these features, the virtualDisplay native addon enables you to create and position virtual displays programmatically, making it possible to test multi-monitor scenarios without any physical hardware.
For detailed information on using virtual displays in your tests, see Multi-Monitor Testing.
Platform support: macOS only