Skip to main content
ClaudeWave
Skill490 estrellas del repoactualizado 4mo ago

webapp-testing

This Claude Code skill provides a Playwright-based toolkit for automating and testing local web applications written in Python. Use it when you need to verify frontend functionality, debug UI behavior, capture screenshots, or inspect browser logs by writing native Playwright scripts, optionally managed through the included with_server.py helper for applications requiring server startup.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/LeastBit/Claude_skills_zh-CN /tmp/webapp-testing && cp -r /tmp/webapp-testing/skills/webapp-testing ~/.claude/skills/webapp-testing
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# Web 应用程序测试

要测试本地 Web 应用程序,请编写原生的 Python Playwright 脚本。

**可用的辅助脚本**:
- `scripts/with_server.py` - 管理服务器生命周期(支持多服务器)

**务必先运行带有 `--help` 参数的脚本**以查看用法。除非您在尝试运行脚本后发现绝对需要自定义解决方案,否则不要阅读源码。这些脚本可能非常庞大,从而污染您的上下文窗口。它们旨在作为黑盒脚本直接调用,而不是摄入到您的上下文窗口中。

## 决策树:选择您的方法

```
用户任务 → 是静态 HTML 吗?
    ├─ 是 → 直接读取 HTML 文件以识别选择器 (selectors)
    │         ├─ 成功 → 使用选择器编写 Playwright 脚本
    │         └─ 失败/不完整 → 视为动态(见下文)
    │
    └─ 否 (动态 Web 应用) → 服务器是否已在运行?
        ├─ 否 → 运行:python scripts/with_server.py --help
        │        然后使用辅助工具 + 编写简化的 Playwright 脚本
        │
        └─ 是 → 侦察并行动:
            1. 导航并等待 networkidle
            2. 截图或检查 DOM
            3. 从渲染状态中识别选择器 (selectors)
            4. 使用发现的选择器执行操作
```

## 示例:使用 with_server.py

要启动服务器,请先运行 `--help`,然后使用该辅助工具:

**单个服务器:**
```bash
python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
```

**多个服务器(例如,后端 + 前端):**
```bash
python scripts/with_server.py \
  --server "cd backend && python server.py" --port 3000 \
  --server "cd frontend && npm run dev" --port 5173 \
  -- python your_automation.py
```

要创建自动化脚本,仅需包含 Playwright 逻辑(服务器由程序自动管理):
```python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True) # 始终以无头模式启动 chromium
    page = browser.new_page()
    page.goto('http://localhost:5173') # 服务器已在运行并就绪
    page.wait_for_load_state('networkidle') # 关键:等待 JS 执行
    # ... 您的自动化逻辑
    browser.close()
```

## 侦察并行动模式

1. **检查渲染后的 DOM**:
   ```python
   page.screenshot(path='/tmp/inspect.png', full_page=True)
   content = page.content()
   page.locator('button').all()
   ```

2. **从检查结果中识别选择器 (selectors)**

3. **使用发现的选择器执行操作**

## 常见陷阱

❌ **不要**在动态应用等待 `networkidle` 之前检查 DOM
✅ **务必**在检查前等待 `page.wait_for_load_state('networkidle')`

## 最佳实践

- **将捆绑脚本视为黑盒** - 要完成一项任务,请考虑 `scripts/` 中可用的脚本之一是否有所帮助。这些脚本可以可靠地处理常见的复杂工作流,而不会弄乱上下文窗口。使用 `--help` 查看用法,然后直接调用。
- 对同步脚本使用 `sync_playwright()`
- 完成后务必关闭浏览器
- 使用描述性的选择器:`text=`、`role=`、CSS 选择器或 ID
- 添加适当的等待:`page.wait_for_selector()` 或 `page.wait_for_timeout()`

## 参考文件

- **examples/** - 显示常见模式的示例:
  - `element_discovery.py` - 发现页面上的按钮、链接和输入框
  - `static_html_automation.py` - 对本地 HTML 使用 file:// URL
  - `console_logging.py` - 在自动化过程中捕获控制台日志 (console logs)
algorithmic-artSkill

使用 p5.js 创建带有种子随机性和交互式参数探索的算法艺术。当用户请求使用代码创建艺术、生成艺术、算法艺术、流场或粒子系统时使用此技能。创作原创算法艺术,而不是复制现有艺术家的作品,以避免版权侵犯。

brand-guidelinesSkill

将 Anthropic 官方品牌颜色和字体应用于任何可能需要 Anthropic 视觉风格的作品。适用于品牌颜色或样式指南、视觉格式化或公司设计标准的场景。

canvas-designSkill

使用设计哲学创作精美的 .png 和 .pdf 格式视觉艺术作品。当用户要求创作海报、艺术品、设计作品或其他静态作品时,应使用此技能。创作原创视觉设计,切勿复制现有艺术家的作品以避免版权侵权。

doc-coauthoringSkill

引导用户通过结构化的工作流程来协作撰写文档。当用户想要撰写文档、提案、技术规格说明、决策文档或类似的结构化内容时使用。这个工作流程帮助用户高效地传递上下文信息、通过迭代优化内容,并验证文档对读者是否有效。当用户提到撰写文档、创建提案、起草规格说明或类似的文档任务时触发。

docxSkill

全面的文档创建、编辑和分析功能,支持修订追踪、批注、格式保留和文本提取。当 Claude 需要处理专业文档(.docx 文件)时使用:(1) 创建新文档,(2) 修改或编辑内容,(3) 处理修订追踪,(4) 添加批注,或其他任何文档任务

frontend-designSkill

创建独特的、生产级别的高质量前端界面。当用户要求构建网页组件、页面、作品、海报或应用程序时使用此技能(例如网站、落地页、仪表盘、React 组件、HTML/CSS 布局,或对任何网页 UI 进行样式美化)。生成富有创意、精致的代码和 UI 设计,避免千篇一律的 AI 审美。

internal-commsSkill

一套帮助我撰写各类内部沟通文档的资源,使用公司偏好的格式。当被要求撰写任何形式的内部沟通文档(状态报告、领导层更新、3P 更新、公司简报、常见问题解答、事件报告、项目更新等)时,Claude 应使用此技能。

mcp-builderSkill

构建高质量 MCP(模型上下文协议)服务器的指南,使 LLM 能够通过精心设计的工具与外部服务交互。在使用 Python (FastMCP) 或 Node/TypeScript (MCP SDK) 构建 MCP 服务器以集成外部 API 或服务时使用。