Files
mygo/web/README.md
T
ld 52dd56ff06 build(web): replace Playwright MCP with project-scoped Playwright CLI
- feat: add `.agents/skills/playwright-cli/` with complete Skill
  markdown, agent interface, and 9 reference files covering session
  management, spec-driven testing, video recording, tracing, storage,
  request mocking, element attributes, test debugging, and running
  custom code
- feat: add `.playwright/cli.config.json` to configure the Playwright
  CLI
- feat: add `web/package.json` `playwright:cli` script that resolves
  `playwright cli` from the repo root
- build: remove `@playwright/mcp` dependency from `web/package.json`
- build: set `XDG_CACHE_HOME` in `mise.toml`
- build: delete `.codex/config.toml` (MCP server config)
- docs: update `README.md`, `docs/web/roadmap.md`,
  `docs/web/decisions.md`, and `web/README.md` to reflect the new
  Playwright CLI approach
2026-07-15 23:10:43 +08:00

3.2 KiB

MyGO Web

MyGO's browser client is a pure client-side rendered application built with React, TypeScript, and Vite.

Development

Install the repository-pinned Go and Node.js versions from the repository root:

mise install

Start the Go API from the repository root:

mise exec -- go run . serve

Create a development account through the existing public API if needed:

curl --request POST http://127.0.0.1:10086/api/v1/auth/register \
  --header 'Content-Type: application/json' \
  --data '{"username":"web-user","email":"web@example.com","password":"password123"}'

Then start the browser client from web/:

mise exec -- npm ci
mise exec -- npm run dev

Vite proxies /api to http://127.0.0.1:10086. Production deployments must serve the static build and /api/v1 from the same origin, normally through a reverse proxy.

Browser Testing and Debugging

The Web project uses the Playwright @playwright/test for both repeatable E2E tests and interactive browser debugging. The npm cache, browser binaries, CLI daemon state, screenshots, traces, and videos stay under the repository-level ignored .cache/ and .artifacts/ directories.

Install the Debian browser dependencies once per development container:

mise exec -- npm run playwright:install:deps

Install the matching bundled Chromium revision:

mise exec -- npm run playwright:install

E2E tests and interactive debugging intentionally share the same stable Playwright core and browser revision.

Currently Playwright's version is locked by the only @playwright/test dependency. Standalone @playwright/cli or @playwright/mcp won't be added unless additional requirement.

Run the headless browser tests with Chromium sandboxing enabled:

mise exec -- npm run test:e2e

Run interactive commands through the repository wrapper:

mise exec -- npm run playwright:cli -- open http://127.0.0.1:5173/login
mise exec -- npm run playwright:cli -- snapshot
mise exec -- npm run playwright:cli -- console
mise exec -- npm run playwright:cli -- requests
mise exec -- npm run playwright:cli -- screenshot --filename=.artifacts/playwright-cli/login.png
mise exec -- npm run playwright:cli -- close

The wrapper changes to the repository root before invoking the stable playwright cli bundled with the locked test runner. This loads .playwright/cli.config.json, which selects bundled Chromium in headless, isolated, sandboxed mode and limits generated output under .artifacts/playwright-cli/ to 100 MB.

Do not invoke playwright-cli, a global Playwright installation, or a floating npx package.

If the upstream CLI entry point changes, update only the playwright:cli npm script. Agents should follow the repository-scoped $playwright-cli Skill in .agents/skills/playwright-cli/ for snapshots, sessions, network diagnosis, test debugging, and artifact handling.

Checks

mise exec -- npm run check

The production build is emitted to dist/ as static assets. Browser E2E tests are run separately because they require the browser setup above. See docs/web/roadmap.md at the repository root for architecture boundaries and planned dependencies.