360 Secure SkillHub
360 安全技能中心

qa-browser-tester

该 Skill 在 Linux 服务器或 Docker 容器中检测环境、安装 Playwright 并启动带安全参数的无头 Chromium,按阶段对目标 Web 应用点击按钮、填写表单、走查菜单,最后输出覆盖率、分级缺陷、未测区域、截图清单与评分报告。

melnikdavid
melnikdavid
热度 78.94
最近更新 2026-05-18 12:29:00
分类:开发依赖:代码执行 / 联网浏览搜索 / 读写文件应用场景:调试排错 / 报告撰写 / 自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add qa-browser-tester
Metadata
name
qa-browser-tester
description
Launch a real headless browser on the server and perform exhaustive end-to-end QA testing of a web application — clicking every button, filling every form, navigating every menu, and simulating a complete user journey. Use this skill whenever the user asks to "test the app", "check if everything works", "simulate a user", "run QA", "click through the site", or "browse the website automatically". Also trigger when the user says things like "בדוק את האתר", "תדמה משתמש", or "תבדוק שהכל עובד". Always use this skill — do not attempt browser automation without it, as it contains critical Docker-safe configuration required for Chromium to run on Linux servers.

QA Browser Tester

Exhaustive automated QA testing via headless Chromium browser. Works on bare Linux servers and inside Docker containers.

How to Use This Skill

  1. Read this file fully before starting
  2. Follow the phases IN ORDER — never skip Phase 0 or Phase 1
  3. See references/docker-setup.md for Docker-specific install instructions
  4. See references/test-phases.md for the full test script

PHASE 0 — DETECT ENVIRONMENT

Run these commands and report ALL output before doing anything else:

cat /etc/os-release 2>/dev/null | head -3
cat /proc/1/cgroup | grep -i docker && echo "YES: inside Docker" || echo "not in Docker"
whoami && id
which apt-get apk yum 2>/dev/null || echo "no package manager found"
python3 --version 2>/dev/null || echo "no python3"
pip3 --version 2>/dev/null || echo "no pip3"
node --version 2>/dev/null || echo "no node"
python3 -c "import playwright; print('playwright already installed')" 2>/dev/null || echo "playwright NOT installed"
which chromium chromium-browser google-chrome 2>/dev/null || echo "no browser binary"
df -h / | tail -1
curl -s --max-time 5 https://pypi.org > /dev/null && echo "internet OK" || echo "NO INTERNET"

→ If inside Docker, read references/docker-setup.md before proceeding. → If on bare Linux, continue to Phase 1 directly.


PHASE 1 — INSTALL PLAYWRIGHT

Standard Linux (apt available):

apt-get update -qq && apt-get install -y python3-pip curl -qq
pip3 install playwright
python3 -m playwright install chromium
python3 -m playwright install-deps chromium

Alpine (apk available):

apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont python3 py3-pip
pip3 install playwright
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=$(which chromium-browser || which chromium)
python3 -m playwright install chromium

No package manager / no pip:

curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
python3 /tmp/get-pip.py
pip3 install playwright
python3 -m playwright install chromium
python3 -m playwright install-deps chromium

PHASE 2 — VERIFY BROWSER WORKS

⚠️ CRITICAL: On any Linux server or Docker container, Chromium MUST be launched with these exact flags or it will crash:

--no-sandbox
--disable-dev-shm-usage
--disable-gpu
--disable-setuid-sandbox
--single-process

Run this verification test:

python3 << 'EOF'
from playwright.sync_api import sync_playwright

DOCKER_ARGS = [
    "--no-sandbox",
    "--disable-dev-shm-usage",
    "--disable-gpu",
    "--disable-setuid-sandbox",
    "--single-process",
]

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True, args=DOCKER_ARGS)
    page = browser.new_page()
    page.goto("https://example.com", wait_until="networkidle")
    print(f"✅ Browser OK — title: {page.title()}")
    browser.close()
EOF

✅ SUCCESS → continue to Phase 3 ❌ FAILURE → report exact error, stop, do not proceed


PHASE 3 — RUN EXHAUSTIVE TESTS

Read references/test-phases.md for the complete test script.

Set the target URL before running:

BASE_URL = "https://your-app-url-here.com"   # ← change this

Create screenshot directory:

mkdir -p /tmp/qa_screenshots

PHASE 4 — PRODUCE FINAL REPORT

After tests complete:

ls -la /tmp/qa_screenshots/

Then output this report:

## QA EXHAUSTIVE TEST REPORT
Date/Time: [timestamp]
Target URL: [url]
Environment: Docker / Linux

### COVERAGE
Pages visited:      X
Nav items clicked:  X
Buttons clicked:    X
Forms tested:       X
Edge cases run:     X

### BUGS FOUND

🔴 CRITICAL (broken functionality)
1. [page] — [what happened]

🟡 MEDIUM (works but wrong)
1. [page] — [what happened]

🟢 MINOR (cosmetic / UX)
1. [page] — [what happened]

### UNTESTED AREAS
1. [reason why it couldn't be tested]

### SCREENSHOTS SAVED
[list files in /tmp/qa_screenshots/]

### VERDICT: [X/10] — [one sentence summary]