Skip to content

Releases: meta-taro/git-qa

開発版(dev-cb56603)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Oct 12:12

開発版です。壊れていることがあります。

いまの develop を建てたものです。名乗りは dev-cb56603 で、
アプリの準備の画面に出ます。
「新しい版が出ています」は出ません(開発版なので急かしません)。

  • Windows だけ置いています(macOS は手元から動かしてください)
  • 署名していません。「WindowsによってPCが保護されました」が出ます
  • 何が動くかは pnpm doctor で測れます。その出力をそのまま Issue へ貼ってください

配った版が要るときは、リリース一覧の v0.2.0-beta.* を使ってください。

v0.2.0-beta.20

v0.2.0-beta.20 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 05: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 で入ったもの

開いた選択肢に触れるようになりました。

セレクトを開く → 選ぶ   ← これまで「開く」ま...
Read more

v0.2.0-beta.19

v0.2.0-beta.19 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Oct 02:42

**ベータ版です。**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

**押せることを一度も確かめずに、「押せない」行へ合格が付いていました。**逆に
「「選択できない」状態になっている」は、実装が正しくても必ず落ちていました。

いま判定するのは画面に出る文字を指している言い方だけです
(「〜と表示される」「〜が出ている」)。それ以外は判断保留として人へ渡ります。

**判断保留が増えます。**通っていたこと自体が誤りだった行なので、...

Read more

v0.2.0-beta.18

v0.2.0-beta.18 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 05:14

**ベータ版です。**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/ ...
Read more

v0.2.0-beta.17

v0.2.0-beta.17 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Sep 05: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 .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 止まりで、**終了コードで朝に開くべきも...
Read more

v0.2.0-beta.16

v0.2.0-beta.16 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Sep 06:39

**ベータ版です。**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...

Read more

v0.2.0-beta.15

v0.2.0-beta.15 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 11:33

**ベータ版です。**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 の文字...
Read more

v0.2.0-beta.14

v0.2.0-beta.14 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 11:26

**ベータ版です。**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 でウェブ検証を走らせた実績がまだありません(コードは同じものが走ります)
  • **自動更新はありません。**新しい版は配布ページから落とし直してく...
Read more

v0.2.0-beta.13

v0.2.0-beta.13 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 10:55

**ベータ版です。**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

v0.2.0-beta.12 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Sep 08:58

**ベータ版です。**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

使った直後に、ご自身の言葉で書いてください。
要約すると、本当に困っていた所が落ちます。