Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в домашней папке, перенесены в agents/. Разложено по агентам там, где имя файла позволяло определить автора; остальное — в _salvage-2026-08-18/ и разбирается вручную. Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных рабочих копий: она существовала только на диске. Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.5 KiB
Antigravity: покрыть тестом отдачу консоли из ресурсов сборки
Репозиторий
- https://github.com/ochenstarik-ui/server-monitor-manager
- Ветка:
antigravity/web-console, открытый PR #59 - Работа делается в этом же PR, новый не открывать
mainзащищён: PR обязателен, обязательны статусыbuild-and-testиbuild
Задача
Одна проверка. Ничего в поведении консоли менять не нужно.
GetWebConsoleAsset в src/ServerMonitorManager.Control/Program.cs берёт файл из двух источников по очереди:
- с диска, по пути
IWebHostEnvironment.WebRootPath; - если файла там нет — из ресурсов сборки, через
GetManifestResourceNames()и поиск поEndsWith(fileName).
Тесты поднимают хост в процессе, где WebRootPath существует и файлы лежат на диске. Значит проверяется первая ветка.
Control публикуется с PublishSingleFile=true, каталога wwwroot рядом с исполняемым файлом на сервере нет. Значит на настоящей машине работает вторая ветка — та, которую не проверяет ничто.
Что сделать
Добавить в tests/ServerMonitorManager.Control.Tests/WebConsoleTests.cs тест, который поднимает хост с несуществующим или пустым WebRootPath и убеждается, что при обращении с сертификатом роли Operator:
/,/index.html,/style.cssи/app.jsотвечают кодом 200;Content-Typeсоответствует типу файла;- тело ответа непустое и содержит опознаваемый фрагмент: для HTML — предупреждение о сверке отпечатка, для JS — обращение к
/api/v1/control/agents.
Побочная польза, ради которой это и стоит делать: тест зафиксирует соглашение об именах ресурсов. Поиск идёт через EndsWith(fileName), поэтому переименование каталога wwwroot или смена схемы имён сломает отдачу консоли молча, без ошибки сборки.
Границы
Не трогать: deploy/**, .github/workflows/linux-*.yml, .github/workflows/release-verification.yml, tests/release-verification/**, tests/bootstrap/**.
Ваша область: tests/ServerMonitorManager.Control.Tests/**. Если для подмены WebRootPath потребуется правка в src/ServerMonitorManager.Control/** — допустимо, но опишите зачем.
Критерий приёмки
- тест поднимает хост без каталога
wwwrootна диске и получает все четыре ресурса; - существующие проверки ролей продолжают проходить;
- CI зелёный, PR не смержен до зелёного.
Отчёт
В описании PR. Отдельным файлом отчёт не является.