auto-sync: 2026-05-04 12:20:01
This commit is contained in:
64
tasks/ui-testing/scripts/run-tests.sh
Normal file
64
tasks/ui-testing/scripts/run-tests.sh
Normal 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"
|
||||
58
tasks/ui-testing/scripts/setup-mva154.sh
Normal file
58
tasks/ui-testing/scripts/setup-mva154.sh
Normal 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/"
|
||||
Reference in New Issue
Block a user