- Remove all hardcoded NW:eshkink0t credentials from 9 files across skills, commands, rules, and specs - Add .kilo/shared/gitea-auth.md with get_gitea_token() and .kilo/gitea.jsonc config structure - All Gitea API callers now use env vars (GITEA_TOKEN → GITEA_USER+GITEA_PASS → ValueError) - Fix task-analysis/SKILL.md broken functions (orphaned req references, stray parentheses) - Replace hardcoded UniqueSoft/APAW API URLs with get_target_repo() auto-detection in 3 files - Update README.md, STRUCTURE.md, AGENTS.md with centralized auth documentation - Add EVOLUTION_LOG Entry #5 documenting credentials extrication
4.7 KiB
/web-test Command
Run visual regression testing pipeline in Docker. Captures screenshots, extracts UI elements with bounding boxes, compares against baselines, and detects console/network errors.
Usage
/web-test <url> [--pages /,/about] [--threshold 0.05]
Arguments
| Argument | Required | Description |
|---|---|---|
url |
Yes | Target URL to test |
Options
| Option | Default | Description |
|---|---|---|
--pages |
/ |
Comma-separated page paths |
--threshold |
0.05 |
Visual diff threshold (5%) |
--visual |
true | Run visual regression |
--console |
true | Run console error detection |
--auto-fix |
false | Auto-create Gitea Issues for errors |
--issue |
— | Gitea Issue number to post results |
Examples
Basic
/web-test https:// bbox.wtf
Multiple pages
/web-test https://my-app.com --pages /,/login,/about
Strict threshold
/web-test https://my-app.com --threshold 0.01
Post results to Gitea Issue
/web-test https://my-app.com --issue 42
Pipeline Steps
/web-test <url>
↓
1. Docker container starts (mcr.microsoft.com/playwright:v1.52.0-noble)
2. npm install pixelmatch, pngjs inside container
3. For each page × viewport (mobile, tablet, desktop):
- Navigate to URL
- Wait for networkidle
- Capture fullPage screenshot
- Extract all visible DOM elements with bounding boxes
- Collect console errors and network failures
4. Compare current screenshots against baselines (pixelmatch)
- Auto-create baselines on first run
- Generate diff images (red pixels = differences)
5. Generate JSON report at tests/reports/visual-test-report.json
6. If GITEA_ISSUE is set, post formatted report + diff screenshots to Gitea Issue
7. Exit 0 if all passed, 1 if failures
Output
| File | Description |
|---|---|
tests/visual/baseline/ |
Reference screenshots (gitignored) |
tests/visual/current/ |
Latest screenshots (gitignored) |
tests/visual/diff/ |
Diff images (gitignored) |
tests/reports/visual-test-report.json |
Full report: elements, errors, diff % |
Docker Compose Services
| Service | Command |
|---|---|
visual-tester |
Full pipeline (default) |
screenshot-baseline |
Capture baselines only |
screenshot-current |
Capture current only |
visual-compare |
pixelmatch comparison only |
console-monitor |
Console/network errors only |
Docker Networking
Playwright containers need proper DNS resolution. Two modes:
Local app testing (bridge network)
Default — uses host.docker.internal to reach services on the host:
docker compose -f docker/docker-compose.web-testing.yml up visual-tester
External site testing (host network)
Required for testing external URLs where Docker DNS fails:
NETWORK_MODE=host docker compose -f docker/docker-compose.web-testing.yml up visual-tester
The NETWORK_MODE env var controls network_mode in docker-compose. Default is bridge
(for local apps), set to host for external sites.
All Playwright scripts include --dns-resolution-order=hostname-first via the shared
browser-launcher.js module when DNS_RESOLUTION_ORDER=hostname-first is set.
Gitea Integration
When GITEA_ISSUE is set (via --issue flag or env var), the pipeline posts results to the specified Gitea Issue:
- Comment body: Markdown summary table with metrics, comparison details, errors
- Attachments: Diff screenshots uploaded as issue assets (if any differences found)
- Auth: Uses
GITEA_TOKENenv var orGITEA_USER+GITEA_PASS(see.kilo/shared/gitea-auth.md)
Docker usage
GITEA_ISSUE=42 docker compose -f docker/docker-compose.web-testing.yml up visual-tester
Env vars
| Variable | Required | Description |
|---|---|---|
GITEA_ISSUE |
No | Issue number to post results |
GITEA_TOKEN |
No | Pre-existing API token (else Basic Auth) |
GITEA_API_URL |
No | API base URL (default: https://git.softuniq.eu/api/v1) |
GITEA_REPO |
No | Repository path (default: UniqueSoft/APAW) |
Agent Flow
/web-test <url>
↓
@visual-tester — runs pipeline in Docker
↓
[issues found?]
↓ yes
@the-fixer — fixes UI bugs
↓
@visual-tester — re-runs to verify
Exit Codes
| Code | Meaning |
|---|---|
| 0 | All tests passed |
| 1 | Visual diff > threshold or errors found |
See Also
docker/docker-compose.web-testing.yml— Docker Compose configtests/scripts/visual-test-pipeline.js— Pipeline implementation.kilo/agents/visual-tester.md— Agent definition