auto-sync: 2026-05-04 12:20:01

This commit is contained in:
Stream
2026-05-04 12:20:17 +03:00
parent 73f213b7a4
commit 4836421910
6 changed files with 1012 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
#!/bin/bash
# run-tests.sh — запуск UI-тестов через ssh_exec.sh
# Использование: bash tasks/ui-testing/scripts/run-tests.sh <test-file> [project-name]
#
# Пример:
# bash tasks/ui-testing/scripts/run-tests.sh enduro-phase3 enduro-trails
set -e
SKILL=~/.openclaw/skills/installer/scripts
TEST_NAME=${1:-"template"}
PROJECT=${2:-"ui-testing"}
WORKSPACE=/home/node/.openclaw/workspace
TESTS_DIR=$WORKSPACE/tasks/ui-testing/tests
SCREENSHOTS_DIR=$WORKSPACE/tasks/$PROJECT/screenshots
REPORTS_DIR=$WORKSPACE/tasks/$PROJECT/reports
REMOTE_DIR=/home/slin/ui-tests
echo "==> Запуск UI-тестов: $TEST_NAME (проект: $PROJECT)"
echo "==> Скриншоты: $SCREENSHOTS_DIR"
mkdir -p "$SCREENSHOTS_DIR" "$REPORTS_DIR"
# 1. Копируем тест на сервер
echo "==> Копируем тест на mva154..."
TEST_CONTENT=$(cat "$TESTS_DIR/${TEST_NAME}.js")
$SKILL/ssh_exec.sh --host mva154 --cmd "mkdir -p $REMOTE_DIR/tests $REMOTE_DIR/screenshots && cat > $REMOTE_DIR/tests/${TEST_NAME}.js << 'ENDOFTEST'
$TEST_CONTENT
ENDOFTEST" --timeout 30
# 2. Запускаем тест
echo "==> Запускаем тест на сервере..."
CHROME_BIN=$($SKILL/ssh_exec.sh --host mva154 --cmd "which chromium-browser 2>/dev/null || which chromium 2>/dev/null || echo /usr/bin/chromium-browser" --timeout 10 | tail -1)
$SKILL/ssh_exec.sh --host mva154 --cmd "
cd $REMOTE_DIR && \
CHROME_BIN=$CHROME_BIN \
SCREENSHOTS_DIR=$REMOTE_DIR/screenshots \
RESULTS_FILE=$REMOTE_DIR/results.json \
node tests/${TEST_NAME}.js 2>&1
" --timeout 180
# 3. Копируем скриншоты обратно
echo "==> Копируем скриншоты..."
SCREENSHOTS=$($SKILL/ssh_exec.sh --host mva154 --cmd "ls $REMOTE_DIR/screenshots/*.png 2>/dev/null || echo ''" --timeout 10)
if [ -n "$SCREENSHOTS" ]; then
for f in $SCREENSHOTS; do
FNAME=$(basename "$f")
$SKILL/ssh_exec.sh --host mva154 --cmd "cat $f | base64" --timeout 30 | base64 -d > "$SCREENSHOTS_DIR/$FNAME"
echo " 📸 $FNAME"
done
echo "==> Скриншоты сохранены: $SCREENSHOTS_DIR"
else
echo "==> Скриншоты не найдены"
fi
# 4. Копируем результаты
RESULTS=$($SKILL/ssh_exec.sh --host mva154 --cmd "cat $REMOTE_DIR/results.json 2>/dev/null || echo '{}'" --timeout 10)
echo "$RESULTS" > "$REPORTS_DIR/${TEST_NAME}-results.json"
echo "==> Результаты: $REPORTS_DIR/${TEST_NAME}-results.json"
echo ""
echo "✅ Готово. Скриншоты в: $SCREENSHOTS_DIR"

View File

@@ -0,0 +1,58 @@
#!/bin/bash
# setup-mva154.sh — установка UI-тестового окружения на mva154
# Запускать через: ssh_exec.sh --host mva154 --cmd "bash /home/slin/ui-tests/scripts/setup-mva154.sh" --timeout 300
set -e
echo "==> Проверяем Node.js..."
node --version || { echo "Node.js не найден, устанавливаем..."; curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -S bash -; sudo apt-get install -y nodejs; }
echo "==> Проверяем Chromium..."
which chromium-browser || which chromium || {
echo "Chromium не найден, устанавливаем..."
sudo apt-get update -qq
sudo apt-get install -y chromium-browser
}
CHROME_BIN=$(which chromium-browser 2>/dev/null || which chromium 2>/dev/null)
echo "==> Chromium: $CHROME_BIN"
$CHROME_BIN --version
echo "==> Создаём директории..."
mkdir -p /home/slin/ui-tests/{scripts,tests,screenshots,reports}
echo "==> Устанавливаем puppeteer-core..."
cd /home/slin/ui-tests
cat > package.json << 'EOF'
{
"name": "ui-tests",
"version": "1.0.0",
"dependencies": {
"puppeteer-core": "^22.0.0"
}
}
EOF
npm install --quiet
echo "==> Проверочный тест..."
node -e "
const puppeteer = require('puppeteer-core');
const CHROME = process.env.CHROME_BIN || '$(which chromium-browser 2>/dev/null || which chromium 2>/dev/null)';
(async () => {
const browser = await puppeteer.launch({
executablePath: CHROME,
headless: 'new',
args: ['--no-sandbox','--disable-setuid-sandbox','--disable-dev-shm-usage']
});
const page = await browser.newPage();
await page.goto('about:blank');
console.log('Browser OK:', await browser.version());
await browser.close();
})().catch(e => { console.error('FAIL:', e.message); process.exit(1); });
"
echo ""
echo "✅ Окружение готово!"
echo " Node: $(node --version)"
echo " Chrome: $($CHROME_BIN --version)"
echo " Dir: /home/slin/ui-tests/"