mcpField
S
setup-web-tests

setup-web-tests

github.com/posthogテスト・品質40.5k243 回インストール今日更新
リポジトリ

setup-web-tests について

flox を利用できない Claude Code for web 環境で Python テストを実行するためのセットアップガイドです。指定バージョンの Python、依存関係、必要なサービスの構成を扱います。

主な機能

  1. 01必要な Python バージョンの導入
  2. 02uv による依存関係の設定
  3. 03Docker でのテストサービス起動
  4. 04hosts と環境変数の設定
  5. 05フロントエンド用テストファイルの準備

活用シーン

  1. 01Claude Code for web でのバックエンドテスト実行
  2. 02Python バージョン不一致の解消
  3. 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 = . common
  • DJANGO_SETTINGS_MODULE = posthog.settings
  • DEBUG=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 サービスセットアップが必要です

コメント