Skip to content

v0.2.0-beta.15

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 11:33
· 78 commits to develop since this 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.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 の文字が 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

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