Run scenarios in parallel workers on Windows

オープン
#427 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
bash, php, sqlite
領域
ci-cd, testing

調査の方向性

Start with the Windows branch in bin/run-behat-tests, which sets PARALLEL to empty, and with the worker startup, output and exit-code handling in utils/behat-parallel.php. Check how temporary directories and TMPDIR/TEMP are used under Git Bash. Done means the Windows job runs with WP_CLI_TEST_PARALLEL=4 on a draft branch, with results matching the serial run and Behat time reduced. This needs Windows CI access and familiarity with the project's process handling.

索引モデルが issue の本文から書いたものです。

説明

scope:testing

Part of #394. Follow-up to #390.

bin/run-behat-tests turns parallel workers off on Windows (MINGW*|MSYS*|CYGWIN*) PARALLEL="";;), and the Docker mode is unavailable there as well, so the Windows Behat job runs every scenario one after the other. Since the Linux jobs run in 4 parallel workers, the Windows job is now the longest job of most large suites. In the full-matrix runs of 2026-11-02:

Package Longest Linux job macOS job (4 workers) Windows job (serial)
entity-command 9.8 min 23.2 min 53.0 min
extension-command 8.4 min 12.9 min 28.7 min
core-command 5.3 min 4.7 min 11.4 min
media-command 4.9 min 6.9 min 11.0 min
scaffold-command 5.4 min 3.4 min 9.1 min
language-command 4.4 min 3.4 min 8.8 min

The Windows job is continue-on-error, so it does not block a pull request. It still sets how long the Testing workflow takes to finish, though. In entity-command, the job took 53 minutes for 498 scenarios. The macOS job already runs in parallel workers on the runner and went from about 26 to 23 minutes.

The Windows job uses SQLite, so the worker databases are not an obstacle. #405 does not say why Windows was left out. Things to check before turning it on:

  • process handling in utils/behat-parallel.php (starting the workers, collecting their output and exit codes, and signals, see #418) with Git Bash and the Windows PHP build;
  • per-worker temporary directories and TMPDIR, as Windows uses TEMP/TMP, and the runner moves temporary files to the D: drive;
  • run directories are still removed right away on Windows (#403), which may make workers slower than expected;
  • scenarios that use fixed ports or background processes, which already run in the first worker.

Measuring: run the Windows job of entity-command and extension-command with WP_CLI_TEST_PARALLEL=4 on a draft branch, and compare Behat time and results with the serial runs of 2026-11-02. Check the first parallel pass, not only the result after composer behat-rerun.

主要言語
PHP
スター
42
フォーク
28
平均マージ
18時間 52分
マージ済み PR(30日)
27

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

wp-cli/wp-cli-tests のほかの issue

wp-cli/wp-cli-tests の issue をすべて見る

似ている issue

PHP の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。