Files
computer-playbook/roles/web-app-gitea/files/playwright/playwright.spec.js
kevinveenbirkenbachandClaude Opus 5 3036b7ba19 feat(gitea): serve MCP through the project-owned sidecar
Gitea ships no MCP server, so the role runs the project-owned gitea-mcp
package as a sidecar next to it and points it at the instance over the
container network.

Two things the image forces. Its command carries the binary path
explicitly because the image declares no ENTRYPOINT, so a bare flag list
would replace the binary instead of extending it. The port is stringified
because Ansible's native types make a bare lookup an int, and compose
rejects a non-string in a command array.

Keep the surface internal. The public vhost answers a bearerless probe
with an SSO redirect, so the guest spec pins maxRedirects to 0 and
asserts no MCP response is ever served; following the redirect would land
on a login page and pass for the wrong reason.

Calls run with administrator rights, so the tool policy is pinned
read-only and the sidecar starts with the read-only flag and a scope
list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 22:10:15 +02:00

21 lines
655 B
JavaScript

// Gitea Playwright spec — orchestration only. Shared env + persona
// helpers live in `_shared.js`; each scenario is registered from its
// own `test-*.js` companion module so each test stays atomar and
// individually inspectable.
const { test } = require("@playwright/test");
const shared = require("./_shared");
test.use({
ignoreHTTPSErrors: true,
});
test.beforeEach(shared.beforeEach);
require("./test-healthz-ready").register(shared);
require("./test-mcp-guest").register(shared);
require("./test-guest-persona").register(shared);
require("./test-biber-persona").register(shared);
require("./test-administrator-persona").register(shared);