テスト
私達は Electron のコード網羅率を維持することを目指しています。すべてのプルリクエストは、既存のすべてのテストに合格するだけでなく、変更されたコードと新しいシナリオをカバーする新しいテストを追加することを推奨します。できるだけ多くのコードパスと Electron のユースケースを確保することで、より少ないバグでアプリを出荷することができます。
このリポジトリには、JavaScript と C++ の両方に対する lint ルール、同様に対応するユニットテストと統合テストが付属しています。 Electron のコーディングスタイルの詳細については、コーディングスタイル ドキュメントを参照してください。
Lint
変更した内容が Electron のコーディングスタイルに準拠していることを確認するために、npm run lint を実行してください。これは、コードのどの部分を操作したかによって、さまざまな lint チェックを変更に対して実行します。
Many of these checks are included as precommit hooks, so it's likely your error would be caught at commit time.
単体テスト
build-tools を使用していない場合は、Electron のローカルビルド用コンフィグ名を確認してください。これは、Testing、Release、Default、設定した process.env.ELECTRON_OUT_DIR のいずれかです。これらをセットしていないと、Electron はテスト前の手順を実行できないことがあります。
すべてのユニットテストを実行するには、npm run test を実行します。ユニットテストは spec フォルダにある Electron アプリ (オドロキ!) です。その package.json もあり、その依存関係はトップレベルの package.json には定義されていないことに注意してください。
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. 例として、IPC テストのみを実行したい場合は、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.
Node.js スモークテスト
Node.js を Electron に組み込む方法に影響を与えるような変更を行ったときのために、Electron のカスタムフォークである Node.js を使用した、Node.js から全てのテストを実行するテストランナーを用意しています。
すべての Node.js テストは以下で実行できます。
$ node script/node-spec-runner.js
単体の Node.js テストは以下で実行できます。
$ node script/node-spec-runner.js parallel/test-crypto-keygen
ここで、ランナーに渡す引数は、Node.js ソースツリー内のテストへのパスです。
Windows 10 デバイス上でテスト
単体テストを実行するための追加手順:
-
Visual Studio 2019 をインストールする必要があります。
-
Node ヘッダーは構成に合わせてコンパイルする必要があります。
ninja -C out\Testing electron:node_headers -
electron.lib を node.lib としてコピーする必要があります。
cd out\Testingmkdir gen\node_headers\Releasecopy electron.lib gen\node_headers\Release\node.lib
フォントの欠落
一部の Windows 10 デバイス はメイリオフォントがインストールされていない状態で出荷されるため、フォントフォールバックテストが失敗する可能性があります。メイリオをインストールするには以下のようにします。
- Windows キーを押して オプション機能の管理 と検索します。
- 機能の追加 をクリックします。
- 日本語追加フォント を選択して インストール をクリックします。
ピクセル測定
正確なピクセル測定値に依存するようなテストは、浮動小数点精度の誤差のために Hi-DPI 画面設定のデバイスでは正しく動作しない場合があります。これらのテストを正常に実行するには、そのデバイスが倍率 100% に設定されていることを確認してください。
ディスプレイ倍率を設定するには、
- Windows キーを押して ディスプレイの設定 と検索します。
- スケールとレイアウト で、そのデバイスが 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