setup-web-tests について
flox を利用できない Claude Code for web 環境で Python テストを実行するためのセットアップガイドです。指定バージョンの Python、依存関係、必要なサービスの構成を扱います。
主な機能
- 01必要な Python バージョンの導入
- 02uv による依存関係の設定
- 03Docker でのテストサービス起動
- 04hosts と環境変数の設定
- 05フロントエンド用テストファイルの準備
活用シーン
- 01Claude Code for web でのバックエンドテスト実行
- 02Python バージョン不一致の解消
- 03テスト用ローカルサービスの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ posthog --skill setup-web-testsインストール後、Claude Code で/setup-web-testsを入力して読み込まれたか確認します。
詳細
Claude Code for web — テストセットアップ
このドキュメントでは、flox が利用できない Claude Code for web 環境で Python テストをセットアップして実行する方法について説明します。
この手順に従って行き詰まった場合は、ユーザーに助けを求めて指示を仰いでください。また、このガイドを更新するよう提案してください。
問題
このプロジェクトでは、pyproject.toml に固定された特定の Python バージョンが必要です(requires-python を確認してください)。しかし:
- Claude Code for web 環境では、システムの Python バージョンが異なる場合があります
uv python install <version>は、そのバージョンがまだ uv にインデックスされていない場合に失敗することがありますuv syncは正確なバージョン制約を適用するため、誤った Python バージョンでは失敗します
解決策: python-build-standalone から Python をダウンロードする
python-build-standalone の GitHub リリースから、正確なバージョンをダウンロードします。以下のスクリプトは、pyproject.toml から必要なバージョンを自動検出します:
# Auto-detect the required version from pyproject.toml
REQUIRED_VERSION=$(grep requires-python pyproject.toml | grep -oP '[\d.]+')
echo "Required Python: $REQUIRED_VERSION"
# Get the latest release tag from python-build-standalone
RELEASE_TAG=$(curl -sL "https://api.github.com/repos/astral-sh/python-build-standalone/releases/latest" | grep '"tag_name"' | cut -d'"' -f4)
# Find and download the matching build
DOWNLOAD_URL=$(curl -sL "https://api.github.com/repos/astral-sh/python-build-standalone/releases/latest" | \
grep "browser_download_url" | grep "$REQUIRED_VERSION" | grep "x86_64-unknown-linux-gnu-install_only.tar.gz" | head -1 | cut -d'"' -f4)
mkdir -p /tmp/python-install && cd /tmp/python-install
curl -L -o python.tar.gz "$DOWNLOAD_URL"
tar -xzf python.tar.gz
# Verify
/tmp/python-install/python/bin/python3 --version
自動検出で URL が見つからない場合(例: バージョンが新しすぎる場合)は、リリースページを手動で確認し、cpython-<version>+<tag>-x86_64-unknown-linux-gnu-install_only.tar.gz アセットを探してください。
依存関係のインストールとテストの実行
cd /home/user/posthog
uv sync --python /tmp/python-install/python/bin/python3
source .venv/bin/activate
# Run a specific test (if hogli is available)
hogli test path/to/test.py::TestClass::test_method -v
# Or use pytest directly
pytest path/to/test.py::TestClass::test_method -v
# Run all tests in a directory
hogli test posthog/hogql/test/ -v
Docker サービス
ほとんどのテストでは、バックエンドサービスが実行されている必要があります。Docker が利用可能な場合は、次のコマンドで起動します:
docker compose -f docker-compose.dev.yml up -d
サービスの完全なリストとポートについては、docker-compose.dev.yml を参照してください。一部のテストディレクトリには、それぞれの設定ファイルに記載された特定のサービス要件があります。
hosts ファイルのセットアップ
テストでは、特定のホスト名が localhost に解決されることを前提としています:
echo "127.0.0.1 kafka clickhouse clickhouse-coordinator objectstorage" | sudo tee -a /etc/hosts
環境変数
テストでは、.github/workflows/ci-backend.yml で定義されている環境変数が必要です(ファイル先頭の env: セクションを参照してください)。ローカル開発のデフォルト値として、.env.example を .env にコピーすることもできます。
追加セットアップ
フロントエンド dist プレースホルダー
一部のテストでは、フロントエンドのビルド成果物が存在している必要があります(空であっても構いません):
mkdir -p frontend/dist
touch frontend/dist/index.html
touch frontend/dist/layout.html
touch frontend/dist/exporter.html
SAML 依存関係(必要な場合)
SAML 関連の機能については:
sudo apt-get update
sudo apt-get install libxml2-dev libxmlsec1-dev libxmlsec1-openssl
Pytest 設定
pytest.ini では以下を設定しています:
pythonpath = . commonDJANGO_SETTINGS_MODULE = posthog.settingsDEBUG=1、TEST=1
デフォルトの除外: --ignore=posthog/user_scripts --ignore=services/llm-gateway --ignore=common/ingestion/acceptance_tests
インストールの問題のデバッグ
テストセットアップで問題が発生した場合は、権威ある CI 設定として.github/workflows/ci-backend.ymlを参照してください。このファイルには以下が記載されています:
- CI で使用される正確な Python バージョン
- インストールされるシステム依存関係
- 設定される環境変数
- Docker サービスの設定
- テスト実行コマンド
制限事項
- Docker が利用できない場合: サービスを必要とするテストは、Docker がないと失敗します
- ネットワーク制限: Python のダウンロードには GitHub へのアクセスが必要です
- Temporal テスト: 追加の Temporal サービスセットアップが必要です