Repository navigation
Releases: meta-taro/git-qa
Release list
開発版(dev-cb56603)
開発版です。壊れていることがあります。
いまの develop を建てたものです。名乗りは dev-cb56603 で、
アプリの準備の画面に出ます。
「新しい版が出ています」は出ません(開発版なので急かしません)。
- Windows だけ置いています(macOS は手元から動かしてください)
- 署名していません。「WindowsによってPCが保護されました」が出ます
- 何が動くかは
pnpm doctorで測れます。その出力をそのまま Issue へ貼ってください
配った版が要るときは、リリース一覧の v0.2.0-beta.* を使ってください。
v0.2.0-beta.20
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは AUTO_PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | x64(Intel・AMD)と ARM64 の 2 つがあります。.msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.20 で入ったもの
iPhone / iPad を押せるようになりました(WebDriverAgent を使う形)。
- 端末に WebDriverAgent を入れて起こし、その URL を
GIT_QA_IOS_WDAに渡すと、押す・打つ・なぞる・アプリを起動する・Enter / Home キーができます - WebDriverAgent の署名と端末への導入は、人の作業です(Apple の開発者アカウントが要ります)。手順は
docs/ios-press.mdにあります pnpm doctorに「iPhone を押す口」を足しました。口が生きているかを確かめられます- **Mac の Xcode が、端末の iOS に対応している必要があります。**対応していない iOS の端末には入れられません
実機(iOS 17.5.1)で、検証シートを無人で通しました。押す・画面を読む・判定まで、人の手を使わずに流れています。
**USB で映す道具が無くても、WebDriverAgent の口だけで動きます。**映像も画面の絵も口から取ります。
映す道具は macOS でしか建たないので、ほかの OS から iPhone を見るための形です(Windows ではまだ確かめていません)。
そのほか
- **iPhone / iPad の映像が、アプリの窓に映っていませんでした。**1 枚ずつの区切りを付けずに送っていたためです
- **USB で iPhone を映すとき、端末が見えないことがありました。**前のプロセスが端末を手放した直後は 10 秒以上見えなくなるので、見えるまで起こし直します
- まっさらな clone で
pnpm appを走らせると、配布物に入れるもの(git-qa-win.exeなど)が無くて止まっていました。起動の前に、足りないものを建てます
v0.2.0-beta.19 で入ったもの
**Windows の ARM64 版を出しました。**Snapdragon などの ARM の Windows で、そのまま入れられます。
| 配布物 | 向け |
|---|---|
git-qa_0.2.0_x64_en-US.msi / x64-setup.exe |
Windows(Intel・AMD。x64 は AMD64 と同じもの) |
git-qa_0.2.0_arm64_en-US.msi / arm64-setup.exe |
Windows(ARM64) |
git-qa_0.2.0_aarch64.dmg |
macOS(Apple Silicon) |
配布ページも、x64 と ARM64 の入口を分けました。
v0.2.0-beta.18 で入ったもの
**人が押していないのに、人の判定が付くことがありました(macOS)。**この版で塞ぎました(#34)。
AI が打った文字が、判定のキーとして拾われていました
macOS の「入力する」「キーを押す」は、そのとき手前にある窓へキーを送っていました。
判定待ちで見ている git-qa の窓が手前にあると、AI が打った文字の中の a が「判定できない」を押したのと同じになり、
走り終えたケースの判定として、人の名前で残ることがありました。
- AI が操作している間(と、その直後)に届いた判定は、受け付けません(止めるボタンだけは受け付けます)
- **キーを送る前に、相手のアプリを前面に出して確かめます。**出せなければ送らずに止まります
beta.17 以前で「入力する」「キーを押す」を含むシートを流した証跡は、人が置いた判定か確かめてから使ってください。
そのほか
- アプリを止めたら、裏で動く実行器も必ず終わります(止め方によっては残り、一晩動き続けていた)
- 画面収録の許可が無いときは、そう出して止まります(配布版を入れ替えると外れることがあります・#33)
- 判定待ちの間に、映像のために窓を取り直す回数を減らしました(#34)
v0.2.0-beta.17 で入ったもの
Windows のデスクトップ検証で、表のセルを選んで日付を打つところまで、無人で通るようになりました。
**そして、途中で検証の相手のファイルを壊していた穴を塞ぎました。**どちらも試験導入の方の実測から(#42)。
検証の相手のファイルを、書き換えていました(Windows)
「2025-01-01」セルをクリックする が、裏のタブのセルやエディタの文字を押し、
続く Enter がエディタに入って、元のファイルが書き換わって保存されました。
- 画面に出ていない要素は、読みも押しもしません
- 種類を書いたときは、名前が完全に一致するものだけを押します。近いものしか無ければ、押さずに止まります
Windows で、人と同じように押します
- 押す=本物のクリックになりました(前は要素に「押された」と伝えるだけで、表のセルが選べなかった)。
押すたびに相手の窓が一瞬前面に出て、カーソルが動いて戻ります。
押す点の一番上が相手の窓でなければ、クリックせずに今までの押し方にします 「開く」ボタンをクリックする—— 種類を書けます(ボタン/リンク/メニュー/タブ/チェックボックス/セル。ウェブでも)「2026/09/03」セルをダブルクリックする—— ダブルクリック(Windows と Chrome)「20260903」と入力する—— 欄を指さずに書くと、いま焦点のある欄へ 1 文字ずつ打ちます。
日付欄の「年は 4 桁で止まる」のような、1 キーごとの制限を確かめられます「Enter」キーを押す—— 括弧つきでもキーとして読みますアプリを起動する—— 窓が出ていれば、そのまま通ります(前は Windows では 1 行目で止まっていた)
何をどう押したかが、証跡に残ります(Windows)
「開く」(Button)を本物のクリックで押した(560, 390)。同じ名前が 2 つ(Button / Window)。いちばん小さいものを採った
Enter を送った(焦点: Group「2025-01-01」)
焦点の欄(Spinner「年」)へ 1 文字ずつ打った。打ったあとの値: 2026。焦点は Spinner「日」へ移った(値: 03)
**「変わらないこと」を確かめる検証でも、絵を拡大せずに読めます。**パスワード欄の値は書きません。
判定待ちで置いていると、60 秒ごとに映像が切れていました(#33)
画面が止まって新しい絵が来ない間に、映像が 60 秒ごとに切れて、0.5 秒で繋ぎ直していました
(Load failed が 1 分ごとに溜まっていた)。絵が来ない間も、映像を止めないようにしました。
映像が離れて戻ったかは、証跡に残り、pnpm check:run で読めます。
映像: 走っている間、離れていない
pnpm check:run が、AI の判定を「人が置いた」と数えていました
AI が FAIL / BLOCKED にした行まで、「人が見て置いた判定」に数えていました。人の判定の欄で数えるように直しました。
そのほか
- Windows の道具が 30 秒返らなければ、止めて理由を出します(前の実行の道具が残ると、黙って止まり続けていた)
v0.2.0-beta.16 で入ったもの
**製品は正常なのに落ちていた 2 件を直しました。**どちらも試験導入の方からの実測です。
遷移を挟む行が、必ず落ちていました(# 待つ:)
ログイン → 遷移、のような行が FAIL になっていました。
絵を見ると入力も押下も成功していて、まだ遷移前の画面でした。
落ちたのはアプリではなく、待ち切る前に見切ったからです。
期待結果を待つ長さは、既定で 2 秒です。開いて読むだけのページなら足りますが、
押すとサーバを 1 往復する行(認証 → リダイレクト、採番してから遷移、
サーバが解決を書き戻すまで数秒)では足りません。
# 待つ: 8s
- 書き方は
8s/8秒/8(単位なしは秒)/8000ms。上限 120 秒 - 読めない書き方は、走らせる前に止まります(黙って既定に落としません。
「8 秒待つつもりで 2 秒だった」が、いちばん気づけないので)
**CLI の引数にはしていません。**実行のたびに変わる値がシートの外にあると、
証跡を読んだ人が「この FAIL は待ち不足か、製品の問題か」を判断できません。
シートに書けば、証跡に残った sha256 から後で復元できます。
押していないのに「成功」になっていました
同じ文字がカードの見出し(押せない)と送信ボタン(押せる)の 2 箇所にある画面で、
**見出しを押していました。**押しても何も起きないのに、手順は成功として記録されていました。
押せるものを先に選びます。
| 押せる & 押せる状態 | 押します |
押せる & 押せない状態(disabled など) |
**押しません。**理由を出して止まります |
| 押せるものが無い(文字だけ) | 今までどおり押します |
Android も同じでした(TextView が Button より先に出ていると、そちらを押していた)。
そちらも直っています。
「見つからない」と「見つかったが押せない状態」を分けました。
混ぜると、シートの書き方が悪いのか、画面がその状態なのかが読んだ人に分かりません。
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」ま...
v0.2.0-beta.19
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは AUTO_PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | x64(Intel・AMD)と ARM64 の 2 つがあります。.msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.19 で入ったもの
**Windows の ARM64 版を出しました。**Snapdragon などの ARM の Windows で、そのまま入れられます。
| 配布物 | 向け |
|---|---|
git-qa_0.2.0_x64_en-US.msi / x64-setup.exe |
Windows(Intel・AMD。x64 は AMD64 と同じもの) |
git-qa_0.2.0_arm64_en-US.msi / arm64-setup.exe |
Windows(ARM64) |
git-qa_0.2.0_aarch64.dmg |
macOS(Apple Silicon) |
配布ページも、x64 と ARM64 の入口を分けました。
v0.2.0-beta.18 で入ったもの
**人が押していないのに、人の判定が付くことがありました(macOS)。**この版で塞ぎました(#34)。
AI が打った文字が、判定のキーとして拾われていました
macOS の「入力する」「キーを押す」は、そのとき手前にある窓へキーを送っていました。
判定待ちで見ている git-qa の窓が手前にあると、AI が打った文字の中の a が「判定できない」を押したのと同じになり、
走り終えたケースの判定として、人の名前で残ることがありました。
- AI が操作している間(と、その直後)に届いた判定は、受け付けません(止めるボタンだけは受け付けます)
- **キーを送る前に、相手のアプリを前面に出して確かめます。**出せなければ送らずに止まります
beta.17 以前で「入力する」「キーを押す」を含むシートを流した証跡は、人が置いた判定か確かめてから使ってください。
そのほか
- アプリを止めたら、裏で動く実行器も必ず終わります(止め方によっては残り、一晩動き続けていた)
- 画面収録の許可が無いときは、そう出して止まります(配布版を入れ替えると外れることがあります・#33)
- 判定待ちの間に、映像のために窓を取り直す回数を減らしました(#34)
v0.2.0-beta.17 で入ったもの
Windows のデスクトップ検証で、表のセルを選んで日付を打つところまで、無人で通るようになりました。
**そして、途中で検証の相手のファイルを壊していた穴を塞ぎました。**どちらも試験導入の方の実測から(#42)。
検証の相手のファイルを、書き換えていました(Windows)
「2025-01-01」セルをクリックする が、裏のタブのセルやエディタの文字を押し、
続く Enter がエディタに入って、元のファイルが書き換わって保存されました。
- 画面に出ていない要素は、読みも押しもしません
- 種類を書いたときは、名前が完全に一致するものだけを押します。近いものしか無ければ、押さずに止まります
Windows で、人と同じように押します
- 押す=本物のクリックになりました(前は要素に「押された」と伝えるだけで、表のセルが選べなかった)。
押すたびに相手の窓が一瞬前面に出て、カーソルが動いて戻ります。
押す点の一番上が相手の窓でなければ、クリックせずに今までの押し方にします 「開く」ボタンをクリックする—— 種類を書けます(ボタン/リンク/メニュー/タブ/チェックボックス/セル。ウェブでも)「2026/09/03」セルをダブルクリックする—— ダブルクリック(Windows と Chrome)「20260903」と入力する—— 欄を指さずに書くと、いま焦点のある欄へ 1 文字ずつ打ちます。
日付欄の「年は 4 桁で止まる」のような、1 キーごとの制限を確かめられます「Enter」キーを押す—— 括弧つきでもキーとして読みますアプリを起動する—— 窓が出ていれば、そのまま通ります(前は Windows では 1 行目で止まっていた)
何をどう押したかが、証跡に残ります(Windows)
「開く」(Button)を本物のクリックで押した(560, 390)。同じ名前が 2 つ(Button / Window)。いちばん小さいものを採った
Enter を送った(焦点: Group「2025-01-01」)
焦点の欄(Spinner「年」)へ 1 文字ずつ打った。打ったあとの値: 2026。焦点は Spinner「日」へ移った(値: 03)
**「変わらないこと」を確かめる検証でも、絵を拡大せずに読めます。**パスワード欄の値は書きません。
判定待ちで置いていると、60 秒ごとに映像が切れていました(#33)
画面が止まって新しい絵が来ない間に、映像が 60 秒ごとに切れて、0.5 秒で繋ぎ直していました
(Load failed が 1 分ごとに溜まっていた)。絵が来ない間も、映像を止めないようにしました。
映像が離れて戻ったかは、証跡に残り、pnpm check:run で読めます。
映像: 走っている間、離れていない
pnpm check:run が、AI の判定を「人が置いた」と数えていました
AI が FAIL / BLOCKED にした行まで、「人が見て置いた判定」に数えていました。人の判定の欄で数えるように直しました。
そのほか
- Windows の道具が 30 秒返らなければ、止めて理由を出します(前の実行の道具が残ると、黙って止まり続けていた)
v0.2.0-beta.16 で入ったもの
**製品は正常なのに落ちていた 2 件を直しました。**どちらも試験導入の方からの実測です。
遷移を挟む行が、必ず落ちていました(# 待つ:)
ログイン → 遷移、のような行が FAIL になっていました。
絵を見ると入力も押下も成功していて、まだ遷移前の画面でした。
落ちたのはアプリではなく、待ち切る前に見切ったからです。
期待結果を待つ長さは、既定で 2 秒です。開いて読むだけのページなら足りますが、
押すとサーバを 1 往復する行(認証 → リダイレクト、採番してから遷移、
サーバが解決を書き戻すまで数秒)では足りません。
# 待つ: 8s
- 書き方は
8s/8秒/8(単位なしは秒)/8000ms。上限 120 秒 - 読めない書き方は、走らせる前に止まります(黙って既定に落としません。
「8 秒待つつもりで 2 秒だった」が、いちばん気づけないので)
**CLI の引数にはしていません。**実行のたびに変わる値がシートの外にあると、
証跡を読んだ人が「この FAIL は待ち不足か、製品の問題か」を判断できません。
シートに書けば、証跡に残った sha256 から後で復元できます。
押していないのに「成功」になっていました
同じ文字がカードの見出し(押せない)と送信ボタン(押せる)の 2 箇所にある画面で、
**見出しを押していました。**押しても何も起きないのに、手順は成功として記録されていました。
押せるものを先に選びます。
| 押せる & 押せる状態 | 押します |
押せる & 押せない状態(disabled など) |
**押しません。**理由を出して止まります |
| 押せるものが無い(文字だけ) | 今までどおり押します |
Android も同じでした(TextView が Button より先に出ていると、そちらを押していた)。
そちらも直っています。
「見つからない」と「見つかったが押せない状態」を分けました。
混ぜると、シートの書き方が悪いのか、画面がその状態なのかが読んだ人に分かりません。
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、...
v0.2.0-beta.18
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは AUTO_PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.18 で入ったもの
**人が押していないのに、人の判定が付くことがありました(macOS)。**この版で塞ぎました(#34)。
AI が打った文字が、判定のキーとして拾われていました
macOS の「入力する」「キーを押す」は、そのとき手前にある窓へキーを送っていました。
判定待ちで見ている git-qa の窓が手前にあると、AI が打った文字の中の a が「判定できない」を押したのと同じになり、
走り終えたケースの判定として、人の名前で残ることがありました。
- AI が操作している間(と、その直後)に届いた判定は、受け付けません(止めるボタンだけは受け付けます)
- **キーを送る前に、相手のアプリを前面に出して確かめます。**出せなければ送らずに止まります
beta.17 以前で「入力する」「キーを押す」を含むシートを流した証跡は、人が置いた判定か確かめてから使ってください。
そのほか
- アプリを止めたら、裏で動く実行器も必ず終わります(止め方によっては残り、一晩動き続けていた)
- 画面収録の許可が無いときは、そう出して止まります(配布版を入れ替えると外れることがあります・#33)
- 判定待ちの間に、映像のために窓を取り直す回数を減らしました(#34)
v0.2.0-beta.17 で入ったもの
Windows のデスクトップ検証で、表のセルを選んで日付を打つところまで、無人で通るようになりました。
**そして、途中で検証の相手のファイルを壊していた穴を塞ぎました。**どちらも試験導入の方の実測から(#42)。
検証の相手のファイルを、書き換えていました(Windows)
「2025-01-01」セルをクリックする が、裏のタブのセルやエディタの文字を押し、
続く Enter がエディタに入って、元のファイルが書き換わって保存されました。
- 画面に出ていない要素は、読みも押しもしません
- 種類を書いたときは、名前が完全に一致するものだけを押します。近いものしか無ければ、押さずに止まります
Windows で、人と同じように押します
- 押す=本物のクリックになりました(前は要素に「押された」と伝えるだけで、表のセルが選べなかった)。
押すたびに相手の窓が一瞬前面に出て、カーソルが動いて戻ります。
押す点の一番上が相手の窓でなければ、クリックせずに今までの押し方にします 「開く」ボタンをクリックする—— 種類を書けます(ボタン/リンク/メニュー/タブ/チェックボックス/セル。ウェブでも)「2026/09/03」セルをダブルクリックする—— ダブルクリック(Windows と Chrome)「20260903」と入力する—— 欄を指さずに書くと、いま焦点のある欄へ 1 文字ずつ打ちます。
日付欄の「年は 4 桁で止まる」のような、1 キーごとの制限を確かめられます「Enter」キーを押す—— 括弧つきでもキーとして読みますアプリを起動する—— 窓が出ていれば、そのまま通ります(前は Windows では 1 行目で止まっていた)
何をどう押したかが、証跡に残ります(Windows)
「開く」(Button)を本物のクリックで押した(560, 390)。同じ名前が 2 つ(Button / Window)。いちばん小さいものを採った
Enter を送った(焦点: Group「2025-01-01」)
焦点の欄(Spinner「年」)へ 1 文字ずつ打った。打ったあとの値: 2026。焦点は Spinner「日」へ移った(値: 03)
**「変わらないこと」を確かめる検証でも、絵を拡大せずに読めます。**パスワード欄の値は書きません。
判定待ちで置いていると、60 秒ごとに映像が切れていました(#33)
画面が止まって新しい絵が来ない間に、映像が 60 秒ごとに切れて、0.5 秒で繋ぎ直していました
(Load failed が 1 分ごとに溜まっていた)。絵が来ない間も、映像を止めないようにしました。
映像が離れて戻ったかは、証跡に残り、pnpm check:run で読めます。
映像: 走っている間、離れていない
pnpm check:run が、AI の判定を「人が置いた」と数えていました
AI が FAIL / BLOCKED にした行まで、「人が見て置いた判定」に数えていました。人の判定の欄で数えるように直しました。
そのほか
- Windows の道具が 30 秒返らなければ、止めて理由を出します(前の実行の道具が残ると、黙って止まり続けていた)
v0.2.0-beta.16 で入ったもの
**製品は正常なのに落ちていた 2 件を直しました。**どちらも試験導入の方からの実測です。
遷移を挟む行が、必ず落ちていました(# 待つ:)
ログイン → 遷移、のような行が FAIL になっていました。
絵を見ると入力も押下も成功していて、まだ遷移前の画面でした。
落ちたのはアプリではなく、待ち切る前に見切ったからです。
期待結果を待つ長さは、既定で 2 秒です。開いて読むだけのページなら足りますが、
押すとサーバを 1 往復する行(認証 → リダイレクト、採番してから遷移、
サーバが解決を書き戻すまで数秒)では足りません。
# 待つ: 8s
- 書き方は
8s/8秒/8(単位なしは秒)/8000ms。上限 120 秒 - 読めない書き方は、走らせる前に止まります(黙って既定に落としません。
「8 秒待つつもりで 2 秒だった」が、いちばん気づけないので)
**CLI の引数にはしていません。**実行のたびに変わる値がシートの外にあると、
証跡を読んだ人が「この FAIL は待ち不足か、製品の問題か」を判断できません。
シートに書けば、証跡に残った sha256 から後で復元できます。
押していないのに「成功」になっていました
同じ文字がカードの見出し(押せない)と送信ボタン(押せる)の 2 箇所にある画面で、
**見出しを押していました。**押しても何も起きないのに、手順は成功として記録されていました。
押せるものを先に選びます。
| 押せる & 押せる状態 | 押します |
押せる & 押せない状態(disabled など) |
**押しません。**理由を出して止まります |
| 押せるものが無い(文字だけ) | 今までどおり押します |
Android も同じでした(TextView が Button より先に出ていると、そちらを押していた)。
そちらも直っています。
「見つからない」と「見つかったが押せない状態」を分けました。
混ぜると、シートの書き方が悪いのか、画面がその状態なのかが読んだ人に分かりません。
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ ...v0.2.0-beta.17
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは AUTO_PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.17 で入ったもの
Windows のデスクトップ検証で、表のセルを選んで日付を打つところまで、無人で通るようになりました。
**そして、途中で検証の相手のファイルを壊していた穴を塞ぎました。**どちらも試験導入の方の実測から(#42)。
検証の相手のファイルを、書き換えていました(Windows)
「2025-01-01」セルをクリックする が、裏のタブのセルやエディタの文字を押し、
続く Enter がエディタに入って、元のファイルが書き換わって保存されました。
- 画面に出ていない要素は、読みも押しもしません
- 種類を書いたときは、名前が完全に一致するものだけを押します。近いものしか無ければ、押さずに止まります
Windows で、人と同じように押します
- 押す=本物のクリックになりました(前は要素に「押された」と伝えるだけで、表のセルが選べなかった)。
押すたびに相手の窓が一瞬前面に出て、カーソルが動いて戻ります。
押す点の一番上が相手の窓でなければ、クリックせずに今までの押し方にします 「開く」ボタンをクリックする—— 種類を書けます(ボタン/リンク/メニュー/タブ/チェックボックス/セル。ウェブでも)「2026/09/03」セルをダブルクリックする—— ダブルクリック(Windows と Chrome)「20260903」と入力する—— 欄を指さずに書くと、いま焦点のある欄へ 1 文字ずつ打ちます。
日付欄の「年は 4 桁で止まる」のような、1 キーごとの制限を確かめられます「Enter」キーを押す—— 括弧つきでもキーとして読みますアプリを起動する—— 窓が出ていれば、そのまま通ります(前は Windows では 1 行目で止まっていた)
何をどう押したかが、証跡に残ります(Windows)
「開く」(Button)を本物のクリックで押した(560, 390)。同じ名前が 2 つ(Button / Window)。いちばん小さいものを採った
Enter を送った(焦点: Group「2025-01-01」)
焦点の欄(Spinner「年」)へ 1 文字ずつ打った。打ったあとの値: 2026。焦点は Spinner「日」へ移った(値: 03)
**「変わらないこと」を確かめる検証でも、絵を拡大せずに読めます。**パスワード欄の値は書きません。
判定待ちで置いていると、60 秒ごとに映像が切れていました(#33)
画面が止まって新しい絵が来ない間に、映像が 60 秒ごとに切れて、0.5 秒で繋ぎ直していました
(Load failed が 1 分ごとに溜まっていた)。絵が来ない間も、映像を止めないようにしました。
映像が離れて戻ったかは、証跡に残り、pnpm check:run で読めます。
映像: 走っている間、離れていない
pnpm check:run が、AI の判定を「人が置いた」と数えていました
AI が FAIL / BLOCKED にした行まで、「人が見て置いた判定」に数えていました。人の判定の欄で数えるように直しました。
そのほか
- Windows の道具が 30 秒返らなければ、止めて理由を出します(前の実行の道具が残ると、黙って止まり続けていた)
v0.2.0-beta.16 で入ったもの
**製品は正常なのに落ちていた 2 件を直しました。**どちらも試験導入の方からの実測です。
遷移を挟む行が、必ず落ちていました(# 待つ:)
ログイン → 遷移、のような行が FAIL になっていました。
絵を見ると入力も押下も成功していて、まだ遷移前の画面でした。
落ちたのはアプリではなく、待ち切る前に見切ったからです。
期待結果を待つ長さは、既定で 2 秒です。開いて読むだけのページなら足りますが、
押すとサーバを 1 往復する行(認証 → リダイレクト、採番してから遷移、
サーバが解決を書き戻すまで数秒)では足りません。
# 待つ: 8s
- 書き方は
8s/8秒/8(単位なしは秒)/8000ms。上限 120 秒 - 読めない書き方は、走らせる前に止まります(黙って既定に落としません。
「8 秒待つつもりで 2 秒だった」が、いちばん気づけないので)
**CLI の引数にはしていません。**実行のたびに変わる値がシートの外にあると、
証跡を読んだ人が「この FAIL は待ち不足か、製品の問題か」を判断できません。
シートに書けば、証跡に残った sha256 から後で復元できます。
押していないのに「成功」になっていました
同じ文字がカードの見出し(押せない)と送信ボタン(押せる)の 2 箇所にある画面で、
**見出しを押していました。**押しても何も起きないのに、手順は成功として記録されていました。
押せるものを先に選びます。
| 押せる & 押せる状態 | 押します |
押せる & 押せない状態(disabled など) |
**押しません。**理由を出して止まります |
| 押せるものが無い(文字だけ) | 今までどおり押します |
Android も同じでした(TextView が Button より先に出ていると、そちらを押していた)。
そちらも直っています。
「見つからない」と「見つかったが押せない状態」を分けました。
混ぜると、シートの書き方が悪いのか、画面がその状態なのかが読んだ人に分かりません。
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、**終了コードで朝に開くべきも...
v0.2.0-beta.16
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.16 で入ったもの
**製品は正常なのに落ちていた 2 件を直しました。**どちらも試験導入の方からの実測です。
遷移を挟む行が、必ず落ちていました(# 待つ:)
ログイン → 遷移、のような行が FAIL になっていました。
絵を見ると入力も押下も成功していて、まだ遷移前の画面でした。
落ちたのはアプリではなく、待ち切る前に見切ったからです。
期待結果を待つ長さは、既定で 2 秒です。開いて読むだけのページなら足りますが、
押すとサーバを 1 往復する行(認証 → リダイレクト、採番してから遷移、
サーバが解決を書き戻すまで数秒)では足りません。
# 待つ: 8s
- 書き方は
8s/8秒/8(単位なしは秒)/8000ms。上限 120 秒 - 読めない書き方は、走らせる前に止まります(黙って既定に落としません。
「8 秒待つつもりで 2 秒だった」が、いちばん気づけないので)
**CLI の引数にはしていません。**実行のたびに変わる値がシートの外にあると、
証跡を読んだ人が「この FAIL は待ち不足か、製品の問題か」を判断できません。
シートに書けば、証跡に残った sha256 から後で復元できます。
押していないのに「成功」になっていました
同じ文字がカードの見出し(押せない)と送信ボタン(押せる)の 2 箇所にある画面で、
**見出しを押していました。**押しても何も起きないのに、手順は成功として記録されていました。
押せるものを先に選びます。
| 押せる & 押せる状態 | 押します |
押せる & 押せない状態(disabled など) |
**押しません。**理由を出して止まります |
| 押せるものが無い(文字だけ) | 今までどおり押します |
Android も同じでした(TextView が Button より先に出ていると、そちらを押していた)。
そちらも直っています。
「見つからない」と「見つかったが押せない状態」を分けました。
混ぜると、シートの書き方が悪いのか、画面がその状態なのかが読んだ人に分かりません。
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、終了コードで朝に開くべきものが在るかが分かります - シートに
# 行き先:を書けます。# 対象:にowner/repo@branchのような
「何を検証したか」を書く運用のシートが、そのまま渡せます - 選択中のケースの太字をやめました(日本語が潰れて読めなくなっていました)
- Windows で入力欄の中身が読めます(パスワード欄は読みません)
- 文書が実装と食い違っていた所を直しました(Windows が「ありません」になっていた 等)
v0.2.0-beta.6 で入ったもの
**判定を置く人に、手順と期待結果が渡っていませんでした。**この版から出ます。
- **判定の欄に、シートの中身が出ます。**見出し → 手順 → 期待結果 → AI の判定、の順。
AI の但し書きは畳んであります(開けば読めます) - **列名は決め打ちしていません。**シートに足した列(「なぜ見るのか」等)も、
その名前のまま、書いた値のまま出ます - **検証用のブラウザが残らなくなりました。**実行を止めたときに、その場で片付けます
(こちらで 30 個溜めて気づきました。人が普段使っているブラウザには触りません)
署名する人が、何を確かめているのか画面から読めない。
そうなると置かれる VERIFIED は、「AI がそう言っているから」に近づきます。
見えない画面で押す合格(beta.2 で直した)に続いて、読めない画面で押す合格を塞いだ版です。
v0.2.0-beta.5 で入ったもの
**画面から始めると、ライブ映像が出ていませんでした。**この版で直っています。
- 映像の種類を受け取り損ねていた —— 相手は 1 枚ずつの絵なのに、画面は h264 の
復号器を作り、そこへ流し込んでいた。例外も出ず、記録にも出ず、ただ真っ白になる - CLI から始めたときは出ていたので、画面から始めた人だけが踏んでいた
- 届いているのに 1 枚も描けていないときは、そう言うようにした(黙って白くしない)
見えるものが広くなりました(拡大まわり)
- **ケース一覧と判定パネルを畳める。**畳むと映像がその幅を受け取る
(実測: 表示倍率 60% → 81%)。拡大より効きます —— 補間ではなく、本物の画素が増えるので 1で「相手の画素と 1 対 1」。0(枠に合わせる)とは別の狙い- 1 対 1 を超えたら、そう言う(「ここから先は引き伸ばしです。細部は増えません」)
- 窓を縮めても、どの欄も下が切れない(流れるようにした)
- 拡大したときに、映像が枠からはみ出して説明文を覆っていたのを直した
- 窓の大きさを変えると、矢印が指した所からずれていたのを直した
v0.2.0-beta.4 で入ったもの
+ で拡大したときに、3 つ同時に崩れていたのを直しました(beta.3 で入った不具合です)。
- 映像が枠からはみ出して、下の説明文の上に重なっていた
- 中身の無い帯が出ていた
- 矢印が的を外していた(報告された実測で 424px ずれ、何も無い所を指していた)
拡大は「見えない画面で判定させない」ために入れた機能なので、
押した結果が見えなくなるのは、元の問題に戻ることでした。
本物の描画で測った結果(枠 639x598...
v0.2.0-beta.15
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.15 で入ったもの
「# 行き先:」が、半分しか効いていませんでした。
# 対象: <owner>/<repo>@develop
# 行き先: http://localhost:3000/
こう書いたシートで、証跡には行き先が正しく残るのに、1 件目の「ページを開く」で止まっていました。
無人で流す道(--no-ui)だけが行き先を見ていて、人が見ている道は「対象」を直に読んでいました。
v0.2.0-beta.6 で行き先を入れたときの、こちらの入れ忘れです。両方そろえました。
止まったときの理由も直しました。どの見出しを見たのかが出ます
(前は「対象」しか出ておらず、行き先を書いた人の視界に、自分の書いたものが入りませんでした)。
普段使いのブラウザの置き場所で、20 秒待たなくなりました
GIT_QA_PROFILE に普段使いの Chrome の置き場所を渡すと、
これまでは 20 秒待ったあと、原因と無関係な行を添えて落ちていました。
Failed to open named pipe server process ... ← Chrome の更新機能が出している別件
Chrome 136 以降、そこに対してはデバッグの口が開きません(ログイン済みプロファイルからの
Cookie 窃取への対策で、git-qa では回避できません)。起こす前に止めて、そう言います。
[web] 普段使いのブラウザの置き場所は使えない。Chrome 136 以降、ここに対しては
デバッグの口が開かない(ブラウザ側の仕様・git-qa では回避できない)。
専用の置き場を作り、そこへ人が手で一度ログインしてから GIT_QA_PROFILE に渡す
**GIT_QA_PROFILE_DIRECTORY でも抜けられません。**専用の置き場を 1 つ作ってお使いください。
Windows でのウェブ検証が、初めて実測されました
Node 24 / Chrome 153 / WebView2 は Edge 同梱のままで通りました(報告者の実測)。
初回の Rust ビルドは 54.83 秒、1420 番の競合はありませんでした。
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、終了コードで朝に開くべきものが在るかが分かります - シートに
# 行き先:を書けます。# 対象:にowner/repo@branchのような
「何を検証したか」を書く運用のシートが、そのまま渡せます - 選択中のケースの太字をやめました(日本語が潰れて読めなくなっていました)
- Windows で入力欄の中身が読めます(パスワード欄は読みません)
- 文書が実装と食い違っていた所を直しました(Windows が「ありません」になっていた 等)
v0.2.0-beta.6 で入ったもの
**判定を置く人に、手順と期待結果が渡っていませんでした。**この版から出ます。
- **判定の欄に、シートの中身が出ます。**見出し → 手順 → 期待結果 → AI の判定、の順。
AI の但し書きは畳んであります(開けば読めます) - **列名は決め打ちしていません。**シートに足した列(「なぜ見るのか」等)も、
その名前のまま、書いた値のまま出ます - **検証用のブラウザが残らなくなりました。**実行を止めたときに、その場で片付けます
(こちらで 30 個溜めて気づきました。人が普段使っているブラウザには触りません)
署名する人が、何を確かめているのか画面から読めない。
そうなると置かれる VERIFIED は、「AI がそう言っているから」に近づきます。
見えない画面で押す合格(beta.2 で直した)に続いて、読めない画面で押す合格を塞いだ版です。
v0.2.0-beta.5 で入ったもの
**画面から始めると、ライブ映像が出ていませんでした。**この版で直っています。
- 映像の種類を受け取り損ねていた —— 相手は 1 枚ずつの絵なのに、画面は h264 の
復号器を作り、そこへ流し込んでいた。例外も出ず、記録にも出ず、ただ真っ白になる - CLI から始めたときは出ていたので、画面から始めた人だけが踏んでいた
- 届いているのに 1 枚も描けていないときは、そう言うようにした(黙って白くしない)
見えるものが広くなりました(拡大まわり)
- **ケース一覧と判定パネルを畳める。**畳むと映像がその幅を受け取る
(実測: 表示倍率 60% → 81%)。拡大より効きます —— 補間ではなく、本物の画素が増えるので 1で「相手の画素と 1 対 1」。0(枠に合わせる)とは別の狙い- 1 対 1 を超えたら、そう言う(「ここから先は引き伸ばしです。細部は増えません」)
- 窓を縮めても、どの欄も下が切れない(流れるようにした)
- 拡大したときに、映像が枠からはみ出して説明文を覆っていたのを直した
- 窓の大きさを変えると、矢印が指した所からずれていたのを直した
v0.2.0-beta.4 で入ったもの
+ で拡大したときに、3 つ同時に崩れていたのを直しました(beta.3 で入った不具合です)。
- 映像が枠からはみ出して、下の説明文の上に重なっていた
- 中身の無い帯が出ていた
- 矢印が的を外していた(報告された実測で 424px ずれ、何も無い所を指していた)
拡大は「見えない画面で判定させない」ために入れた機能なので、
押した結果が見えなくなるのは、元の問題に戻ることでした。
本物の描画で測った結果(枠 639x598・相手の窓 1280x800):
| 倍率 | 絵が枠を覆う | 説明文 | 矢印と的のずれ |
|---|---|---|---|
| 1 | 余白あり(正常) | 読める | 41px |
| 1.5 / 2 / 4 | 覆う | 読める | 41 / 42 / 41px |
ずれが倍率で変わらない=矢印が絵の同じ場所に付いている、ということです。
v0.2.0-beta.3 で入ったもの
- デスクトップの画面読みが、実測で 2 倍以上速くなった(macOS・実物 2 つ)。
部品を読む所が 1702 / 3016 ms → 130 / 130 ms、画面を 1 回読むのが 3400 ms → 1500 ms。
見える部品は減っていません —— 1 件ずつ突き合わせて確かめ、
前の道が取りこぼしていた部品まで見えるようになりました(実物で 34→47 件・52→73 件) - 窓の大きさを変えると、矢印が指した所からずれていたのを直した
- 窓を縮めると、判定キーの説明が下から消えていたのを直した(判定の欄が流れます)。
↑↓(前後のケースを見る)が丸ごと消えていました ——
「走ったケースなら、戻って置き直せる」はこの画面で初めて知る機能なので、
幅の狭い機械の人だけが、知らないままになっていました - Windows でキーを押せるようになった(
Enter/Ctrl+Enterなど)。
ここだけ、相手の窓が一瞬前面に出ます(Windows にキーを投げ込む口が無いため。黙ってはやりません) - Windows で文字を打つ・回す(
type/scroll)ができるようになった - 高 DPI(拡大表示 125% / 150%)で、証跡の絵が切り取られていたのを直した。
150% では本文がまるごと白の絵が残り、しかも普通のスクリーンショットに見えていました
(押す場所のほうは、ずれていませんでした)
v0.2.0-beta.2 で入ったもの
- ライブ映像を拡大できるようにした(
+−0と押しボタン)。
**寄る先は AI が指した場所。**映像は枠の約 59% に縮んでいて、
相手の 12〜13px の文字...
v0.2.0-beta.14
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.14 で入ったもの
ログイン済みのプロファイルを、名前で選べるようになりました。
1 つの置き場所の中に、プロファイルは何個も入ります(ご報告いただいた機械では 19 個)。
これまでは渡しても Default が使われるので、目的のものを選べませんでした。
GIT_QA_PROFILE="$HOME/qa-chrome" \
GIT_QA_PROFILE_DIRECTORY="Profile 3" \
pnpm run:sheet:web sheets/x.tsv普段使いのブラウザの置き場所を指すと、そう言います
[git-qa] 普段使いのブラウザの置き場所にあるプロファイルを使った(その人の私物を見ている)
止めはしません。専用に用意したプロファイルが、普段使いの置き場所の中に居ることが
あるためです。黙って使わないようにしてあります。
証跡にも残ります。
"target": { "profile": "personal" }fresh(毎回まっさら)/ provided(用意されたもの)/ personal(その人の私物)。
「その権限の人には見えた」でしかないのか、私物の環境を触ったのか —— 同じ結果でも意味が違うので、
読む人が取り違えないためです。
普段使いのブラウザが起きている間は、そもそも起動できません。
置き場所はブラウザにロックされます。人が作業している最中には使えない、という歯止めです。
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、終了コードで朝に開くべきものが在るかが分かります - シートに
# 行き先:を書けます。# 対象:にowner/repo@branchのような
「何を検証したか」を書く運用のシートが、そのまま渡せます - 選択中のケースの太字をやめました(日本語が潰れて読めなくなっていました)
- Windows で入力欄の中身が読めます(パスワード欄は読みません)
- 文書が実装と食い違っていた所を直しました(Windows が「ありません」になっていた 等)
v0.2.0-beta.6 で入ったもの
**判定を置く人に、手順と期待結果が渡っていませんでした。**この版から出ます。
- **判定の欄に、シートの中身が出ます。**見出し → 手順 → 期待結果 → AI の判定、の順。
AI の但し書きは畳んであります(開けば読めます) - **列名は決め打ちしていません。**シートに足した列(「なぜ見るのか」等)も、
その名前のまま、書いた値のまま出ます - **検証用のブラウザが残らなくなりました。**実行を止めたときに、その場で片付けます
(こちらで 30 個溜めて気づきました。人が普段使っているブラウザには触りません)
署名する人が、何を確かめているのか画面から読めない。
そうなると置かれる VERIFIED は、「AI がそう言っているから」に近づきます。
見えない画面で押す合格(beta.2 で直した)に続いて、読めない画面で押す合格を塞いだ版です。
v0.2.0-beta.5 で入ったもの
**画面から始めると、ライブ映像が出ていませんでした。**この版で直っています。
- 映像の種類を受け取り損ねていた —— 相手は 1 枚ずつの絵なのに、画面は h264 の
復号器を作り、そこへ流し込んでいた。例外も出ず、記録にも出ず、ただ真っ白になる - CLI から始めたときは出ていたので、画面から始めた人だけが踏んでいた
- 届いているのに 1 枚も描けていないときは、そう言うようにした(黙って白くしない)
見えるものが広くなりました(拡大まわり)
- **ケース一覧と判定パネルを畳める。**畳むと映像がその幅を受け取る
(実測: 表示倍率 60% → 81%)。拡大より効きます —— 補間ではなく、本物の画素が増えるので 1で「相手の画素と 1 対 1」。0(枠に合わせる)とは別の狙い- 1 対 1 を超えたら、そう言う(「ここから先は引き伸ばしです。細部は増えません」)
- 窓を縮めても、どの欄も下が切れない(流れるようにした)
- 拡大したときに、映像が枠からはみ出して説明文を覆っていたのを直した
- 窓の大きさを変えると、矢印が指した所からずれていたのを直した
v0.2.0-beta.4 で入ったもの
+ で拡大したときに、3 つ同時に崩れていたのを直しました(beta.3 で入った不具合です)。
- 映像が枠からはみ出して、下の説明文の上に重なっていた
- 中身の無い帯が出ていた
- 矢印が的を外していた(報告された実測で 424px ずれ、何も無い所を指していた)
拡大は「見えない画面で判定させない」ために入れた機能なので、
押した結果が見えなくなるのは、元の問題に戻ることでした。
本物の描画で測った結果(枠 639x598・相手の窓 1280x800):
| 倍率 | 絵が枠を覆う | 説明文 | 矢印と的のずれ |
|---|---|---|---|
| 1 | 余白あり(正常) | 読める | 41px |
| 1.5 / 2 / 4 | 覆う | 読める | 41 / 42 / 41px |
ずれが倍率で変わらない=矢印が絵の同じ場所に付いている、ということです。
v0.2.0-beta.3 で入ったもの
- デスクトップの画面読みが、実測で 2 倍以上速くなった(macOS・実物 2 つ)。
部品を読む所が 1702 / 3016 ms → 130 / 130 ms、画面を 1 回読むのが 3400 ms → 1500 ms。
見える部品は減っていません —— 1 件ずつ突き合わせて確かめ、
前の道が取りこぼしていた部品まで見えるようになりました(実物で 34→47 件・52→73 件) - 窓の大きさを変えると、矢印が指した所からずれていたのを直した
- 窓を縮めると、判定キーの説明が下から消えていたのを直した(判定の欄が流れます)。
↑↓(前後のケースを見る)が丸ごと消えていました ——
「走ったケースなら、戻って置き直せる」はこの画面で初めて知る機能なので、
幅の狭い機械の人だけが、知らないままになっていました - Windows でキーを押せるようになった(
Enter/Ctrl+Enterなど)。
ここだけ、相手の窓が一瞬前面に出ます(Windows にキーを投げ込む口が無いため。黙ってはやりません) - Windows で文字を打つ・回す(
type/scroll)ができるようになった - 高 DPI(拡大表示 125% / 150%)で、証跡の絵が切り取られていたのを直した。
150% では本文がまるごと白の絵が残り、しかも普通のスクリーンショットに見えていました
(押す場所のほうは、ずれていませんでした)
v0.2.0-beta.2 で入ったもの
- ライブ映像を拡大できるようにした(
+−0と押しボタン)。
**寄る先は AI が指した場所。**映像は枠の約 59% に縮んでいて、
相手の 12〜13px の文字が 7px 前後になっていた ——
見えない画面で押す「合格」は、AI の判定を追認しただけになる - シート実行の CLI が Windows で使えなかったのを直した
(pnpm run:sheet:desktop。アプリからの入口は通っていたが、CLI だけ macOS 用を呼んでいた) - 押す所を、窓の中に閉じた(Windows)。重なった別の窓の要素を掴むことがあった
v0.2.0-beta.1 で入ったもの
- 画面読みが速くなった(実物で 11.6 秒 → 7.1 秒)
- WebView を使うアプリの部品が、ちゃんと見えるようになった(ボタンが 2.6 倍)
- 動いているものに
FAILが付かなくなった(出るまで読み直す) - 1 本走らせたあと、そのまま次を走らせられる
- 止めたときに、開いた窓も片付く
- キーボードの手順(
Enter キーを押す/Ctrl+Enter キーを押す) - Windows のデスクトップアプリ検証(窓を探す・撮る・文字を読む・押す)
いま出来ること
- 鑑賞モード —— 人は見ているだけ、AI が最後まで走る。
Escで止まる - 試験 1 本を 1 つのフォルダにまとめる(
pnpm ws:init)。
検証シート・証跡・画面・動画が揃うので、フォルダごと git で管理できます - 続きから —— 途中で止めた検証に足す。昨日置いた判定を置き直しません
- 証跡はケースごとに
screen.webp(判定時の画面)とscreen.webm(AI の操作)
正直に書いておくこと
- Windows のデスクトップ検証には、まだ穴があります。
- **入力欄の中身が読めません。**打ち込むことはできますが、
「入れた値が入っているか」を確かめる検証は、まだ人の目が要ります - **録画がありません。**画面(
screen.webp)は 1 件ごとに残ります - キーを押すときだけ、相手の窓が一瞬前面に出ます
- **入力欄の中身が読めません。**打ち込むことはできますが、
- Windows でウェブ検証を走らせた実績がまだありません(コードは同じものが走ります)
- **自動更新はありません。**新しい版は配布ページから落とし直してく...
v0.2.0-beta.13
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.13 で入ったもの
この版から、git-qa が自分の版を名乗ります。
この git-qa は v0.2.0-beta.13 です ← 準備の画面の下に出ます
これまでは、beta.3 も beta.12 も「0.2.0」でした。
どれを使っているか本人にも分からず、不具合の報告に版が書けませんでした。
「直したはずのものが直っていない」という話が、そこで噛み合わなくなっていました。
不具合を教えてくださるときは、この文字をそのまま貼ってください。
新しい版が出ていたら、同じ所に出ます
新しい版が出ています(v0.2.0-beta.14)— 配布ページを開く
**勝手に入れ替えることはしません。**出ていることを言うだけで、入れるかは人が決めます。
押すと配布ページが開きます。
- 繋がらない機械では何も出ません(検証はそのまま続けられます)
- 手元で建てたものは、そもそも聞きに行きません
証跡にも、判定を出した道具の版が残ります
"runner": { "name": "git-qa", "version": "v0.2.0-beta.13" }「誰が・いつ・何を見て判定したか」は残るのに、それを出した道具だけが残っていませんでした。
「その判定は、直る前の版で出たものだ」と後から言えるようにするためです。
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、終了コードで朝に開くべきものが在るかが分かります - シートに
# 行き先:を書けます。# 対象:にowner/repo@branchのような
「何を検証したか」を書く運用のシートが、そのまま渡せます - 選択中のケースの太字をやめました(日本語が潰れて読めなくなっていました)
- Windows で入力欄の中身が読めます(パスワード欄は読みません)
- 文書が実装と食い違っていた所を直しました(Windows が「ありません」になっていた 等)
v0.2.0-beta.6 で入ったもの
**判定を置く人に、手順と期待結果が渡っていませんでした。**この版から出ます。
- **判定の欄に、シートの中身が出ます。**見出し → 手順 → 期待結果 → AI の判定、の順。
AI の但し書きは畳んであります(開けば読めます) - **列名は決め打ちしていません。**シートに足した列(「なぜ見るのか」等)も、
その名前のまま、書いた値のまま出ます - **検証用のブラウザが残らなくなりました。**実行を止めたときに、その場で片付けます
(こちらで 30 個溜めて気づきました。人が普段使っているブラウザには触りません)
署名する人が、何を確かめているのか画面から読めない。
そうなると置かれる VERIFIED は、「AI がそう言っているから」に近づきます。
見えない画面で押す合格(beta.2 で直した)に続いて、読めない画面で押す合格を塞いだ版です。
v0.2.0-beta.5 で入ったもの
**画面から始めると、ライブ映像が出ていませんでした。**この版で直っています。
- 映像の種類を受け取り損ねていた —— 相手は 1 枚ずつの絵なのに、画面は h264 の
復号器を作り、そこへ流し込んでいた。例外も出ず、記録にも出ず、ただ真っ白になる - CLI から始めたときは出ていたので、画面から始めた人だけが踏んでいた
- 届いているのに 1 枚も描けていないときは、そう言うようにした(黙って白くしない)
見えるものが広くなりました(拡大まわり)
- **ケース一覧と判定パネルを畳める。**畳むと映像がその幅を受け取る
(実測: 表示倍率 60% → 81%)。拡大より効きます —— 補間ではなく、本物の画素が増えるので 1で「相手の画素と 1 対 1」。0(枠に合わせる)とは別の狙い- 1 対 1 を超えたら、そう言う(「ここから先は引き伸ばしです。細部は増えません」)
- 窓を縮めても、どの欄も下が切れない(流れるようにした)
- 拡大したときに、映像が枠からはみ出して説明文を覆っていたのを直した
- 窓の大きさを変えると、矢印が指した所からずれていたのを直した
v0.2.0-beta.4 で入ったもの
+ で拡大したときに、3 つ同時に崩れていたのを直しました(beta.3 で入った不具合です)。
- 映像が枠からはみ出して、下の説明文の上に重なっていた
- 中身の無い帯が出ていた
- 矢印が的を外していた(報告された実測で 424px ずれ、何も無い所を指していた)
拡大は「見えない画面で判定させない」ために入れた機能なので、
押した結果が見えなくなるのは、元の問題に戻ることでした。
本物の描画で測った結果(枠 639x598・相手の窓 1280x800):
| 倍率 | 絵が枠を覆う | 説明文 | 矢印と的のずれ |
|---|---|---|---|
| 1 | 余白あり(正常) | 読める | 41px |
| 1.5 / 2 / 4 | 覆う | 読める | 41 / 42 / 41px |
ずれが倍率で変わらない=矢印が絵の同じ場所に付いている、ということです。
v0.2.0-beta.3 で入ったもの
- デスクトップの画面読みが、実測で 2 倍以上速くなった(macOS・実物 2 つ)。
部品を読む所が 1702 / 3016 ms → 130 / 130 ms、画面を 1 回読むのが 3400 ms → 1500 ms。
見える部品は減っていません —— 1 件ずつ突き合わせて確かめ、
前の道が取りこぼしていた部品まで見えるようになりました(実物で 34→47 件・52→73 件) - 窓の大きさを変えると、矢印が指した所からずれていたのを直した
- 窓を縮めると、判定キーの説明が下から消えていたのを直した(判定の欄が流れます)。
↑↓(前後のケースを見る)が丸ごと消えていました ——
「走ったケースなら、戻って置き直せる」はこの画面で初めて知る機能なので、
幅の狭い機械の人だけが、知らないままになっていました - Windows でキーを押せるようになった(
Enter/Ctrl+Enterなど)。
ここだけ、相手の窓が一瞬前面に出ます(Windows にキーを投げ込む口が無いため。黙ってはやりません) - Windows で文字を打つ・回す(
type/scroll)ができるようになった - 高 DPI(拡大表示 125% / 150%)で、証跡の絵が切り取られていたのを直した。
150% では本文がまるごと白の絵が残り、しかも普通のスクリーンショットに見えていました
(押す場所のほうは、ずれていませんでした)
v0.2.0-beta.2 で入ったもの
- ライブ映像を拡大できるようにした(
+−0と押しボタン)。
**寄る先は AI が指した場所。**映像は枠の約 59% に縮んでいて、
相手の 12〜13px の文字が 7px 前後になっていた ——
見えない画面で押す「合格」は、AI の判定を追認しただけになる - シート実行の CLI が Windows で使えなかったのを直した
(pnpm run:sheet:desktop。アプリからの入口は通っていたが、CLI だけ macOS 用を呼んでいた) - 押す所を、窓の中に閉じた(Windows)。重なった別の窓の要素を掴むことがあった
v0.2.0-beta.1 で入ったもの
- 画面読みが速くなった(実物で 11.6 秒 → 7.1 秒)
- WebView を使うアプリの部品が、ちゃんと見えるようになった(ボタンが 2.6 倍)
- 動いているものに
FAILが付かなくなった(出るまで読み直す) - 1 本走らせたあと、そのまま次を走らせられる
- 止めたときに、開いた窓も片付く
- キーボードの手順(
Enter キーを押す/Ctrl+Enter キーを押す) - Windows のデスクトップアプリ検証(窓を探す・撮る・文字を読む・押す)
いま出来ること
- 鑑賞モード —— 人は見ているだけ、AI が最後まで走る。
Escで止まる - 試験 1 本を 1 つのフォルダにまとめる(
pnpm ws:init)。
検証シート・証跡・画面・動画が揃うので、フォルダごと git で管理できます - 続きから —— 途中で止めた検証に足す。昨日置いた判定を置き直しません
- 証跡はケースごとに
screen.webp(判定時の画面)とscreen.webm(AI の操作)
正直に書いておくこと
- Windows のデスクトップ検証には、まだ穴があります。
- **入力欄の中身が読めません。**打ち込むことはできますが、
「入れた値が入っているか」を確かめる検証は、まだ人の目が要ります - **録画がありません。**画面(
screen.webp)は 1 件ごとに残ります - キーを押すときだけ、相手の窓が一瞬前面に出ます
- **入力欄の中身が読めません。**打ち込むことはできますが、
- Windows でウェブ検証を走らせた実績がまだありません(コードは同じものが走ります)
- **自動更新はありません。**新しい版は配布ページから落とし直してください
- ウェブと Android では、相手が走行中に入れ替わったかを測れません
(unmeasurableと残ります。「変わっていない」とは書きません)
要望・不具合
https://github.com/meta-taro/git-qa/issues
使った直後に、ご自身の言葉で書いてください。
要約すると、本当に困っていた所が落ちます。
v0.2.0-beta.12
**ベータ版です。**3 つのプロダクトで試験導入が始まっています。
**使って、壊れた所を教えてください。**要望も、使った直後にご自身の言葉でどうぞ。
配布ページ → https://meta-taro.github.io/git-qa/
これは何か
AI が操作し、人が見て、1 打鍵で判定を置く道具です。
検証シート(TSV)に沿って、端末・ブラウザ・デスクトップアプリを動かします。
**合格は AI が出しません。**AI が出せるのは PASS まで。
「人が見て保証した」は、人が押したときにだけ付きます。
入れる前に
- **Node 22 以上が要ります。**アプリの中から実行器を動かすので、
入っていないと起動後に画面へ理由を出して止まります - Android 端末を見るなら
adb、ウェブを見るならブラウザ ffmpeg/cwebpは任意(無ければ証跡の絵と動画が変換されずに残るだけ)
入れ方
| macOS | .dmg を開いて Applications へ。署名と公証をしていますので、そのまま開けます |
| Windows | .msi で入れる。署名していません —— 「WindowsによってPCが保護されました」が出るので、出どころを確かめてから[詳細情報]→[実行] |
v0.2.0-beta.12 で入ったもの
押せたり押せなかったりする、を無くしました。
同じボタンの同じ場所なのに、当たるのがボタンのときと、ボタンの中の文字のときがありました。
文字には「押す」という動作が無いので、そのときだけ「押せません」と言って止まります。
1241, 649 → ボタン「押す」 100x44 ← 押せる
1241, 649 → 文字「押す」 32x17 ← 押せない
押せる親まで登って押します(登りすぎて関係の無いものを押さないよう、5 段まで・相手のアプリの中だけ)。
ブラウザの窓を、デスクトップ検証として見る道を実測しました
Claude in Chrome のように、デバッグ口で繋げない相手でも、
ブラウザの窓をデスクトップアプリとして見れば、映像・矢印・判定キー・証跡がそのまま効きます。
open -na "Google Chrome" --args --force-renderer-accessibility
pnpm run:sheet:desktop <シート> "Google Chrome"--force-renderer-accessibility が無いと、ページの中身は押せません。
木は読めるのに、押すと成功が返って何も起きません —— 質の悪い壊れ方なので、旗は必ず付けてください。
(ブラウザ自身のボタンやメニューは、旗が無くても押せます)
付ければ、前面を奪わずに読んで押せます。
v0.2.0-beta.11 で入ったもの
開いた選択肢(<select> のプルダウン)に触れるようになりました。
選択肢を開く → アプリが前面に出てくる → 開いた選択肢が畳まれる → 選べない
原因は「押し方」ではなく「当て方」でした。
選択肢はアプリの窓の外に出るので、アプリを起点にした当て方では見つからず、
**座標を押す古い道(前面へ出して押す道)へ落ちていました。**出した拍子に畳まれます。
- **システム全体から当てます。**ただし相手のアプリのものだけを押します(他人の窓は押しません)
- 開いている選択肢を、AI が読める木に入れます —— 押せても、名前で探せなければ選べません
これで「「東京」を選ぶ」のように、シートの文字のまま選べます。
前面も奪いません(人が別の窓に打っている最中でも、取り上げません)。
v0.2.0-beta.10 で入ったもの
**判定待ちで放置すると、機械が重くなっていました。**この版で直っています。
load averages: 297.98 ← 一晩置いた翌朝(8 コアの機械)
osascript が常時 28 個前後
**映像の口が「読み手が去った」を見ていませんでした。**画面が繋ぎ直すたびに撮影のループが増え、
誰も読んでいないのに回り続けていました(beta.8 で入れた自動の繋ぎ直しが、これを増やす側でした)。
判定待ちは、この道具では普通の状態です。待たせるほど重くなるのは、作りが逆を向いていました。
- 読み手が去ったら、その場で撮影を止めます
- 同時に 1 本しか撮りません(外の道具は頼むたびにプロセスが立つため)
人が見ている実行でも、動画を残せます(--record)
pnpm run:sheet:desktop <シート> <アプリ名> --record
Windows のデスクトップ検証にも動画が残ります(これまで録画がありませんでした)。
人が見ている映像と同じ絵が、1 件ごとに screen.webm として残ります。
1 件目だけ録れないことがあります —— 映像は画面が繋がってから流れ始めるので、
アプリが起ち上がる前に終わったケースには絵が来ません(理由は証跡に残ります)。
v0.2.0-beta.9 で入ったもの
**Windows 版が、入れても起動していませんでした。**この版で直っています。
node 出現 744 ms
node 消滅 1112 ms 生存 368 ms ← 実行器が即死していた
Windows が返す拡張長パス(\\?\ で始まる形)をそのまま渡していて、node が解決できずに死ぬ。
しかも死ぬのは起動の後なので、画面は理由を出さないまま
Android 向けの「はじめかた」を出し続けていました(仕様に見える壊れ方)。
macOS では起きません(その形のパスにならないため)。誰も踏んでいませんでした。
プルダウン(選択肢)を選べるようになりました
プルダウン選べないし、選択するたびにアプリが前面に来て操作できない
macOS の <select> は、窓の中ではなくアプリ直下に出ます。そこを見ていなかったので、
名前で押せない → 座標で押す道へ落ちる → その道は相手を前面へ出す
→ 出した拍子に選択肢が畳まれる/毎回アプリが前面に来る
**開いている選択肢も見るようにしました。**名前で押せる=前面に出ません。
v0.2.0-beta.8 で入ったもの
開いた選択肢に触れるようになりました。
セレクトを開く → 選ぶ ← これまで「開く」までしか出来ませんでした
押すたびに相手を前面へ出して戻していたので、その戻しが、開いているものを畳んでいました。
押し続けている間は戻さず、静かになってから戻します。
ドロップダウン・補完候補・右クリックのメニュー・確認ダイアログも同じです。
画面が黙らなくなりました
- 映像が切れたら、繋ぎ直します。これまでは
Load failedの 4 文字だけでした。
いまは何が切れたのかと、次に何が起きるかが出ます - 押しても届かなかった理由が、画面に出ます。これまでは端末にだけ流れていました。
届かない間は「そのまま届きます」の案内を打ち消します
ウェブの録画(--record)
「全自動でテスト動画」が成立します。
pnpm run:sheet:web sheets/x.tsv --no-ui --record
- 窓が要りません(無人でも録れます)。人が見ている映像と同じ絵が残ります
- 頼まれたときだけ録ります(夜間に何本も流すと、黙って場所を食うので)
ffmpegが無ければ、**絵を残したうえで「持っていない」**と証跡に書きます
v0.2.0-beta.7 で入ったもの
**判定が、別のことを見ていました。**この版で直っています。
「定休日」の日は押せない → これまで: 画面に「定休日」の文字が在れば PASS
**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。
いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。
**判断保留が増えます。**通っていたこと自体が誤りだった行なので、
見えている合格が減るのは、痛いけれど正しい方向です。
但し書きも直しました。これまでは「画面で探す文字列が無い」と出ていたので、
読んだ人が鉤括弧を足すと通ると受け取り、直すほど判定が間違った方向へ確定していました。
日付で振る舞いが変わる画面を、書けるようになりました
書いた日にしか通らない行しか書けませんでした。
# 日付の書き方: YYYY-MM-DD
「今日から 2 日後」をクリックする
**何日に展開したかは証跡に残ります。**残っていないと、
後から読んだ人が、その実行が何日を押したのか復元できません。
AI に操作させる口が、ウェブ・デスクトップにも開きました(MCP)
GIT_QA_MCP_TARGET=web GIT_QA_MCP_URL=http://localhost:3000/ pnpm mcp名前で押せます(element_tap)。座標を当てにいく必要がありません。
Playwright が前準備を済ませたブラウザにも、そのまま繋げます(GIT_QA_CDP)。
判定を置く道具は載せていません。VERIFIED は、人が実物を見て押したときだけ残ります。
**Playwright を強く勧めます。**決まった操作を確実に繰り返すのはそちら、
人が見て判定を置き、証跡に残すのが git-qa です。役割が違うので、競合しません。
画面に文字が出ていない部品も指せます
aria-label="2026-09-20 定休日" のような部品(画面には「20」しか出ていない)を、
**「定休日」で指せます。**見つからなかったときは、どこを探したかも出ます。
そのほか
- ログインが要る画面を検証できるようになりました(
GIT_QA_PROFILE)。
最初のログインは人が手で行ってください —— git-qa は秘密情報を作らない・置かない・貼らない - 誰も見ずに流せます(
--no-ui)。夜間に流して、落ちた行だけ朝に見るための口。
出るのはAUTO_PASS止まりで、終了コードで朝に開くべきものが在るかが分かります - シートに
# 行き先:を書けます。# 対象:にowner/repo@branchのような
「何を検証したか」を書く運用のシートが、そのまま渡せます - 選択中のケースの太字をやめました(日本語が潰れて読めなくなっていました)
- Windows で入力欄の中身が読めます(パスワード欄は読みません)
- 文書が実装と食い違っていた所を直しました(Windows が「ありません」になっていた 等)
v0.2.0-beta.6 で入ったもの
**判定を置く人に、手順と期待結果が渡っていませんでした。**この版から出ます。
- **判定の欄に、シートの中身が出ます。**見出し → 手順 → 期待結果 → AI の判定、の順。
AI の但し書きは畳んであります(開けば読めます) - **列名は決め打ちしていません。**シートに足した列(「なぜ見るのか」等)も、
その名前のまま、書いた値のまま出ます - **検証用のブラウザが残らなくなりました。**実行を止めたときに、その場で片付けます
(こちらで 30 個溜めて気づきました。人が普段使っているブラウザには触りません)
署名する人が、何を確かめているのか画面から読めない。
そうなると置かれる VERIFIED は、「AI がそう言っているから」に近づきます。
見えない画面で押す合格(beta.2 で直した)に続いて、読めない画面で押す合格を塞いだ版です。
v0.2.0-beta.5 で入ったもの
**画面から始めると、ライブ映像が出ていませんでした。**この版で直っています。
- 映像の種類を受け取り損ねていた —— 相手は 1 枚ずつの絵なのに、画面は h264 の
復号器を作り、そこへ流し込んでいた。例外も出ず、記録にも出ず、ただ真っ白になる - CLI から始めたときは出ていたので、画面から始めた人だけが踏んでいた
- 届いているのに 1 枚も描けていないときは、そう言うようにした(黙って白くしない)
見えるものが広くなりました(拡大まわり)
- **ケース一覧と判定パネルを畳める。**畳むと映像がその幅を受け取る
(実測: 表示倍率 60% → 81%)。拡大より効きます —— 補間ではなく、本物の画素が増えるので 1で「相手の画素と 1 対 1」。0(枠に合わせる)とは別の狙い- 1 対 1 を超えたら、そう言う(「ここから先は引き伸ばしです。細部は増えません」)
- 窓を縮めても、どの欄も下が切れない(流れるようにした)
- 拡大したときに、映像が枠からはみ出して説明文を覆っていたのを直した
- 窓の大きさを変えると、矢印が指した所からずれていたのを直した
v0.2.0-beta.4 で入ったもの
+ で拡大したときに、3 つ同時に崩れていたのを直しました(beta.3 で入った不具合です)。
- 映像が枠からはみ出して、下の説明文の上に重なっていた
- 中身の無い帯が出ていた
- 矢印が的を外していた(報告された実測で 424px ずれ、何も無い所を指していた)
拡大は「見えない画面で判定させない」ために入れた機能なので、
押した結果が見えなくなるのは、元の問題に戻ることでした。
本物の描画で測った結果(枠 639x598・相手の窓 1280x800):
| 倍率 | 絵が枠を覆う | 説明文 | 矢印と的のずれ |
|---|---|---|---|
| 1 | 余白あり(正常) | 読める | 41px |
| 1.5 / 2 / 4 | 覆う | 読める | 41 / 42 / 41px |
ずれが倍率で変わらない=矢印が絵の同じ場所に付いている、ということです。
v0.2.0-beta.3 で入ったもの
- デスクトップの画面読みが、実測で 2 倍以上速くなった(macOS・実物 2 つ)。
部品を読む所が 1702 / 3016 ms → 130 / 130 ms、画面を 1 回読むのが 3400 ms → 1500 ms。
見える部品は減っていません —— 1 件ずつ突き合わせて確かめ、
前の道が取りこぼしていた部品まで見えるようになりました(実物で 34→47 件・52→73 件) - 窓の大きさを変えると、矢印が指した所からずれていたのを直した
- 窓を縮めると、判定キーの説明が下から消えていたのを直した(判定の欄が流れます)。
↑↓(前後のケースを見る)が丸ごと消えていました ——
「走ったケースなら、戻って置き直せる」はこの画面で初めて知る機能なので、
幅の狭い機械の人だけが、知らないままになっていました - Windows でキーを押せるようになった(
Enter/Ctrl+Enterなど)。
ここだけ、相手の窓が一瞬前面に出ます(Windows にキーを投げ込む口が無いため。黙ってはやりません) - Windows で文字を打つ・回す(
type/scroll)ができるようになった - 高 DPI(拡大表示 125% / 150%)で、証跡の絵が切り取られていたのを直した。
150% では本文がまるごと白の絵が残り、しかも普通のスクリーンショットに見えていました
(押す場所のほうは、ずれていませんでした)
v0.2.0-beta.2 で入ったもの
- ライブ映像を拡大できるようにした(
+−0と押しボタン)。
**寄る先は AI が指した場所。**映像は枠の約 59% に縮んでいて、
相手の 12〜13px の文字が 7px 前後になっていた ——
見えない画面で押す「合格」は、AI の判定を追認しただけになる - シート実行の CLI が Windows で使えなかったのを直した
(pnpm run:sheet:desktop。アプリからの入口は通っていたが、CLI だけ macOS 用を呼んでいた) - 押す所を、窓の中に閉じた(Windows)。重なった別の窓の要素を掴むことがあった
v0.2.0-beta.1 で入ったもの
- 画面読みが速くなった(実物で 11.6 秒 → 7.1 秒)
- WebView を使うアプリの部品が、ちゃんと見えるようになった(ボタンが 2.6 倍)
- 動いているものに
FAILが付かなくなった(出るまで読み直す) - 1 本走らせたあと、そのまま次を走らせられる
- 止めたときに、開いた窓も片付く
- キーボードの手順(
Enter キーを押す/Ctrl+Enter キーを押す) - Windows のデスクトップアプリ検証(窓を探す・撮る・文字を読む・押す)
いま出来ること
- 鑑賞モード —— 人は見ているだけ、AI が最後まで走る。
Escで止まる - 試験 1 本を 1 つのフォルダにまとめる(
pnpm ws:init)。
検証シート・証跡・画面・動画が揃うので、フォルダごと git で管理できます - 続きから —— 途中で止めた検証に足す。昨日置いた判定を置き直しません
- 証跡はケースごとに
screen.webp(判定時の画面)とscreen.webm(AI の操作)
正直に書いておくこと
- Windows のデスクトップ検証には、まだ穴があります。
- **入力欄の中身が読めません。**打ち込むことはできますが、
「入れた値が入っているか」を確かめる検証は、まだ人の目が要ります - **録画がありません。**画面(
screen.webp)は 1 件ごとに残ります - キーを押すときだけ、相手の窓が一瞬前面に出ます
- **入力欄の中身が読めません。**打ち込むことはできますが、
- Windows でウェブ検証を走らせた実績がまだありません(コードは同じものが走ります)
- **自動更新はありません。**新しい版は配布ページから落とし直してください
- ウェブと Android では、相手が走行中に入れ替わったかを測れません
(unmeasurableと残ります。「変わっていない」とは書きません)
要望・不具合
https://github.com/meta-taro/git-qa/issues
使った直後に、ご自身の言葉で書いてください。
要約すると、本当に困っていた所が落ちます。