メインコンテンツへ飛ぶ

テスト

私達は 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 デバイス上でテスト​

単体テストを実行するための追加手順:​

  1. Visual Studio 2019 をインストールする必要があります。

  2. Node ヘッダーは構成に合わせてコンパイルする必要があります。

    ninja -C out\Testing electron:node_headers
  3. electron.lib を node.lib としてコピーする必要があります。

    cd out\Testing
    mkdir gen\node_headers\Release
    copy electron.lib gen\node_headers\Release\node.lib

フォントの欠落​

一部の Windows 10 デバイス はメイリオフォントがインストールされていない状態で出荷されるため、フォントフォールバックテストが失敗する可能性があります。メイリオをインストールするには以下のようにします。

  1. Windows キーを押して オプション機能の管理 と検索します。
  2. 機能の追加 をクリックします。
  3. 日本語追加フォント を選択して インストール をクリックします。

ピクセル測定​

正確なピクセル測定値に依存するようなテストは、浮動小数点精度の誤差のために Hi-DPI 画面設定のデバイスでは正しく動作しない場合があります。これらのテストを正常に実行するには、そのデバイスが倍率 100% に設定されていることを確認してください。

ディスプレイ倍率を設定するには、

  1. Windows キーを押して ディスプレイの設定 と検索します。
  2. スケールとレイアウト で、そのデバイスが 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