EasyTier Web frontend
The management console uses Vue 3, PrimeVue 4 and Tailwind 3. Device
configuration and runtime views reuse easytier-frontend-lib.
Development
From the repository root:
pnpm install --frozen-lockfile
pnpm --dir easytier-web/frontend dev
The development proxy defaults to http://localhost:11211. Set
API_BASE_URL to use another backend. Production API discovery and hash
routes remain compatible with existing deployments.
src/theme.ts contains the Web-specific Aura preset; src/console.css
contains the console layout and shared-component compatibility tokens.
Register the Web PrimeVue configuration first, then register the shared
library with skipPrimeVue: true to preserve the console preset. These
styles are not imported by the GUI or config generator.
Verification
pnpm --dir easytier-web/frontend exec playwright install chromium
pnpm --dir easytier-web/frontend test:browser
pnpm --dir easytier-web/frontend-lib test:config-ui
pnpm --dir easytier-web/frontend-lib test:network-config
The browser command builds the application, starts a local preview on port 5198, and uses intercepted API responses. It covers summary refresh and recovery, search and sorting, device deep links and drawer history, network creation, gateway discovery, unsaved settings, secret regeneration, member changes and deletion confirmation. No real controller is modified.
The layout checks cover English and Chinese, light and dark themes, and 1440px, 1024px and 390px viewports. To save screenshots outside the repo:
WEB_SCREENSHOT_DIR=/tmp/easytier-web-redesign \
pnpm --dir easytier-web/frontend test:browser
Set WEB_TEST_URL to test an already running frontend instead of starting
the preview server. Browser checks exercise simulated device responses;
they do not replace integration testing against a live EasyTier network.
End-to-end test
The end-to-end test needs the rust Docker container with access to the
repository and its shared target directory. Build the Core binary inside
the container so it can run there, then restore the build directory's owner
for the host-side Web build:
docker exec rust bash -lc "cd \"$PWD\" && cargo build -p easytier --bin easytier-core"
sudo chown -R "$(id -u):$(id -g)" target
pnpm --dir easytier-web/frontend test:e2e
This test uses a fresh SQLite database, a real Web server, a Chromium browser, and a Core process with a TUN device. It checks network creation, member configuration, ACL persistence, live peer and route RPCs, and offline member deletion across Web and Core restarts. It does not intercept API requests.