{"id":"6f7f5ef1-1971-446b-9847-5eea96cad47e","entityType":"agent","slug":"crewai-aisquare-studio-aisquare-studio-qa","name":"AISquare-Studio-QA","canonicalUrl":"https://www.xpersona.co/agent/crewai-aisquare-studio-aisquare-studio-qa","canonicalPath":"/agent/crewai-aisquare-studio-aisquare-studio-qa","generatedAt":"2026-10-08T23:23:13.963Z","source":"GITHUB_OPENCLEW","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":null},"description":"Setting up QA testing agents using playwright and crewAI AISquare Studio AutoQA $1 $1 $1 $1 ai automation testing playwright github-action crewai openai qa test-generation multi-agent **AI-powered GitHub Action that converts natural language test descriptions in pull request bodies into fully automated Playwright tests.** Write what you want to test in plain English — AutoQA generates, executes, and commits production-ready test code using CrewAI multi-agent orchestration","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 167 GitHub stars reported by the source. Last updated 5/31/2026.","installCommand":"git clone https://github.com/AISquare-Studio/AISquare-Studio-QA.git","sourceUrl":"https://github.com/AISquare-Studio/AISquare-Studio-QA","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/AISquare-Studio/AISquare-Studio-QA","kind":"source"}],"safetyScore":75,"overallRank":36.8,"popularityScore":56,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Setting up QA testing agents using playwright and crewAI AISquare Studio AutoQA $1 $1 $1 $1 ai automation testing playwright github-action crewai openai qa test"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"crewai","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"multi-agent","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"}},"adoption":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"medium","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":null},"stars":167,"forks":9,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":"167 GitHub stars"},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":null},"lastUpdatedAt":"2026-05-31T06:18:34.437Z","lastCrawledAt":"2026-05-31T06:18:34.437Z","lastIndexedAt":null,"nextCrawlAt":"2026-06-07T06:18:34.437Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"git clone https://github.com/AISquare-Studio/AISquare-Studio-QA.git","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"GITHUB_OPENCLEW","generatedAt":"2026-10-08T23:23:13.962Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-aisquare-studio-aisquare-studio-qa/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"high","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":null},"readme":"# AISquare Studio AutoQA\n\n[![GitHub Action](https://img.shields.io/badge/GitHub%20Action-AutoQA-2088FF?logo=github-actions&logoColor=white)](https://github.com/AISquare-Studio/AISquare-Studio-QA)\n[![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/)\n[![Playwright](https://img.shields.io/badge/Playwright-Enabled-2EAD33?logo=playwright&logoColor=white)](https://playwright.dev/)\n[![CrewAI](https://img.shields.io/badge/CrewAI-Multi--Agent-FF6B6B)](https://www.crewai.com/)\n\n`ai` `automation` `testing` `playwright` `github-action` `crewai` `openai` `qa` `test-generation` `multi-agent`\n\n**AI-powered GitHub Action that converts natural language test descriptions in pull request bodies into fully automated Playwright tests.** Write what you want to test in plain English — AutoQA generates, executes, and commits production-ready test code using CrewAI multi-agent orchestration and OpenAI GPT-4.\n\n---\n\n## Features\n\n- **AI-Powered Test Generation** — Natural language steps become executable Playwright Python tests\n- **Active Execution Mode** — Iterative step-by-step generation with real-time browser context\n- **Smart Selector Discovery** — Auto-discovers optimal selectors from live pages via DOMInspectorTool\n- **Intelligent Retry** — Automatic error recovery with alternative selectors and failure analysis\n- **AST-Based Security Validation** — Prevents unsafe code patterns before execution\n- **Cross-Repository Architecture** — Deploys as a GitHub Action, runs in any repository\n- **Comprehensive Reporting** — PR comments with screenshots, HTML reports, and JSON artifacts\n- **ETag-Based Idempotency** — Prevents duplicate test generation for unchanged PR descriptions\n- **Multi-Tier Test Organization** — Categorize tests into A/B/C tiers by criticality\n- **Caching Strategy** — Pip and Playwright browser caching for fast CI runs\n\n---\n\n## How It Works\n\n```\nPR Description          AutoQA Action              Your Repository\n┌──────────────┐     ┌──────────────────┐     ┌──────────────────┐\n│  ```autoqa   │     │ 1. Parse PR body │     │ tests/autoqa/    │\n│  flow: login │────▶│ 2. Generate code │────▶│   A/auth/        │\n│  tier: A     │     │ 3. Validate AST  │     │     test_login.py│\n│  area: auth  │     │ 4. Execute tests │     └──────────────────┘\n│  ```         │     │ 5. Commit on pass│\n│              │     │ 6. Comment on PR │\n│  1. Go to /  │     └──────────────────┘\n│  2. Login    │\n│  3. Verify   │\n└──────────────┘\n```\n\n1. A developer writes numbered test steps in the PR description inside a fenced `autoqa` block\n2. The GitHub Action triggers on PR open/edit/sync events\n3. AutoQA parses the PR body for metadata (`flow_name`, `tier`, `area`) and test steps\n4. CrewAI agents generate Playwright Python test code from the steps\n5. Generated code is validated via AST analysis and executed against your staging environment\n6. On success, the test file is committed to `tests/autoqa/{tier}/{area}/test_{flow_name}.py`\n7. Results and screenshots are posted as a PR comment\n\n---\n\n## Quick Start\n\n### 1. Add the workflow\n\nCreate `.github/workflows/autoqa.yml` in your repository:\n\n```yaml\nname: AutoQA Test Generation\n\non:\n  pull_request:\n    types: [opened, synchronize, edited]\n\njobs:\n  autoqa:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Generate and Execute Tests\n        uses: AISquare-Studio/AISquare-Studio-QA@main\n        with:\n          openai-api-key: ${{ secrets.OPENAI_API_KEY }}\n          staging-url: ${{ secrets.STAGING_URL }}\n          staging-email: ${{ secrets.STAGING_EMAIL }}\n          staging-password: ${{ secrets.STAGING_PASSWORD }}\n```\n\n### 2. Configure secrets\n\nAdd the following secrets in your repository's **Settings → Secrets and variables → Actions**:\n\n| Secret             | Description                       |\n| ------------------ | --------------------------------- |\n| `OPENAI_API_KEY`   | OpenAI API key (GPT-4 access)     |\n| `STAGING_URL`      | Staging environment login URL     |\n| `STAGING_EMAIL`    | Test account email                |\n| `STAGING_PASSWORD` | Test account password             |\n\n### 3. Write test steps in a PR\n\nInclude a fenced `autoqa` block in your pull request description:\n\n````markdown\n```autoqa\nflow_name: user_login_success\ntier: A\narea: auth\n```\n\n1. Navigate to the login page\n2. Enter valid email address\n3. Enter valid password\n4. Click the login button\n5. Verify the dashboard appears\n````\n\nOpen the PR and AutoQA takes care of the rest.\n\n---\n\n## PR Format Reference\n\nThe `autoqa` code block defines metadata. Numbered steps below it describe the test scenario.\n\n````markdown\n```autoqa\nflow_name: <snake_case_test_name>\ntier: <A|B|C>\narea: <feature_area>\n```\n\n1. First test step in plain English\n2. Second test step\n3. ...\n````\n\n| Field       | Required | Description                                               |\n| ----------- | -------- | --------------------------------------------------------- |\n| `flow_name` | Yes      | Snake-case identifier used for the generated file name    |\n| `tier`      | Yes      | `A` (critical), `B` (important), or `C` (nice-to-have)   |\n| `area`      | Yes      | Feature area used as subdirectory (e.g., `auth`, `billing`) |\n\n---\n\n## Configuration Reference\n\n### Action Inputs\n\n| Input               | Required | Default          | Description                                       |\n| ------------------- | -------- | ---------------- | ------------------------------------------------- |\n| `openai-api-key`    | **Yes**  | —                | OpenAI API key\n\n| `openai-model` | No | `openai/gpt-4.1` | OpenAI model for test generation (e.g., openai/gpt-4.1, openai/gpt-4o) |                                   |\n| `staging-url`       | **Yes**  | —                | Staging environment URL                           |\n| `qa-github-token`   | No       | `github.token`   | GitHub token (for private repo access)             |\n| `staging-email`     | No       | `test@example.com` | Test account email                              |\n| `staging-password`  | No       | —                | Test account password                             |\n| `target-repo-path`  | No       | `.`              | Path to the target repository                     |\n| `git-user-name`     | No       | `AutoQA Bot`     | Git user name for test commits                    |\n| `git-user-email`    | No       | —                | Git user email for test commits                   |\n| `pr-body`           | No       | *(auto-detected)* | PR description text                              |\n| `test-directory`    | No       | `tests/autoqa`   | Base directory for generated tests                |\n| `create-pr`         | No       | `false`          | Create a PR for tests instead of pushing directly |\n| `execution-mode`    | No       | `generate`       | Execution mode: `generate`, `suite`, or `all`     |\n\n### Action Outputs\n\n| Output                | Description                             |\n| --------------------- | --------------------------------------- |\n| `test_generated`      | Whether a test was generated (`true`/`false`) |\n| `test_file_path`      | Path to the generated test file         |\n| `test_results`        | JSON object with execution results      |\n| `generation_metadata` | JSON object with generation metadata    |\n| `screenshot_path`     | Path to captured screenshots            |\n| `etag`                | Idempotency hash of the PR description  |\n| `flow_name`           | Parsed flow name                        |\n| `tier`                | Parsed tier                             |\n| `area`                | Parsed area                             |\n| `error`               | Error message (if failed)               |\n\n### Execution Modes\n\n| Mode       | Behavior                                                          |\n| ---------- | ----------------------------------------------------------------- |\n| `generate` | Parse PR, generate a new test, execute it, and commit on success  |\n| `suite`    | Run the existing test suite only (regression testing)             |\n| `all`      | Generate a new test **and** run the full existing suite           |\n\n---\n\n## Project Structure\n\n```\nAISquare-Studio-QA/\n├── action.yml                          # GitHub Action definition\n├── qa_runner.py                        # Local test runner entry point\n├── requirements.txt                    # Python dependencies\n├── pyproject.toml                      # Python project configuration\n├── pytest.ini                          # Pytest configuration\n├── env.template                        # Environment variables template\n├── .github/\n│   ├── copilot-instructions.md         # Copilot custom instructions (AI agent reference)\n│   └── workflows/                      # CI/CD workflows (lint, test, release)\n├── config/\n│   ├── autoqa_config.yaml              # AutoQA policy and settings\n│   └── test_data.yaml                  # Test scenarios and selectors\n├── src/\n│   ├── agents/\n│   │   ├── planner_agent.py            # Generates Playwright code via CrewAI\n│   │   ├── executor_agent.py           # Validates and executes code (AST safety)\n│   │   └── step_executor_agent.py      # Active execution step agent\n│   ├── autoqa/\n│   │   ├── action_runner.py            # Main GitHub Action orchestrator\n│   │   ├── parser.py                   # PR body metadata parser\n│   │   ├── action_reporter.py          # PR comment generator\n│   │   └── cross_repo_manager.py       # Test file commits across repos\n│   ├── crews/\n│   │   └── qa_crew.py                  # CrewAI agent orchestration\n│   ├── execution/\n│   │   ├── iterative_orchestrator.py   # Step-by-step execution coordinator\n│   │   ├── execution_context.py        # State tracking between steps\n│   │   └── retry_handler.py            # Failure analysis and retry logic\n│   ├── tools/\n│   │   ├── playwright_executor.py      # Test code execution engine\n│   │   └── dom_inspector.py            # Live page selector discovery\n│   ├── templates/\n│   │   └── test_execution_template.py  # Execution template\n│   └── utils/\n│       ├── logger.py                   # GitHub Actions-aware logging\n│       ├── github_comment_client.py    # GitHub API client\n│       ├── comment_builder.py          # Markdown comment builder\n│       ├── screenshot_handler.py       # Screenshot capture\n│       └── screenshot_embed_manager.py # Screenshot embedding\n├── tests/                              # Pytest test suites\n├── docs/                               # Documentation\n├── examples/                           # Example workflows and configs\n├── reports/                            # Generated test artifacts\n└── scripts/                            # Utility scripts\n```\n\n---\n\n## Local Development\n\n### Prerequisites\n\n- Python 3.11+\n- An OpenAI API key with GPT-4 access\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/AISquare-Studio/AISquare-Studio-QA.git\ncd AISquare-Studio-QA\n\n# Install dependencies\npip install -r requirements.txt\nplaywright install --with-deps chromium\n\n# Configure environment\ncp env.template .env\n# Edit .env with your staging URL, credentials, and OpenAI API key\n```\n\n### Running locally\n\n```bash\n# Run the test runner\npython qa_runner.py\n\n# Run with visible browser for debugging\nHEADLESS_MODE=false python qa_runner.py\n\n# Show detailed help\npython qa_runner.py --help-detailed\n```\n\n### Running the test suite\n\n```bash\npytest tests/ -v\n```\n\n---\n\n## Architecture\n\nAutoQA uses a multi-agent architecture powered by [CrewAI](https://www.crewai.com/):\n\n- **Planner Agent** — Converts natural language steps into Playwright Python code\n- **Executor Agent** — Validates generated code via AST analysis and runs it in a sandboxed browser\n- **Step Executor Agent** — Handles Active Execution Mode, processing one step at a time with live browser context\n\nThe **Iterative Orchestrator** coordinates step-by-step execution, maintaining state via `ExecutionContext` and handling failures through `RetryHandler`.\n\nFor a detailed architecture walkthrough, see [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).\n\n---\n\n## Security\n\nAll AI-generated code is validated before execution:\n\n- **AST-based validation** — Blocks dangerous constructs (`eval`, `exec`, `open`, `subprocess`, file I/O)\n- **Restricted imports** — Only `playwright.sync_api`, `time`, `datetime`, and `re` are permitted\n- **Sandboxed execution** — Tests run in isolated Playwright browser contexts\n- **Secret redaction** — Sensitive values are masked in logs and reports\n\nSee the [Security Model](docs/ARCHITECTURE.md#security-model) section in the architecture documentation for details.\n\n---\n\n## Performance and Caching\n\nAutoQA caches dependencies to minimize CI run times:\n\n| Layer                 | Cache Key                       | Typical Size |\n| --------------------- | ------------------------------- | ------------ |\n| Python pip packages   | Hash of `requirements.txt`      | ~200 MB      |\n| Playwright browsers   | Playwright version              | ~100 MB      |\n| Action repository     | Commit SHA                      | ~5 MB        |\n\n| Scenario  | Approximate Time |\n| --------- | ---------------- |\n| Cold run  | 3–4 minutes      |\n| Warm run  | 45–60 seconds    |\n\nCaches automatically invalidate when `requirements.txt` changes.\n\n---\n\n## Code Quality and Linting\n\nThe project enforces consistent style via automated tooling:\n\n| Tool      | Purpose                       | Configuration          |\n| --------- | ----------------------------- | ---------------------- |\n| **black** | Code formatting               | Line length: 100       |\n| **isort** | Import sorting                | Black-compatible profile |\n| **flake8**| PEP 8 compliance              | Standard rules         |\n\nThe `lint.yml` workflow runs on every push and pull request, auto-fixing formatting issues.\n\n```bash\n# Run locally\nblack . --line-length=100\nisort . --profile=black --line-length=100\nflake8 .\n```\n\n---\n\n## Roadmap\n\nSee [`docs/AUTOQA_ENHANCEMENT_ROADMAP.md`](docs/AUTOQA_ENHANCEMENT_ROADMAP.md) for the full enhancement roadmap, including 16 feature proposals inspired by [Lucent AI](https://lucenthq.com/) and [Meticulous AI](https://www.meticulous.ai/) covering AI-generated test criteria from code diffs, visual regression detection, self-healing tests, automatic bug reports, and more.\n\nFor open-source readiness status, see [`docs/OPEN_SOURCE_ROADMAP.md`](docs/OPEN_SOURCE_ROADMAP.md).\n\n---\n\n## Contributing\n\nContributions are welcome! Please see [`CONTRIBUTING.md`](CONTRIBUTING.md) for guidelines.\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes with tests\n4. Ensure linting passes (`black`, `isort`, `flake8`)\n5. Submit a pull request\n\nPlease review the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) before contributing.\n\n> **AI agent sessions:** This repository includes a\n> [`.github/copilot-instructions.md`](.github/copilot-instructions.md) file that\n> GitHub Copilot reads automatically. It contains architecture reference, version\n> tables, and a mandatory session checklist (update CHANGELOG, README, examples, etc.).\n\n---\n\n## License\n\nThis project is licensed under the [Apache License 2.0](LICENSE).\n\nCopyright 2025 AISquare Studio\n\n---\n\n## Contributors\n\n<!-- ALL-CONTRIBUTORS-BOARD -->\n| Avatar | Name | Role |\n| ------ | ---- | ---- |\n| 🤖 | **AutoQA Bot** | Automation |\n| 👩‍💻 | **Zahwah** | Contributor |\n| 👩‍💼 | **Rabia** | Maintainer |\n<!-- END ALL-CONTRIBUTORS-BOARD -->\n\n---\n\nBuilt by **AISquare Studio**\n","readmeExcerpt":"AISquare Studio AutoQA $1 $1 $1 $1 ai automation testing playwright github-action crewai openai qa test-generation multi-agent **AI-powered GitHub Action that converts natural language test descriptions in pull request bodies into fully automated Playwright tests.** Write what you want to test in plain English — AutoQA generates, executes, and commits production-ready test code using CrewAI multi-agent orchestration ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"PR Description          AutoQA Action              Your Repository\n┌──────────────┐     ┌──────────────────┐     ┌──────────────────┐\n│"},{"language":"text","snippet":"1. A developer writes numbered test steps in the PR description inside a fenced `autoqa` block\n2. The GitHub Action triggers on PR open/edit/sync events\n3. AutoQA parses the PR body for metadata (`flow_name`, `tier`, `area`) and test steps\n4. CrewAI agents generate Playwright Python test code from the steps\n5. Generated code is validated via AST analysis and executed against your staging environment\n6. On success, the test file is committed to `tests/autoqa/{tier}/{area}/test_{flow_name}.py`\n7. Results and screenshots are posted as a PR comment\n\n---\n\n## Quick Start\n\n### 1. Add the workflow\n\nCreate `.github/workflows/autoqa.yml` in your repository:"},{"language":"text","snippet":"### 2. Configure secrets\n\nAdd the following secrets in your repository's **Settings → Secrets and variables → Actions**:\n\n| Secret             | Description                       |\n| ------------------ | --------------------------------- |\n| `OPENAI_API_KEY`   | OpenAI API key (GPT-4 access)     |\n| `STAGING_URL`      | Staging environment login URL     |\n| `STAGING_EMAIL`    | Test account email                |\n| `STAGING_PASSWORD` | Test account password             |\n\n### 3. Write test steps in a PR\n\nInclude a fenced `autoqa` block in your pull request description:"},{"language":"autoqa","snippet":"flow_name: user_login_success\ntier: A\narea: auth"},{"language":"text","snippet":"Open the PR and AutoQA takes care of the rest.\n\n---\n\n## PR Format Reference\n\nThe `autoqa` code block defines metadata. Numbered steps below it describe the test scenario."},{"language":"autoqa","snippet":"flow_name: <snake_case_test_name>\ntier: <A|B|C>\narea: <feature_area>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB OPENCLEW","editorialOverview":"Setting up QA testing agents using playwright and crewAI AISquare Studio AutoQA $1 $1 $1 $1 ai automation testing playwright github-action crewai openai qa test-generation multi-agent **AI-powered GitHub Action that converts natural language test descriptions in pull request bodies into fully automated Playwright tests.** Write what you want to test in plain English — AutoQA generates, executes, and commits production-ready test code using CrewAI multi-agent orchestration","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":381,"uniquenessScore":65,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-05-31T06:18:34.437Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-08T23:23:13.963Z","emptyReason":null},"items":[{"id":"959108e7-5f7c-45ac-bea0-9ab67f017226","entityType":"agent","canonicalPath":"/agent/langchain-x1pay-langchain","slug":"langchain-x1pay-langchain","name":"@x1pay/langchain","description":"LangChain/LangGraph tools for AI agent x402 payments on X1","url":"https://www.npmjs.com/package/@x1pay/langchain","homepage":null,"source":"GITHUB_OPENCLEW","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":70,"overallRank":65,"updatedAt":"2026-06-01T00:29:07.099Z","createdAt":"2026-05-23T06:52:58.553Z","downloads":null},{"id":"4f8f8f95-34f7-49a9-b516-391d1c355d6c","entityType":"agent","canonicalPath":"/agent/langchain-langchain-langgraph-swarm","slug":"langchain-langchain-langgraph-swarm","name":"@langchain/langgraph-swarm","description":"An implementation of a multi-agent swarm using LangGraph","url":"git+ssh://git@github.com/langchain-ai/langgraphjs.git","homepage":"https://github.com/langchain-ai/langgraphjs#readme","source":"GITHUB_OPENCLEW","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":70,"overallRank":65,"updatedAt":"2026-06-01T00:29:03.792Z","createdAt":"2026-05-23T06:52:55.396Z","downloads":null},{"id":"e36fd59b-38d7-4e73-aa20-c1431a8f7434","entityType":"agent","canonicalPath":"/agent/langchain-langchain-langgraph-supervisor","slug":"langchain-langchain-langgraph-supervisor","name":"@langchain/langgraph-supervisor","description":"LangGraph Multi-Agent Supervisor","url":"git+ssh://git@github.com/langchain-ai/langgraphjs.git","homepage":"https://github.com/langchain-ai/langgraphjs#readme","source":"GITHUB_OPENCLEW","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":70,"overallRank":65,"updatedAt":"2026-06-01T00:29:03.756Z","createdAt":"2026-05-23T06:52:55.353Z","downloads":null},{"id":"d1d0f93e-b722-4791-9bbf-2532470054c2","entityType":"agent","canonicalPath":"/agent/langchain-oceanbus-langchain","slug":"langchain-oceanbus-langchain","name":"oceanbus-langchain","description":"LangChain tools for OceanBus — give your LangChain and CrewAI agents a global identity, encrypted messaging, and Yellow Pages service discovery with a single import.","url":"git+https://github.com/oceanbus/oceanbus.git","homepage":"https://github.com/oceanbus/oceanbus#readme","source":"GITHUB_OPENCLEW","protocols":["OPENCLAW"],"capabilities":["oceanbus","langchain","langchain-tools","agent-to-agent","ai-agent","communication","messaging","e2ee","structured-tool","yellow-pages","service-discovery","reputation","crewai"],"safetyScore":70,"overallRank":65,"updatedAt":"2026-06-01T00:29:02.595Z","createdAt":"2026-05-23T06:52:54.240Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_openclew","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}