mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-03-06 16:16:45 +08:00
### What problem does this PR solve? Playwright tests previously depended on cross-file execution order (`auth -> provider -> dataset -> chat`). This change makes setup explicit and idempotent via fixtures so tests can run independently. - Added/standardized prerequisite fixtures in `test/playwright/conftest.py`: - `ensure_auth_context`, `ensure_model_provider_configured`, `ensure_dataset_ready`, `ensure_chat_ready` - Made provisioning reusable/idempotent with `RUN_ID`-based resource naming. - Synced auth envs (`E2E_ADMIN_EMAIL`, `E2E_ADMIN_PASSWORD`) into seeded creds. - Fixed provider cache freshness (`auth_header`/`page` refresh on cache hit). Also included minimal stability fixes: - dataset create stale-element click handling, - search wait logic for results/empty-state, - agent create-menu handling, - agent run-step retry when run UI doesn’t open first click. ### Type of change - [x] Test fix - [x] Refactoring --------- Co-authored-by: Liu An <asiro@qq.com>
Playwright Test README
One-line command (run everything)
BASE_URL=http://localhost:9222 E2E_ADMIN_EMAIL=admin@ragflow.io E2E_ADMIN_PASSWORD=admin PW_FIXTURE_DEBUG=1 uv run pytest -q test/playwright -s --junitxml=/tmp/playwright-full.xml
Common commands
Run smoke subset:
BASE_URL=http://localhost:9222 E2E_ADMIN_EMAIL=admin@ragflow.io E2E_ADMIN_PASSWORD=admin uv run pytest -q test/playwright -m smoke -s --junitxml=/tmp/playwright-smoke.xml
Run full suite:
BASE_URL=http://localhost:9222 E2E_ADMIN_EMAIL=admin@ragflow.io E2E_ADMIN_PASSWORD=admin uv run pytest -q test/playwright -s --junitxml=/tmp/playwright-full.xml
Run one file in isolation:
BASE_URL=http://localhost:9222 E2E_ADMIN_EMAIL=admin@ragflow.io E2E_ADMIN_PASSWORD=admin uv run pytest -q test/playwright/e2e/test_next_apps_agent.py -s --junitxml=/tmp/playwright-agent.xml
Run one test case in isolation:
BASE_URL=http://localhost:9222 E2E_ADMIN_EMAIL=admin@ragflow.io E2E_ADMIN_PASSWORD=admin uv run pytest -q test/playwright/e2e/test_next_apps_chat.py::test_chat_create_select_dataset_and_receive_answer_flow -s -x --junitxml=/tmp/playwright-chat-one.xml
Argument reference
uv run: runpytestinside the project-managed Python environment.pytest: test runner.-q: quieter output.test/playwright: run the whole Playwright suite folder.test/playwright/...py: run one file only.::test_name: run one test function only.-m smoke: run tests with@pytest.mark.smoke.-s: showprint()and fixture logs live.-x: stop at first failure.--junitxml=/tmp/<name>.xml: write machine-readable results to XML.
Environment variables used in commands
BASE_URL: app URL (this suite is currently run againsthttp://localhost:9222).E2E_ADMIN_EMAIL: login email for authenticated flows.E2E_ADMIN_PASSWORD: login password for authenticated flows.PW_FIXTURE_DEBUG=1: optional; prints fixture provisioning details.
Output and artifacts
- JUnit XML files are written to
/tmp/...from--junitxml. - Screenshots and diagnostics are written under:
test/playwright/artifacts/