Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #34193 +/- ##
==========================================
- Coverage 81.87% 81.87% -0.01%
==========================================
Files 4495 4495
Lines 176440 176440
Branches 34946 34946
==========================================
- Hits 144454 144453 -1
+ Misses 29125 29124 -1
- Partials 2861 2863 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@dosu how about this pr |
|
This PR initializes Playwright as the e2e testing framework for Dify's frontend [1]. It addresses issue #32473 which identified the need for browser-based UI workflow testing [2]. Context:
What to expect:
The PR looks like a good foundational step toward the comprehensive testing strategy outlined in #32473. I wasn't able to access the specific file diffs, so I can't comment on implementation details, but the approach aligns well with the testing roadmap discussed in the issue. To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other |
There was a problem hiding this comment.
Pull request overview
Introduces a new repository-level e2e/ package to run full-stack end-to-end tests (source API + built web + Docker middleware) using Cucumber + Playwright, and wires it into CI.
Changes:
- Added a standalone
e2e/workspace with Cucumber feature files, Playwright auth bootstrapping, and TS scripts to orchestrate middleware/API/web lifecycle. - Added a dedicated GitHub Actions workflow to run the E2E suite and integrated it into
main-ciwith path-based change detection. - Updated
docker-compose.middleware.yamlto allow the plugin daemon container to reach the host API viahost.docker.internal.
Reviewed changes
Copilot reviewed 26 out of 27 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| e2e/vite.config.ts | Vite+ config for formatting/lint/type-check in the e2e package. |
| e2e/tsconfig.json | TypeScript configuration for the e2e package. |
| e2e/test-env.ts | Centralized env defaults and flags for E2E runtime. |
| e2e/support/web-server.ts | Web server lifecycle (start/reuse/readiness/stop) for E2E runs. |
| e2e/support/process.ts | Process + polling utilities (spawn with logs, URL probing, shutdown). |
| e2e/scripts/setup.ts | Entry point for resetting state, starting middleware, and running API/web. |
| e2e/scripts/run-cucumber.ts | Orchestrates E2E run: start services, run Cucumber, cleanup. |
| e2e/scripts/common.ts | Shared helpers for running commands, dotenv parsing, and waits. |
| e2e/pnpm-lock.yaml | Lockfile for the e2e workspace. |
| e2e/package.json | e2e workspace manifest, scripts, and toolchain dependencies. |
| e2e/fixtures/auth.ts | Playwright-based auth bootstrap + persisted storage state for scenarios. |
| e2e/features/support/world.ts | Custom Cucumber world holding Playwright context/page + session metadata. |
| e2e/features/support/hooks.ts | Suite hooks: shared browser, auth bootstrap, artifacts on failure. |
| e2e/features/step-definitions/smoke/install.steps.ts | Step for asserting bootstrap mode is fresh install. |
| e2e/features/step-definitions/common/navigation.steps.ts | Steps for basic navigation + UI assertions. |
| e2e/features/step-definitions/common/auth.steps.ts | Step for asserting/attaching authenticated session info. |
| e2e/features/step-definitions/apps/create-app.steps.ts | Steps to create a blank app and verify editor navigation. |
| e2e/features/smoke/install.feature | Fresh-install smoke feature (tagged @fresh). |
| e2e/features/smoke/authenticated-entry.feature | Authenticated entry smoke feature. |
| e2e/features/apps/create-app.feature | Feature for creating a new app and reaching the editor. |
| e2e/cucumber.config.ts | Cucumber config (formats, paths, tags, timeouts). |
| e2e/README.md | Pointer to canonical e2e docs. |
| e2e/AGENTS.md | Canonical documentation for running/debugging the e2e suite. |
| e2e/.gitignore | Ignores generated auth state, reports, logs, and node_modules. |
| docker/docker-compose.middleware.yaml | Adds extra_hosts mapping for host.docker.internal. |
| .github/workflows/web-e2e.yml | New CI workflow to run the full-stack E2E suite and upload artifacts. |
| .github/workflows/main-ci.yml | Adds change-detection + required-check wrapper job for web E2E. |
Files not reviewed (1)
- e2e/pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 26 out of 27 changed files in this pull request and generated 4 comments.
Files not reviewed (1)
- e2e/pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Important
Fixes #<issue number>.Summary
fixes #32473
Screenshots
Checklist
make lintandmake type-check(backend) andcd web && npx lint-staged(frontend) to appease the lint gods