本書の前提:
02_回帰テスト版の前提に加え、クラウドサービス (Microsoft Playwright Workspaces / BrowserStack / Sauce Labs / LambdaTest) を全廃し、ローカルの Mac (Apple Silicon) と Windows 11 PC のみで完結させる 運用に最適化したベストプラクティス。底本:
02_回帰テスト版/次世代検証ツール選定案_問3_デスクトップWeb_回帰テスト版.mdの結論を、オールローカル前提に書き直したもの。調査日: 2026-06-08
Mac mini (macOS) と Windows 11 PC の 2 台構成で Playwright
を直接実行し、Safari は macOS 上の safaridriver
経由、Chrome / Edge / Firefox は両 OS のローカル install
で網羅する。クラウドへの月額支出ゼロ、データ流出ゼロ。
| レイヤ | CI/CD 前提版 | 回帰テスト版 | ローカル実機版 |
|---|---|---|---|
| 自動化基盤 | Playwright + MPT (主) | Playwright + MPT (per-minute) | Playwright のみ (Mac mini + Windows 11 PC でローカル実行) |
| macOS Safari 検証 | BrowserStack Automate 経由 | BrowserStack Live | Mac mini 上の Safari + safaridriver (Apple 公式
W3C WebDriver) |
| Chrome / Edge / Firefox | MPT クラウド | MPT クラウド | 両 OS にネイティブ install、Playwright で操作 |
| 視覚検証 | BrowserStack Screenshot Compare | PixelMatch / SSIM | PixelMatch / Playwright
toHaveScreenshot() |
| DRM フォールバック | <video> + 閾値手動 |
<video> + 必ず手動 |
<video> + 実機ローカル目視 |
| アクセシビリティ | axe-core CI 統合 | axe-core 手動 | axe-core 手動 + VoiceOver / ナレーター実機検証 |
| マルチモーダル LLM | 排除 | 排除 | 変更なし (ローカル LLM 補助のみ) |
| データ流出 | クラウド送信あり | 同左 | ゼロ (オンプレ完結) |
safaridriver で W3C 準拠の操作| 機種 | 適合 |
|---|---|
| Mac mini M4 / M4 Pro (推奨) | ✅ デスク常設、低消費電力 |
| Mac Studio M4 Max / M3 Ultra | ✅ 大規模並列 |
| MacBook Pro M4 系 | ⚠️ 携帯性、ポート数注意 |
| Intel Mac | ❌ Safari の挙動が Apple Silicon と異なる場合あり |
Safari のテストは必ず Mac (macOS) 上で実行する。Linux / Windows 上に Safari は存在しない。
| 機種 | 適合 |
|---|---|
| 専用 Windows 11 PC (Mini PC: Intel NUC / Beelink / Minisforum 等) | ✅ 推奨、デスク常設 |
| MacBook + Parallels Desktop で Windows 11 ARM 仮想化 | ⚠️ Windows on ARM、x64 アプリ互換性差あり |
| MacBook + Boot Camp (Intel Mac のみ、Apple Silicon は非対応) | ❌ Apple Silicon Mac では不可 |
| UTM / Lima / VMware Fusion で Windows 11 ARM 仮想化 | ⚠️ Parallels より遅い、ライセンス・x64 互換性に注意 |
推奨: 中古や省スペース PC で Windows 11 Pro 専用機を 1 台用意する (新品で ¥80,000-120,000 程度)。Parallels は Windows 11 ARM のため Edge / Chrome は動くが、Windows 11 x64 固有挙動 (例: Microsoft Store アプリ呼出し、特定 ActiveX 系) は再現できない可能性。
| OS | ブラウザ | install 方法 |
|---|---|---|
| macOS | Safari | OS バンドル (バージョンは macOS に紐づく) |
| macOS | Chrome | 公式 .dmg / brew install --cask google-chrome |
| macOS | Edge | 公式 .pkg / brew install --cask microsoft-edge |
| macOS | Firefox | 公式 .dmg / brew install --cask firefox |
| Windows 11 | Edge | OS バンドル (自動更新) |
| Windows 11 | Chrome | 公式インストーラ / winget install Google.Chrome |
| Windows 11 | Firefox | 公式インストーラ / winget install Mozilla.Firefox |
| Windows 11 | Safari | ❌ 提供なし (Apple は 2012 年に Windows 版 Safari を打ち切り) |
| 品目 | 金額 (税込) |
|---|---|
| Mac mini M4 32 GB / 512 GB | ¥220,000 |
| Windows 11 Mini PC (Intel N100 / Ryzen 5 / 16 GB / 512 GB SSD) | ¥80,000 |
| Windows 11 Pro ライセンス | ¥15,000 (Mini PC 同梱の場合あり) |
| 4K モニター 27“ (DPI / Retina 検証用) | ¥50,000 |
| Apple Studio Display 5K (任意、Retina 検証強化) | ¥220,000 |
| 周辺 (キーボード / マウス / KVM スイッチ) | ¥20,000 |
| 最小構成 (4K モニター 1 枚) | 約 ¥385,000 |
| 拡張構成 (Studio Display 追加) | 約 ¥605,000 |
クラウド (MPT + BrowserStack) 年額 ¥170,000-260,000 と比較し、最小構成で 約 2 年で回収、拡張構成でも 約 3 年で回収。
# Homebrew で基本ツール
brew install node
# ブラウザ (Cask)
brew install --cask google-chrome microsoft-edge firefox
# Xcode は不要 (デスクトップ Web 検証のみ)
# ただし xcode-select --install で CLI Tools のみ入れておくと無難
# Safari は OS バンドル、設定のみ:
# Safari → 環境設定 → 詳細 → "メニューバーに開発メニューを表示" ON
# 開発メニュー → "リモートオートメーション" を有効化
sudo safaridriver --enable # Safari WebDriver の有効化
# Playwright + 補助ツール
npm install -g playwright@^1.50
npx playwright install # bundled Chromium / WebKit / Firefox
# ※ Playwright の bundled WebKit は Safari と等価ではないが、デスクトップでは
# safaridriver 経由でブランド Safari を直接操作するため、bundled WebKit は補助扱い
# Python テストランナー
pip install playwright pytest-playwright opencv-python scikit-image axe-core-python# 1. Safari の開発メニュー有効化 (GUI)
# Safari → 環境設定 → 詳細 → "メニューバーに開発メニューを表示"
# 2. リモートオートメーション有効化 (GUI)
# 開発メニュー → "リモートオートメーションを許可"
# 3. safaridriver の有効化
sudo safaridriver --enable
# 4. 動作確認
safaridriver --version
# Output: Included with Safari 18.x# 管理者 PowerShell で
# Chocolatey や winget で各ブラウザ install
winget install Google.Chrome
winget install Mozilla.Firefox
# Edge は OS バンドル
# Node.js
winget install OpenJS.NodeJS.LTS
# Playwright
npm install -g playwright@^1.50
npx playwright installPlaywright は macOS Safari (ブランド版)
をサポートしないため、Safari は Selenium WebDriver +
safaridriver で操作する。
# Python + Selenium で macOS Safari 自動化 (Mac mini ローカル)
from selenium import webdriver
from selenium.webdriver.safari.options import Options
options = Options()
driver = webdriver.Safari(options=options)
driver.get("https://example.com/")
driver.save_screenshot("safari_macos.png")
driver.quit()または、Playwright で他ブラウザ + Selenium で Safari を併用する 2 系統テストランナー 構成にする。
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ Mac mini M4 │ │ Windows 11 Mini PC │
│ ├─ Safari (safaridriver) │ │ ├─ Edge │
│ ├─ Chrome (Playwright) │ │ ├─ Chrome (Playwright) │
│ ├─ Firefox (Playwright) │ │ ├─ Firefox (Playwright) │
│ ├─ Edge (Playwright) │ │ └─ Test Runner │
│ └─ Test Runner │ │ │
└────────┬─────────────────────┘ └────────┬─────────────────────┘
│ │
└────────── 同一 LAN ────────────────┘
│
▼
┌─────────────────────┐
│ 4K モニター 27" │
│ (KVM 切替で両 PC) │
└─────────────────────┘
| OS | DPI | 検証方法 |
|---|---|---|
| macOS (Retina) | 2x | Mac の標準解像度 |
| macOS + 外部 4K | 1x / 2x (HiDPI 切替) | システム設定 → ディスプレイで切替 |
| Windows 11 | 1x / 1.25x / 1.5x / 2x | 設定 → ディスプレイ → 表示スケール |
| Playwright | 任意 | deviceScaleFactor で論理 DPI 固定 |
実機の DPI 切替テスト はクラウドでは現実的に不可能。本書のローカル実機版だけが網羅できる。
| 領域 | 実装 |
|---|---|
| 通常 DOM | Playwright auto-wait + toHaveScreenshot() |
| Canvas / WebGL | PixelMatch + 領域マスク |
| DRM 領域 | <video> プロパティ監視 + 実機画面の手動目視 |
| DPI 差吸収 | Playwright deviceScaleFactor 1x / 1.5x / 2x
で各々ベースライン保持 |
| アクセシビリティ | @axe-core/playwright をローカル実行、結果を JSON
で保存 |
// Playwright で macOS の DPI 別 visual regression
import { test, expect, devices } from '@playwright/test';
const dpiVariants = [1, 1.5, 2];
for (const dsf of dpiVariants) {
test(`top page at deviceScaleFactor=${dsf}`, async ({ browser }) => {
const context = await browser.newContext({ deviceScaleFactor: dsf });
const page = await context.newPage();
await page.goto('https://example.com/');
await expect(page).toHaveScreenshot(`top-dsf-${dsf}.png`, { maxDiffPixelRatio: 0.01 });
await context.close();
});
}| 観点 | 必須要件 |
|---|---|
| macOS ホスト | Apple Silicon Mac (M2 以降推奨) |
| Windows ホスト | Windows 11 (x64 PC、Parallels は限界あり) |
| Safari 自動化 | sudo safaridriver --enable 必須、Selenium WebDriver
経由 |
| Chrome / Edge / Firefox | 公式 stable 版を直接 install、Playwright で操作 |
| 視覚比較 | PixelMatch / Playwright built-in
toHaveScreenshot() |
| DPI 検証 | 物理モニタの解像度切替 + Playwright
deviceScaleFactor |
| アクセシビリティ | @axe-core/playwright + 実機 VoiceOver /
ナレーター手動確認 |
| データ流出ゼロ | スクリーンショット・ログを外部送信しない |
safaridriver 経由必須| 番号 | 作業 | 担当 | 想定時間 |
|---|---|---|---|
| 1 | Mac mini / Windows 11 PC を起動、Playwright / Selenium / axe-core バージョン確認 | QA | 10 分 |
| 2 | 各 OS のブラウザバージョン確認 (safari --version / Edge
/ Chrome / Firefox) |
QA | 10 分 |
| 3 | safaridriver --enable 状態確認 |
QA | 5 分 |
| 4 | テストスクリプトの最新化 | QA + Dev | 30-60 分 |
| 5 | macOS 側で Safari + Chrome + Firefox + Edge を並列実行 | QA | 30-60 分 |
| 6 | Windows 11 側で Edge + Chrome + Firefox を並列実行 | QA | 30-60 分 |
| 7 | DPI 別実行 (1x / 1.5x / 2x の 3 系統で代表シナリオ) | QA | 30 分 |
| 8 | PixelMatch / toHaveScreenshot()
差分検出された画面の目視確認 |
QA | 1-2 時間 |
| 9 | DRM 領域シナリオの手動目視レビュー (実機画面を直接観察) | QA | 30 分 |
| 10 | axe-core レポートの WCAG 違反確認 | QA + Designer | 1 時間 |
| 11 | VoiceOver (Mac) / ナレーター (Windows) でアクセシビリティ手動確認 | Designer | 30 分 |
| 12 | レポート作成、Issue 起票 | QA | 1 時間 |
| 合計 | 約 6-8 時間 (1 営業日以内) |
| 対立項目 | CI/CD 前提版 / 回帰テスト版の裁定 | ローカル実機版の裁定 |
|---|---|---|
| 自動化基盤 | Playwright + MPT (主) | Playwright のみ (ローカル install)、Safari は Selenium WebDriver |
| Safari 検証 | BrowserStack 経由 | Mac mini + safaridriver 直接 |
| 商用 Visual AI | BrowserStack Screenshot Compare / なし | PixelMatch / Playwright built-in のみ |
| DRM フォールバック | 手動レビュー主体 | 必ず手動目視 (実機画面を直接観察) |
| axe-core 統合 | CI 統合 / 手動 | 手動 + VoiceOver/ナレーター実機確認 |
| マルチモーダル LLM | 排除 | 変更なし、ローカル LLM 補助のみ |
| Windows 検証 | クラウド経由 | 専用 Windows 11 PC で実機 (Parallels は補助) |
safaridriver のセッション安定性:
長時間テストで死ぬ事象の対処、再起動スクリプト整備以下のいずれかが発生した時点で、本書を破棄し回帰テスト版
(02_回帰テスト版) または CI/CD 前提版
(01_CI-CD前提版) への移行を検討する:
| 項目 | 年額 (クラウド版) | 年額 (本書) | 削減効果 |
|---|---|---|---|
| MPT (Playwright Workspaces) | $50-100/月 × 12 = $600-1,200 | ¥0 | ¥90,000-180,000 |
| BrowserStack Live | $39/月 × 12 = $468 | ¥0 | ¥70,000 |
| BrowserStack Screenshot Compare | (含む) | ¥0 | — |
| 年額削減合計 | — | — | ¥160,000-250,000 |
初期投資 ¥385,000-605,000 ÷ 年額削減 = 約 2-3 年で投資回収。3 年目以降は端末更新を除き継続支出ゼロ。
底本
02_回帰テスト版/次世代検証ツール選定案_問3_デスクトップWeb_回帰テスト版.md
の参考文献をすべて引き継ぐ。ローカル実機版固有の追加情報:
@axe-core/playwright npm: https://www.npmjs.com/package/@axe-core/playwright