Repository navigation
v0.2.0-beta.14
Pre-release**ベータ版です。**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 でウェブ検証を走らせた実績がまだありません(コードは同じものが走ります)
- **自動更新はありません。**新しい版は配布ページから落とし直してください
- ウェブと Android では、相手が走行中に入れ替わったかを測れません
(unmeasurableと残ります。「変わっていない」とは書きません)
要望・不具合
https://github.com/meta-taro/git-qa/issues
使った直後に、ご自身の言葉で書いてください。
要約すると、本当に困っていた所が落ちます。