test: add Playwright end-to-end example for FormView (#16)
CI / build-and-test (pull_request) Successful in 2m16s
CI / build-and-test (pull_request) Successful in 2m16s
Adds the first browser-driven test to the project: PlaywrightTestBase starts the app on a random port and drives a headless Chromium against it, and FormViewPlaywrightTest covers the form's rendering, binder validation and the save/reset buttons. The tests skip themselves via a JUnit assumption when no browser can be launched, so runners without Playwright browsers stay green. Closes #16 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ue9ZtWUBQF4SuSHpzZ3zwq
This commit is contained in:
@@ -9,9 +9,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
./mvnw compile # compile only
|
||||
./mvnw package # production build → target/*.jar
|
||||
java -jar target/*.jar # run production jar
|
||||
./mvnw test # run all tests
|
||||
```
|
||||
|
||||
No test sources exist yet (`src/test` is empty) — `spring-boot-starter-test` and `browserless-test-spring` are on the classpath but unused.
|
||||
**Tests** live in two flavours, both run by surefire (`*Test`):
|
||||
- `views/*Test` — browserless (`browserless-test-spring`): the Vaadin UI is built server-side and asserted on the component tree, no browser. Fast (seconds).
|
||||
- `e2e/*PlaywrightTest` — real headless Chromium (`com.microsoft.playwright:playwright`) against the app on a random port, via `e2e/PlaywrightTestBase`. Slow (~1 min). Playwright downloads its browsers into `~/.cache/ms-playwright` on first run; if that fails (offline runner, missing system libs) the tests are **skipped** via a JUnit assumption instead of failing the build.
|
||||
|
||||
E2E assertions match the **English** captions: German is the unsuffixed fallback bundle (`translations.properties`), so `de` is not a provided locale and Vaadin serves `translations_en.properties` for a German browser. `PlaywrightTestBase` pins the context locale to `en-US` to make that explicit.
|
||||
|
||||
**Java 25 toolchain required** (`pom.xml` sets `java.version=25`). If the default JDK on PATH is older (check `java -version`), point `JAVA_HOME` at a Java 25 install for the Maven build, e.g.:
|
||||
```bash
|
||||
@@ -43,7 +48,7 @@ UI copy/data (chart labels, notifications) is in German.
|
||||
## AI-Autofix – Regeln
|
||||
- Nur Issues mit Label `ai-ready` bearbeiten.
|
||||
- Branch-Namensschema: `ai/issue-<nr>-<kurz-slug>`.
|
||||
- Kein Fix ohne grüne Tests. Test-Befehl: `<dein Testkommando>`.
|
||||
- Kein Fix ohne grüne Tests. Test-Befehl: `./mvnw test`.
|
||||
- Bei Unklarheit / Scope > ~200 Zeilen Diff: NICHT fixen,
|
||||
stattdessen Issue kommentieren ("needs human") und Label `ai-blocked` setzen.
|
||||
- PR-Beschreibung MUSS `Closes #<nr>` enthalten.
|
||||
|
||||
Reference in New Issue
Block a user