ホーム自己紹介ブログ
NO.372
DATE2026. 06. 08

写経テストコードを全部消した

以下で書いた通り、プロダクトコードを写経したテストコードを削除しました。
"こぶりー" ( https://kobliy.vercel.app/ ) という個人ブログを読むアプリのコードです。

テストコードの意味がない

個人開発のバイブコーディングでテストコードを書かせているが意味がなかった。 期待する機能をプロンプトで指示しプロダクションコードが出来上がるが、同時にテストコードも書かせていた。 そのテストコードは、プロダクションコードをそのままテストコー

ジブンノート

その代わり、以下の構成のテストコードを用意しました。

  • cucumberとgherkin(日本語マークダウン)でテストシナリオを記述
  • TestcontainersとPlaywrightでテスト環境を構築

Testcontainers については、以下で書いた記事が参考になります。

Testcontainersで実現する、使い捨て結合テスト環境構築とテスト実施

みなさん、Testcontainersをご存知ですか?Testcontainersは、Dockerコンテナを利用して実際のサービスを統合テストで手軽に使用できるオープンソースのライブラリです。今回、Testcontainersを使って、GitHub Actions上でRails API、MySQL、Next.jsをDockerコンテナとして起動させ、複数のテストシナリオを独立してテストすることができました。以下はその概要図です。本記事では、このテストについての解説と学びを紹介したいと思います。

ジブンノート

システム日付

"こぶりー" では現在日付に関係するロジックがあります。

  • Web: 未来の日付にあるブログ記事をスキップ
  • バッチ: 個人ブログ記事を取り込む際に未来の公開日をスキップ

こういう時に Playwrightでのブラウザ日付を固定(2026年6月1日)にしたり、
TestcontainersのDockerコンテナのシステム日付を固定(2026年6月1日)にすることで、
日付に左右されないテストが実現できます。

架空の環境

"こぶりー" では、いくつかの環境を組み合わせています。

  • Cloud Run: 日々の個人ブログ記事を収集するバッチ
  • Supabase Edge Functions: データ更新や新着記事の通知などの処理

これらを Testcontainers の中にそのまま格納して環境変数だけ切り替えるだけで、
ローカルのテスト環境だけで全ての機能をチェックすることができます。
ローカル完結するので、テスト速度も早く安定したテストになります。

テスト内容

プロダクションコードを仕様とした写経テストコードは捨てて、
Gherkinのテストシナリオを仕様とさせます。
その代わり、テストシナリオにはこれまで実装してきた機能で守りたい機能のシナリオを記述する必要があります。
「何を守りたいか」を考える必要があり、今のところ思いつくままに列挙しています。
何度書いても冪等なテスト環境なので、何度も実行して検証して形にしました。
ここに書く粒度などは、まだ手探りな状態です。

リファクタリング

守りたい仕様は定義できたので、
codemod によるファイル内の記述をチェック・強制(fix)するのを追加しました。
AIへのプロンプトやコンテキスト、AGENTS.md などによるガードレールよりも、
npm script のfixで直させた方が AI もそちらに沿うように倣ってくれるため、やっておきたいのです。
で、ほぼ大半のts,tsxファイルを変更しましたが、Testcontainersのテストのおかげで安心してマージできました。

AI
フロントエンド
テスト

-

読者になる

|

シェアする

|

silverbirders

silverbirder

Webソフトウェアエンジニア

ブログを応援する

この記事がよかったら、お布施という形で応援してもらえるとうれしいです。

おふせぼたん

※ ログイン不要で投稿できます。

※ 同じブラウザから投稿を削除できます。

0

読み込み中...

前の記事へ

関連する記事

タグ「AI」の記事

念の為に、手動確認をしよう

最近のお悩みは、Webのソフトウェア開発におけるテストコードが爆増したことにより、 テスト成功による過度な安心感 によって手動確認するのが減っているのかもと思ったりしています。 例えば、Webのフォーム画面に小さな改修があったとして、その修

2026年06月03日

AI
フロントエンド
テストコードの意味がない

個人開発のバイブコーディングでテストコードを書かせているが意味がなかった。 期待する機能をプロンプトで指示しプロダクションコードが出来上がるが、同時にテストコードも書かせていた。 そのテストコードは、プロダクションコードをそのままテストコー

2026年05月31日

AI
テスト
GitHub Copilot を解約して、OpenAI Codex Pro を契約しました。

今朝、長らくお世話になった GitHub Copilot を解約し、 OpenAI Codex を Plus から Pro にアップグレードしました。 経緯 今月、5月4日あたりから OpenAI Codex で何度か上限制限(5時間以内)

2026年05月09日

AI

タグ「フロントエンド」の記事

念の為に、手動確認をしよう

最近のお悩みは、Webのソフトウェア開発におけるテストコードが爆増したことにより、 テスト成功による過度な安心感 によって手動確認するのが減っているのかもと思ったりしています。 例えば、Webのフォーム画面に小さな改修があったとして、その修

2026年06月03日

AI
フロントエンド
モバイルアプリからPWAアプリへ切り替え

以下で書いた個人ブログを読むアプリ(個人ブログライブラリ、略して "こぶりー" )をモバイルアプリで開発していました。 https://silverbirder.github.io/blog/contents/20260419/ 審査関連で

2026年05月11日

フロントエンド
モバイルアプリを作る機運が高まった

過去にモバイルアプリを作ろうとして断念したことがありました。 https://silverbirder.github.io/blog/contents/first-mobile-app-failure/ 最近、作りたいモバイルアプリのネタが

2026年04月14日

フロントエンド

タグ「テスト」の記事

テストコード、どこに何書く

業務でWebフロントエンドのテストコードを書く際に、どこに何を書くかというのをざっくりと考えをまとめてみます。 前提 Webアプリケーションのプログラムファイルがツリー構造である前提とします。 tree よくあるフィーチャー単位のフォルダ構

2026年06月05日

テスト
テストコードの意味がない

個人開発のバイブコーディングでテストコードを書かせているが意味がなかった。 期待する機能をプロンプトで指示しプロダクションコードが出来上がるが、同時にテストコードも書かせていた。 そのテストコードは、プロダクションコードをそのままテストコー

2026年05月31日

AI
テスト
Testcontainers 導入の苦労話メモ

最近、Testcontainers を使う機会があり、苦労したことについて備忘録として残しておきます。 前提 以下の記事で書いてある構成に近いものです。 https://zenn.dev/silverbirder/articles/0a54

2026年05月14日

テスト
← ブログ一覧へ