test(e2e): add venv + playwright deps and robust Matomo API auth flow
- Add optional dependency group "e2e" with Playwright in pyproject.toml - Teach Makefile to create/use local .venv, install e2e deps, and fetch Chromium - Wait for Matomo HTTP response (any status) before running bootstrap - Switch API calls to /index.php and add HttpClient.get() - Use UsersManager.getTokenAuth (md5Password) to obtain token_auth for privileged calls - Make web installer more resilient to HTTPError/500 and locale/button variations - Update E2E test to pass admin email and call API via /index.php https://chatgpt.com/share/694a70b0-e520-800f-a3e4-eaf5e96530bd
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
from argparse import Namespace
|
||||
|
||||
from .api_tokens import create_app_token, get_token_auth
|
||||
from .health import assert_matomo_ready
|
||||
from .http import HttpClient
|
||||
from .api_tokens import create_app_token
|
||||
from .install.web_installer import ensure_installed
|
||||
|
||||
|
||||
def run_bootstrap(args: Namespace) -> str:
|
||||
# 1. Matomo erreichbar?
|
||||
assert_matomo_ready(args.base_url, timeout=args.timeout)
|
||||
|
||||
# 2. Installation sicherstellen (NO-OP wenn bereits installiert)
|
||||
# 1) Ensure Matomo is installed (NO-OP if already installed)
|
||||
ensure_installed(
|
||||
base_url=args.base_url,
|
||||
admin_user=args.admin_user,
|
||||
@@ -18,15 +16,25 @@ def run_bootstrap(args: Namespace) -> str:
|
||||
debug=args.debug,
|
||||
)
|
||||
|
||||
# 3. API-Token erzeugen
|
||||
# 2) Now the UI/API should be reachable and "installed"
|
||||
assert_matomo_ready(args.base_url, timeout=args.timeout)
|
||||
|
||||
# 3) Create authenticated API token flow (no UI session needed)
|
||||
client = HttpClient(
|
||||
base_url=args.base_url,
|
||||
timeout=args.timeout,
|
||||
debug=args.debug,
|
||||
)
|
||||
|
||||
admin_token_auth = get_token_auth(
|
||||
client=client,
|
||||
admin_user=args.admin_user,
|
||||
admin_password=args.admin_password,
|
||||
)
|
||||
|
||||
token = create_app_token(
|
||||
client=client,
|
||||
admin_token_auth=admin_token_auth,
|
||||
admin_user=args.admin_user,
|
||||
admin_password=args.admin_password,
|
||||
description=args.token_description,
|
||||
|
||||
Reference in New Issue
Block a user