Community연구 & 데이터 분석github.com

Web Application Testing (웹 애플리케이션 테스팅)

Playwright를 사용하여 로컬 웹 애플리케이션과 상호작용하고 테스트하기 위한 툴킷입니다. 프론트엔드 기능 확인, UI 동작 디버깅, 브라우저 스크린샷 캡처, 브라우저 로그 확인을 지원합니다.

Web Application Testing (웹 애플리케이션 테스팅)란 무엇인가요?

이 기능은 로컬 웹 애플리케이션을 테스트하고 상호작용하기 위한 포괄적인 툴킷입니다. Playwright를 기반으로 하여 프론트엔드 기능 검증, UI 동작 디버깅, 브라우저 스크린샷 캡처, 콘솔 로그 확인 등을 지원합니다. `scripts/` 디렉토리에 포함된 도우미 스크립트(예: `with_server.py`)를 통해 서버 수명 주기를 관리하며, 단일 또는 다중 서버(예: 백엔드 + 프론트엔드)를 자동으로 시작하고 종료할 수 있습니다. 정적 HTML 파일은 직접 읽어 선택자를 식별하고, 동적 웹 애플리케이션은 '정찰-후-행동(Reconnaissance-then-action)' 패턴을 사용하여 렌더링된 DOM을 검사한 후 적절한 선택자로 작업을 수행합니다. 이 기능은 Playwright 스크립트를 직접 작성할 필요 없이 블랙박스 스크립트를 호출하여 효율적으로 테스트를 수행할 수 있도록 설계되었습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-codex-skills/tree/main/webapp-testing

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Web Application Testing (웹 애플리케이션 테스팅)은(는) 무엇을 하나요?

로컬 웹 애플리케이션을 테스트하려면 기본 Python Playwright 스크립트를 작성하세요.

사용 가능한 도우미 스크립트:

  • scripts/with_server.py - 서버 수명 주기 관리 (다중 서버 지원)

항상 스크립트를 --help와 함께 먼저 실행하여 사용법을 확인하세요. 맞춤형 솔루션이 절대적으로 필요하다고 판단될 때까지 소스 코드를 읽지 마세요. 이 스크립트는 매우 크므로 컨텍스트 창을 오염시킬 수 있습니다. 이들은 컨텍스트 창에 포함되기보다는 블랙박스 스크립트로 직접 호출되기 위해 존재합니다.

의사 결정 트리: 접근 방식 선택

사용자 작업 → 정적 HTML인가?
    ├─ 예 → HTML 파일을 직접 읽어 선택자 식별
    │         ├─ 성공 → 선택자를 사용하여 Playwright 스크립트 작성
    │         └─ 실패/불완전 → 동적(Dynamic)으로 처리 (아래 참조)
    │
    └─ 아니오 (동적 웹앱) → 서버가 이미 실행 중인가?
        ├─ 아니오 → 실행: python scripts/with_server.py --help
        │            그런 다음 도우미를 사용하여 간략화된 Playwright 스크립트 작성
        │
        └─ 예 → 정찰-후-행동:
            1. 탐색 후 네트워크 유휴 상태 대기
            2. 스크린샷 촬영 또는 DOM 검사
            3. 렌더링된 상태에서 선택자 식별
            4. 발견된 선택자로 작업 실행

예시: with_server.py 사용

서버를 시작하려면 먼저 --help를 실행한 다음 도우미를 사용하세요:

단일 서버:

python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py

다중 서버 (예: 백엔드 + 프론트엔드):

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 로직만 포함하세요 (서버는 자동으로 관리됩니다):

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 검사:

    page.screenshot(path='/tmp/inspect.png', full_page=True)
    content = page.content()
    page.locator('button').all()
    
  2. 검사 결과에서 선택자 식별

  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 - 자동화 중 콘솔 로그 캡처

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComposioHQ/-21risk-automation

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/-2chat-automation

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

관련 스킬