Files
EasyTier/easytier-web/frontend

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.