feat: закрыть остаточный backlog
- keyset-пагинация аудита с курсором (occurred_at, id) и UI «Показать ещё» - пакетный /api/v1/labs/details и переход progress на один запрос - абсолютный потолок сессии 30 дней (identity V12 + web), очистка refresh - админская инвентаризация legacy-активов (/admin/legacy-assets, скрипт) - E2E в Chromium/Firefox/WebKit (18/18), CI preflight - LDD: 51 claim, 346 тестов, docs и handoff обновлены
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# LDD browser E2E: полный стек + Playwright (Chromium) на одноразовой БД.
|
||||
# LDD browser E2E: полный стек + Playwright (Chromium/Firefox/WebKit) на одноразовой БД.
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
@@ -11,6 +11,47 @@ E2E_STATUS=1
|
||||
|
||||
log() { echo ">> $*"; }
|
||||
|
||||
playwright_version() {
|
||||
(cd e2e && node -p "require('@playwright/test/package.json').version" 2>/dev/null || true)
|
||||
}
|
||||
|
||||
host_playwright_usable() {
|
||||
# WebKit на Fedora часто не запускается из-за Ubuntu-специфичных libicu/libjpeg;
|
||||
# проверяем все три браузера, чтобы fallback сработал и при нехватке lib для Firefox.
|
||||
(cd e2e && node -e '
|
||||
const { chromium, firefox, webkit } = require("playwright");
|
||||
(async () => {
|
||||
for (const type of [chromium, firefox, webkit]) {
|
||||
const browser = await type.launch();
|
||||
await browser.close();
|
||||
}
|
||||
})().catch(() => process.exit(1));
|
||||
') >/dev/null 2>&1
|
||||
}
|
||||
|
||||
ensure_playwright_browsers() {
|
||||
local browser detected missing=()
|
||||
# Проверяем точные пути браузеров текущей версии Playwright, а не кэш целиком.
|
||||
if ! detected=$(cd e2e && node -e '
|
||||
const fs = require("fs");
|
||||
const { chromium, firefox, webkit } = require("playwright");
|
||||
for (const [name, type] of [["chromium", chromium], ["firefox", firefox], ["webkit", webkit]]) {
|
||||
if (!fs.existsSync(type.executablePath())) console.log(name);
|
||||
}
|
||||
' 2>/dev/null); then
|
||||
detected=$'chromium\nfirefox\nwebkit'
|
||||
fi
|
||||
while IFS= read -r browser; do
|
||||
[[ -n "$browser" ]] && missing+=("$browser")
|
||||
done <<<"$detected"
|
||||
if ((${#missing[@]} == 0)); then
|
||||
log "Браузеры Playwright уже установлены (Chromium/Firefox/WebKit)."
|
||||
return
|
||||
fi
|
||||
log "Устанавливаю браузеры Playwright: ${missing[*]}; системные зависимости ставит CI."
|
||||
(cd e2e && npx playwright install --no-progress "${missing[@]}")
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
local code=$?
|
||||
if ((STACK_STARTED)); then
|
||||
@@ -68,15 +109,34 @@ STACK_STARTED=1
|
||||
./run.sh start
|
||||
|
||||
mkdir -p build/evidence
|
||||
log "Запускаю Playwright..."
|
||||
ensure_playwright_browsers
|
||||
set +e
|
||||
(
|
||||
cd e2e
|
||||
LDD_WEB_URL="http://localhost:8090" \
|
||||
LDD_API_URL="http://localhost:8080" \
|
||||
npx playwright test --config=playwright.config.ts
|
||||
)
|
||||
E2E_STATUS=$?
|
||||
if host_playwright_usable; then
|
||||
log "Запускаю Playwright на хосте (Chromium/Firefox/WebKit)..."
|
||||
(
|
||||
cd e2e
|
||||
LDD_WEB_URL="http://localhost:8090" \
|
||||
LDD_API_URL="http://localhost:8080" \
|
||||
npx playwright test --config=playwright.config.ts
|
||||
)
|
||||
E2E_STATUS=$?
|
||||
else
|
||||
version=$(playwright_version)
|
||||
if [[ -z "$version" ]]; then
|
||||
echo "WebKit не запускается на хосте, а версию Playwright определить не удалось." >&2
|
||||
E2E_STATUS=1
|
||||
else
|
||||
log "WebKit не запускается на хосте; запускаю Chromium/Firefox/WebKit в Docker-образе Playwright ${version}."
|
||||
docker run --rm --network host \
|
||||
-v "$PWD:/work" \
|
||||
-w /work/e2e \
|
||||
-e LDD_WEB_URL="http://localhost:8090" \
|
||||
-e LDD_API_URL="http://localhost:8080" \
|
||||
"mcr.microsoft.com/playwright:v${version}-noble" \
|
||||
npx playwright test --config=playwright.config.ts
|
||||
E2E_STATUS=$?
|
||||
fi
|
||||
fi
|
||||
set -e
|
||||
|
||||
python3 - "$E2E_STATUS" <<'PY'
|
||||
|
||||
Reference in New Issue
Block a user