事象
plugins/ndf-shared/skills/playwright-kit-ops/scripts/build_gdoc_with_drive_links.py は Markdown 内の証跡パスを Drive リンクへ置換するが、同梱の playwright_kit/pytest_report.py が出す形式と噛み合わず、置換が 1 件も起きない。
置換側のパターン:
# scripts/build_gdoc_with_drive_links.pyLINK_PATTERN=re.compile(r"\(\.?\/?(TC-[\w-]+/[^\)\s]+)\)")
生成側の出力:
# playwright_kit/pytest_report.py:142-143ife.trace_path:
lines.append(f"- trace: `{e.trace_path}`")- trace: \reports/run-001/test_login/trace.zip` は Markdown リンクではなくコード span なので、LINK_PATTERNに一致しない。加えて case ディレクトリ名もTC-*` 固定ではない。
再現:
importreLINK_PATTERN=re.compile(r"\(\.?\/?(TC-[\w-]+/[^\)\s]+)\)")
LINK_PATTERN.findall("- trace: `reports/run-001/test_login/trace.zip`")
# => []結果として Google Doc 化しても Replaced links: 0 matches になり、証跡リンクが埋まらない。
対応方針の候補
pytest_report.py 側を Markdown リンク [trace](<相対パス>) として出力するよう変えるbuild_gdoc_with_drive_links.py 側を、実際の report 形式(コード span / 任意の case ディレクトリ名)にも一致するパターンへ広げる- どちらを採るにせよ
rewrite_links の単体テストを追加し、report の実出力を入力にした回帰検査を置く
経緯
v5.0.0 の Skill 棚卸(release PR #66)の結合レビュー(PR #80)で codex が指摘した。両ファイルとも棚卸では変更しておらず(git diff origin/main..release/skill-inventory で差分なし)、棚卸以前からある不具合のため、リリースの範囲外として本 issue に切り出した。
Drive 連携は optional dependency(google-auth はどの manifest にも載せていない)であり、この経路を使っていなければ影響しない。
事象
plugins/ndf-shared/skills/playwright-kit-ops/scripts/build_gdoc_with_drive_links.pyは Markdown 内の証跡パスを Drive リンクへ置換するが、同梱のplaywright_kit/pytest_report.pyが出す形式と噛み合わず、置換が 1 件も起きない。置換側のパターン:
生成側の出力:
- trace: \reports/run-001/test_login/trace.zip`は Markdown リンクではなくコード span なので、LINK_PATTERNに一致しない。加えて case ディレクトリ名もTC-*` 固定ではない。再現:
結果として Google Doc 化しても
Replaced links: 0 matchesになり、証跡リンクが埋まらない。対応方針の候補
pytest_report.py側を Markdown リンク[trace](<相対パス>)として出力するよう変えるbuild_gdoc_with_drive_links.py側を、実際の report 形式(コード span / 任意の case ディレクトリ名)にも一致するパターンへ広げるrewrite_linksの単体テストを追加し、report の実出力を入力にした回帰検査を置く経緯
v5.0.0 の Skill 棚卸(release PR #66)の結合レビュー(PR #80)で codex が指摘した。両ファイルとも棚卸では変更しておらず(
git diff origin/main..release/skill-inventoryで差分なし)、棚卸以前からある不具合のため、リリースの範囲外として本 issue に切り出した。Drive 連携は optional dependency(
google-authはどの manifest にも載せていない)であり、この経路を使っていなければ影響しない。