{"id":47613157,"url":"https://github.com/zosmaai/zosma-qa","last_synced_at":"2026-04-01T20:49:53.332Z","repository":{"id":345861282,"uuid":"1187660853","full_name":"zosmaai/zosma-qa","owner":"zosmaai","description":"Zero-config QA platform — Playwright, AI agents, and extensible test runners.","archived":false,"fork":false,"pushed_at":"2026-03-21T04:59:51.000Z","size":126,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-21T17:56:22.730Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zosmaai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-21T01:48:21.000Z","updated_at":"2026-03-21T12:07:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zosmaai/zosma-qa","commit_stats":null,"previous_names":["zosmaai/zosma-qa"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/zosmaai/zosma-qa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zosmaai%2Fzosma-qa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zosmaai%2Fzosma-qa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zosmaai%2Fzosma-qa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zosmaai%2Fzosma-qa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zosmaai","download_url":"https://codeload.github.com/zosmaai/zosma-qa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zosmaai%2Fzosma-qa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-01T20:49:52.539Z","updated_at":"2026-04-01T20:49:53.304Z","avatar_url":"https://github.com/zosmaai.png","language":"TypeScript","funding_links":[],"categories":["Harnesses \u0026 orchestration"],"sub_categories":["Agent infrastructure"],"readme":"# zosma-qa\n\n**The open-source QA platform — Web, Mobile, Backend, and Load testing. Zero config. AI-native.**\n\nDrop your tests in. Everything works.\n\n[![CI](https://github.com/zosmaai/zosma-qa/actions/workflows/ci.yml/badge.svg)](https://github.com/zosmaai/zosma-qa/actions/workflows/ci.yml)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![npm: zosma-qa](https://img.shields.io/npm/v/zosma-qa?label=zosma-qa)](https://www.npmjs.com/package/zosma-qa)\n\n---\n\n## What is zosma-qa?\n\nzosma-qa is a unified QA framework that gives you production-ready test infrastructure in minutes — across your entire stack. One CLI, one config, every test type.\n\n| Test Type | Runner | Status |\n|---|---|---|\n| **Web (E2E \u0026 Component)** | Playwright | Available |\n| **Mobile (iOS \u0026 Android)** | Appium + WebdriverIO | Available |\n| **Load \u0026 Performance** | k6 | Available |\n| **Load \u0026 Performance** | Artillery | Planned |\n| **REST API** | Supertest / Pactum | Planned |\n| **Accessibility** | axe-core + Playwright | Planned |\n| **Visual Regression** | Percy / Chromatic | Planned |\n\n### Why zosma-qa?\n\n- **Zero boilerplate** — `npx zosma-qa init`, answer a few questions, start testing\n- **TypeScript and Python** — pick your language at init time\n- **First-class AI agent support** — planner, generator, and healer agents work out of the box\n- **Extensible plugin architecture** — every runner implements a shared `ZosmaPlugin` interface\n- **One command** — `npx zosma-qa run` dispatches to the right runner automatically\n\n---\n\n## Packages\n\n| Package | npm | Description |\n|---|---|---|\n| [`zosma-qa`](packages/zosma-qa/) | [![npm](https://img.shields.io/npm/v/zosma-qa)](https://www.npmjs.com/package/zosma-qa) | CLI entry point (`npx zosma-qa`) |\n| [`@zosmaai/zosma-qa-core`](packages/core/) | [![npm](https://img.shields.io/npm/v/@zosmaai/zosma-qa-core)](https://www.npmjs.com/package/@zosmaai/zosma-qa-core) | Shared types, config loader, plugin interface |\n| [`@zosmaai/zosma-qa-playwright`](packages/playwright/) | [![npm](https://img.shields.io/npm/v/@zosmaai/zosma-qa-playwright)](https://www.npmjs.com/package/@zosmaai/zosma-qa-playwright) | Playwright runner and base config |\n| [`@zosmaai/zosma-qa-cli`](packages/cli/) | [![npm](https://img.shields.io/npm/v/@zosmaai/zosma-qa-cli)](https://www.npmjs.com/package/@zosmaai/zosma-qa-cli) | Interactive CLI with prompts |\n| [`@zosmaai/zosma-qa-appium`](packages/appium/) | [![npm](https://img.shields.io/npm/v/@zosmaai/zosma-qa-appium)](https://www.npmjs.com/package/@zosmaai/zosma-qa-appium) | Appium mobile testing runner |\n| [`@zosmaai/zosma-qa-k6`](packages/k6/) | [![npm](https://img.shields.io/npm/v/@zosmaai/zosma-qa-k6)](https://www.npmjs.com/package/@zosmaai/zosma-qa-k6) | k6 load testing runner |\n\n---\n\n## Quick Start\n\n### Web Testing (Playwright)\n\n```bash\nnpx zosma-qa init\n# Choose: TypeScript → enter your base URL → pick browsers → set up AI agents\nnpx zosma-qa run\nnpx zosma-qa report\n```\n\n**Or install as a dependency in an existing project:**\n\n```bash\nnpm install -D @zosmaai/zosma-qa-playwright @playwright/test\n```\n\n```typescript\n// playwright.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-playwright';\n\nexport default defineConfig({\n  use: { baseURL: 'https://www.myapp.com' },\n  browsers: ['chromium', 'firefox'],\n});\n```\n\nSee the full guide: [Getting Started with Playwright](docs/GETTING_STARTED_PLAYWRIGHT.md)\n\n---\n\n### Mobile Testing (Appium)\n\nTest iOS and Android apps with a Playwright-like API:\n\n```bash\nnpm install -D @zosmaai/zosma-qa-appium\n```\n\n```typescript\n// tests/login.appium.ts\nimport { test } from '@zosmaai/zosma-qa-appium';\nimport { tapButton, fillInput, expectText } from '@zosmaai/zosma-qa-appium';\n\ntest.describe('Login Flow', () =\u003e {\n  test('should login with valid credentials', async ({ driver }) =\u003e {\n    await fillInput(driver, 'user@example.com', { testID: 'email-input' });\n    await fillInput(driver, 'password123', { testID: 'password-input' });\n    await tapButton(driver, { testID: 'login-button' });\n    await expectText(driver, 'Welcome back');\n  });\n});\n```\n\n```typescript\n// zosma.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-core';\n\nexport default defineConfig({\n  plugins: ['appium'],\n  baseURL: 'localhost',\n  browsers: ['chromium'],\n});\n```\n\nSee the full guide: [Getting Started with Appium](docs/GETTING_STARTED_APPIUM.md)\n\n---\n\n### Python (pytest-playwright)\n\n```bash\nnpx zosma-qa init\n# Choose: Python\n```\n\nIf [uv](https://docs.astral.sh/uv/) is installed, `pytest-playwright` is installed automatically. Otherwise the CLI prints setup instructions.\n\n```bash\nplaywright install\nnpx zosma-qa run        # auto-detects uv.lock → uses `uv run pytest`\n```\n\nScaffolded files:\n\n```\ntests/test_seed.py   ← seed test with page fixture\nconftest.py          ← shared fixtures\npyproject.toml       ← pytest config + pytest-playwright dependency\nzosma.config.ts      ← plugins: ['pytest']\n```\n\n---\n\n### Load Testing (k6)\n\n```bash\nnpm install -D @zosmaai/zosma-qa-k6\n```\n\n```typescript\n// zosma.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-core';\n\nexport default defineConfig({\n  plugins: ['k6'],\n  testDir: './k6',\n  baseURL: 'http://localhost:3000',\n});\n```\n\nWrite k6 scripts in `./k6/` (e.g. `smoke.k6.js`) or let the runner auto-generate them from endpoint configs.\n\n```bash\nnpx zosma-qa run\n```\n\nSee the full guide: [Getting Started with Load Testing](docs/GETTING_STARTED_LOAD_TESTING.md)\n\n---\n\n## CLI Reference\n\n| Command | Description |\n|---|---|\n| `npx zosma-qa init` | Interactive scaffold — language, baseURL, browsers, AI agents |\n| `npx zosma-qa run` | Run all tests (auto-detects runner from config) |\n| `npx zosma-qa run --grep \"checkout\"` | Run tests matching a pattern |\n| `npx zosma-qa run --headed` | Run in headed (visible) browser mode |\n| `npx zosma-qa run --project firefox` | TypeScript only — run a specific browser project |\n| `npx zosma-qa agents init` | Set up Playwright AI agent definitions (TypeScript only) |\n| `npx zosma-qa report` | Open the HTML report in the browser |\n\n---\n\n## AI Agents\n\nzosma-qa integrates with Playwright's built-in AI agents: **planner**, **generator**, and **healer**.\n\n\u003e AI agent scaffolding is currently TypeScript-only. Python projects can still use AI tools directly with `tests/test_seed.py` as the entry point.\n\n### Setup\n\n```bash\nnpx zosma-qa agents init\n# Prompts: OpenCode (default) / Claude Code / VS Code\n```\n\n### Usage\n\n```\nUse the planner agent. Seed: tests/seed.spec.ts.\nGenerate a plan for the guest checkout flow.\n```\n\n```\nUse the generator agent with specs/checkout.md\n```\n\n```\nUse the healer agent on tests/checkout/add-to-cart.spec.ts\n```\n\nAgent definitions are stored in `.github/agents/` following Playwright conventions.\n\n---\n\n## Examples\n\n### Web: testing zosma.ai\n\nA complete Playwright test suite is in [`examples/zosma-ai/`](examples/zosma-ai/):\n\n| Test file | What it tests |\n|---|---|\n| `tests/seed.spec.ts` | Homepage loads, brand visible — AI agent entry point |\n| `tests/home.spec.ts` | Hero, nav, CTA, How It Works, FAQ, footer |\n| `tests/about.spec.ts` | Team cards, Our Story, Our Values |\n| `tests/openzosma.spec.ts` | Product page, GitHub links, tech stack |\n| `tests/contact.spec.ts` | Full form fill + submit (network mocked) |\n\n```bash\npnpm test:examples\n```\n\n### Mobile: Appium demo\n\nA sample Appium test project is in [`examples/appium-demo/`](examples/appium-demo/). It demonstrates test structure, fixtures, and agent-friendly helpers for React Native apps.\n\n```bash\ncd examples/appium-demo\ncat tests/login.appium.ts\n```\n\nSee the [example README](examples/appium-demo/README.md) for prerequisites and setup.\n\n---\n\n## Configuration\n\n### TypeScript projects (Playwright)\n\n```typescript\n// playwright.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-playwright';\n\nexport default defineConfig({\n  use: { baseURL: process.env.BASE_URL ?? 'http://localhost:3000' },\n  browsers: ['chromium', 'firefox', 'webkit'],\n});\n```\n\n```typescript\n// zosma.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-core';\n\nexport default defineConfig({\n  plugins: ['playwright'],\n  testDir: './tests',\n  baseURL: 'http://localhost:3000',\n  browsers: ['chromium'],\n});\n```\n\n### Mobile projects (Appium)\n\n```typescript\n// zosma.config.ts\nimport { defineConfig } from '@zosmaai/zosma-qa-core';\n\nexport default defineConfig({\n  plugins: ['appium'],\n  baseURL: 'localhost',\n  browsers: ['chromium'],\n});\n```\n\n### Python projects\n\n```toml\n# pyproject.toml\n[tool.pytest.ini_options]\ntestpaths = [\"tests\"]\nbase_url = \"http://localhost:3000\"\naddopts = \"--browser chromium\"\n```\n\n---\n\n## Monorepo Structure\n\n```\nzosma-qa/\n├── packages/\n│   ├── core/          @zosmaai/zosma-qa-core        — types, config, plugin interface\n│   ├── playwright/    @zosmaai/zosma-qa-playwright   — Playwright runner + base config\n│   ├── appium/        @zosmaai/zosma-qa-appium       — Appium mobile runner + test helpers\n│   ├── k6/            @zosmaai/zosma-qa-k6           — k6 load testing runner\n│   ├── cli/           @zosmaai/zosma-qa-cli          — interactive CLI\n│   └── zosma-qa/      zosma-qa                       — CLI entry point wrapper\n├── templates/\n│   ├── playwright/                — TypeScript scaffold\n│   └── playwright-python/        — Python scaffold\n├── examples/\n│   ├── zosma-ai/                  — Playwright tests against zosma.ai\n│   └── appium-demo/               — Appium mobile test examples\n├── tests/                         — your tests go here\n├── specs/                         — AI planner output\n├── .github/\n│   ├── agents/                    — Playwright agent definitions\n│   └── workflows/                 — CI/CD (ci.yml, release.yml)\n└── docs/\n```\n\n---\n\n## Docs\n\n### Getting Started Guides\n\n- [Getting Started with Playwright](docs/GETTING_STARTED_PLAYWRIGHT.md) — web \u0026 component testing\n- [Getting Started with Appium](docs/GETTING_STARTED_APPIUM.md) — iOS \u0026 Android mobile testing\n- [Getting Started with Load Testing](docs/GETTING_STARTED_LOAD_TESTING.md) — k6 \u0026 Artillery (planned)\n\n### Reference\n\n- [Architecture](docs/ARCHITECTURE.md)\n- [Getting Started (General)](docs/GETTING_STARTED.md)\n- [Vision \u0026 Roadmap](docs/VISION.md)\n\n---\n\n## Contributing\n\nContributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting a PR.\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzosmaai%2Fzosma-qa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzosmaai%2Fzosma-qa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzosmaai%2Fzosma-qa/lists"}