テスト
PRを出す前に、pnpm test と pnpm lint が通ることを確認してください。このページでは、それぞれのテストを個別に動かす方法をまとめています。
フロントエンドとSDK
Section titled “フロントエンドとSDK”データベースなどを用意しなくても動きます。
pnpm --filter frontend testpnpm --filter cherrypick-js testバックエンド
Section titled “バックエンド”バックエンドのテストには3種類あります。
| 種類 | 場所 |
|---|---|
| ユニットテスト | packages/backend/test/unit |
| 単一サーバーのE2Eテスト | packages/backend/test/e2e |
| 複数サーバー(連合)のE2Eテスト | packages/backend/test-federation |
ユニットテスト・単一サーバーのE2Eテスト
Section titled “ユニットテスト・単一サーバーのE2Eテスト”テスト用の設定ファイルをコピーします。
cp .github/cherrypick/test.yml .config/テスト用のPostgreSQLとRedisを起動します。
docker compose -f packages/backend/test/compose.yml up代わりに、消えてもかまわない空のデータベースを用意し、.config/test.yml を書き換えてもかまいません。
テストを実行します。
pnpm --filter backend test # ユニットテストpnpm --filter backend test:e2e # 単一サーバーのE2Eテスト特定のテストだけを動かすときは、packages/backend からの相対パスを渡します。
pnpm --filter backend test test/unit/activitypub.tspnpm --filter backend test:e2e test/e2e/nodeinfo.ts-t でテスト名による絞り込みもできます。ファイルの変更を監視して実行し直す場合は pnpm --filter backend vitest-watch を使います。
複数サーバー(連合)のE2Eテスト
Section titled “複数サーバー(連合)のE2Eテスト”packages/backend/test-federation/README.md を参照してください。
フロントエンドのE2Eテスト
Section titled “フロントエンドのE2Eテスト”Playwright で、実際にサーバーを起動してブラウザから操作するテストです。バックエンドのテストと同じく、テスト用のデータベースとRedis(.config/test.yml)が必要です。
pnpm buildpnpm --filter frontend exec playwright install chromiumpnpm start-server-and-test start:test http://localhost:61812 "pnpm --filter frontend test:e2e"start:test は .config/test.yml の設定でサーバーを起動します。すでにサーバーが動いている場合は、環境変数 CHERRYPICK_URL で接続先を指定し、pnpm --filter frontend test:e2e だけを実行することもできます。
テストは GitHub Actions で自動的に実行されます。設定は .github/workflows にあります。