Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when a test needs a database - spin up a dedicated, disposable test database (Testcontainers) seeded with known data, never a shared or production database
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Automated tests need a database that is real (same engine as production), isolated (no shared state), and seeded with known data. The answer is a disposable, per-run database — Testcontainers spins up a real Postgres in a container, migrated and seeded, torn down after.
Core principle: Real engine, disposable instance, known seed. Never point tests at a shared dev or production database, and never use an in-memory substitute whose SQL differs from production.
| Approach | Problem |
|---|---|
| Shared dev/staging DB | Flaky: other work mutates it; tests collide and depend on order |
| Production DB | Never — data risk, and tests would mutate real records |
| In-memory (H2/SQLite) | Dialect gaps: queries pass in H2, fail on Postgres → bugs ship |
| Disposable real DB (Testcontainers) | ✅ real engine, isolated, reproducible |
postgres:<same-major-as-prod>.@Testcontainers
class TaskExportIT {
@Container static PostgreSQLContainer<?> db =
new PostgreSQLContainer<>("postgres:16");
@BeforeAll static void migrate() { Flyway.configure().dataSource(db.getJdbcUrl(),
db.getUsername(), db.getPassword()).load().migrate(); } // real migrations
@BeforeEach void seed() {
// exactly the rows this scenario needs
insertProject("p1", "Demo");
insertTasks("p1", 3);
}
@Test void export_returns_all_tasks() {
var csv = export("p1");
assertEquals(3, csvRows(csv)); // asserts against the known seed
}
}
Same idea in Go (Testcontainers-Go), Node (testcontainers), etc. — a real Postgres, real migrations, explicit seed.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。