refactor(config-converter): Cmd/Ctrl+Enter ハンドラの preventDefault を guard 前に移動 - #446
Conversation
🖼️ Visual Regression Test 結果
|
レビュー結果: LGTM ✅概要
検証結果1. 「観測可能な振る舞い変更なし」の主張を確認 ✅
2. guard 自体の陽性対照は機能 ✅ 追加 E2E (
将来 guard ( 3. test-gates の例外パターン明示も妥当 ✅ PR 本文で「preventDefault 順序入れ替えの陽性対照ではない」と明示し、PR #423 の precedent に揃えている点が透明性高い。 4. プロジェクト規約準拠 ✅
軽微なコメント (任意 / 非ブロッキング)
Playwright 公式は固定 wait を非推奨としているが、「何も起きないことを assert する」用途では妥当な妥協。300ms で 代替案 (任意): セキュリティ / パフォーマンス
結論Approve 相当。予防 refactor として最小・低リスク、test-gates 例外の説明も明示済み。CI green で merge OK。 Generated by Claude Code |
レビュー指摘対応: 固定 300ms wait + 2 件の toHaveCount を
regex で統合した toHaveCount({ timeout: 500 }) に置換し、
Playwright auto-wait に統一。assert セマンティクス (guard 陽性対照) は
保持: guard 削除時に検証結果メッセージが現れ test fail する。
再レビュー: LGTM ✅ (フィードバック反映確認)差分確認前回レビューの軽微コメント ( - await page.waitForTimeout(300);
- await expect(page.getByText('スキーマ検証成功')).toHaveCount(0);
- await expect(page.getByText('スキーマ検証失敗')).toHaveCount(0);
+ // toHaveCount の timeout で「現れないこと」を確認 (固定 wait より auto-wait が確実)
+ await expect(page.getByText(/スキーマ検証(成功|失敗)/)).toHaveCount(0, { timeout: 500 });改善点
|
概要
ConfigConverterの Cmd/Ctrl+Enter ハンドラでe.preventDefault()を guard より前に移動。将来<form>で包まれた場合に「未入力 Cmd+Enter で form submit に流れる」silent regression を予防する (PR #423 の TOTP 側と同等のパターン)。Closes #424
変更内容
onKeyDown={(e) => { if (e.nativeEvent.isComposing) return; if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) { - if (!output || !schemaText || isValidating) return; e.preventDefault(); + if (!output || !schemaText || isValidating) return; handleValidate(); } }}E2E (陽性対照)
tests/e2e/config-converter.spec.tsに以下のテストを追加:「JSON Schema 検証パネル: スキーマ未入力で Cmd/Ctrl+Enter は検証を発火しない(陽性対照)」
スキーマ検証成功/スキーマ検証失敗のいずれも表示されないことを assert (guard が効くことを確認)test-gates 補足
本 fix の
preventDefault順序入れ替えは 現状<form>で包まれていないため観測可能な振る舞い差分なし。追加した test は guard 自体の陽性対照であり、preventDefault 順序の陽性対照ではない。PR #423 (TOTP 側の同等修正) も guard 陽性対照のみ追加して
<form>シナリオの synthetic test は書いていない先例に揃えた。issue #424 自体も「現状<form>で包まれておらず実害なし。将来の form 化時の予防策」と低優先度判定。テスト計画
node_modules/.bin/astro check0 errorsGenerated by Claude Code