Files
ai-parallel/docs/testing/AUTHENTICATED-PROVIDER-SMOKE.md

2.6 KiB

Authenticated Provider Smoke

The authenticated smoke flow is an opt-in validation path for dedicated Provider test accounts. It is separate from the default credential-free Browser Smoke workflow and runs only from main through a manually dispatched GitHub Actions job.

Protected setup

Create a protected GitHub Environment named authenticated-provider-smoke and require reviewer approval before jobs can start. Add username and password Secrets for only the dedicated non-personal accounts that will be tested:

AI_PARALLEL_SMOKE_CHATGPT_USERNAME
AI_PARALLEL_SMOKE_CHATGPT_PASSWORD
AI_PARALLEL_SMOKE_DEEPSEEK_USERNAME
AI_PARALLEL_SMOKE_DEEPSEEK_PASSWORD
AI_PARALLEL_SMOKE_ZHIPU_USERNAME
AI_PARALLEL_SMOKE_ZHIPU_PASSWORD
AI_PARALLEL_SMOKE_QWEN_USERNAME
AI_PARALLEL_SMOKE_QWEN_PASSWORD
AI_PARALLEL_SMOKE_KIMI_USERNAME
AI_PARALLEL_SMOKE_KIMI_PASSWORD
AI_PARALLEL_SMOKE_CLAUDE_USERNAME
AI_PARALLEL_SMOKE_CLAUDE_PASSWORD
AI_PARALLEL_SMOKE_GEMINI_USERNAME
AI_PARALLEL_SMOKE_GEMINI_PASSWORD
AI_PARALLEL_SMOKE_GROK_USERNAME
AI_PARALLEL_SMOKE_GROK_PASSWORD

The workflow maps these Secrets only to the smoke process. Do not place values in workflow inputs, command arguments, URLs, repository files, or local shell history. The selected Provider list is an explicit comma-separated input; the default is chatgpt,grok.

Run and validation

Use Actions → Authenticated Browser Smoke → Run workflow on the main branch. The test launches a fresh temporary persistent Chrome Profile, logs in to each selected Provider, opens the AI Parallel workspace, selects only those Providers, sends a fixed health-check Prompt, and collects each visible answer. Grok additionally must have an allowlisted top-level grok.com tab and an observed grok.com/x.ai WebSocket connection.

Provider authentication selectors are best-effort test configuration. Accounts requiring interactive MFA, CAPTCHA, or an unsupported OAuth-only flow must not be used for this automated path until an explicitly reviewed test strategy is available.

Retention boundary

The smoke test never starts Playwright tracing, takes screenshots, writes storageState, or uploads the browser Profile. It removes the temporary Profile after the run. On failure it writes only provider, stage, status, bounded error code, and timestamps to diagnostics.json; Prompt, response, Cookie, password, authentication URL, page HTML, and WebSocket URL contents are excluded.

The extension manifest, permissions, runtime message allowlists, and the credential-free Browser Smoke workflow are unchanged by this validation path.