ghostqa 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. ghostqa-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +83 -0
  2. ghostqa-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +51 -0
  3. ghostqa-0.1.0/.github/pull_request_template.md +25 -0
  4. ghostqa-0.1.0/.github/workflows/ci.yml +51 -0
  5. ghostqa-0.1.0/.github/workflows/publish.yml +31 -0
  6. ghostqa-0.1.0/.gitignore +57 -0
  7. ghostqa-0.1.0/CONTRIBUTING.md +94 -0
  8. ghostqa-0.1.0/LICENSE +21 -0
  9. ghostqa-0.1.0/PKG-INFO +63 -0
  10. ghostqa-0.1.0/README.md +27 -0
  11. ghostqa-0.1.0/SECURITY.md +58 -0
  12. ghostqa-0.1.0/examples/journeys/demo-onboarding.yaml +35 -0
  13. ghostqa-0.1.0/examples/personas/alex-developer.yaml +18 -0
  14. ghostqa-0.1.0/examples/products/demo.yaml +12 -0
  15. ghostqa-0.1.0/pyproject.toml +75 -0
  16. ghostqa-0.1.0/src/ghostqa/__init__.py +3 -0
  17. ghostqa-0.1.0/src/ghostqa/__main__.py +5 -0
  18. ghostqa-0.1.0/src/ghostqa/cli/__init__.py +1 -0
  19. ghostqa-0.1.0/src/ghostqa/cli/app.py +92 -0
  20. ghostqa-0.1.0/src/ghostqa/cli/config_cmd.py +242 -0
  21. ghostqa-0.1.0/src/ghostqa/cli/dashboard.py +121 -0
  22. ghostqa-0.1.0/src/ghostqa/cli/init_cmd.py +224 -0
  23. ghostqa-0.1.0/src/ghostqa/cli/install.py +129 -0
  24. ghostqa-0.1.0/src/ghostqa/cli/report.py +243 -0
  25. ghostqa-0.1.0/src/ghostqa/cli/run.py +561 -0
  26. ghostqa-0.1.0/src/ghostqa/config.py +113 -0
  27. ghostqa-0.1.0/src/ghostqa/credentials.py +89 -0
  28. ghostqa-0.1.0/src/ghostqa/engine/__init__.py +38 -0
  29. ghostqa-0.1.0/src/ghostqa/engine/action_executor.py +1622 -0
  30. ghostqa-0.1.0/src/ghostqa/engine/api_runner.py +541 -0
  31. ghostqa-0.1.0/src/ghostqa/engine/browser_runner.py +785 -0
  32. ghostqa-0.1.0/src/ghostqa/engine/cost_tracker.py +408 -0
  33. ghostqa-0.1.0/src/ghostqa/engine/mock_server.py +480 -0
  34. ghostqa-0.1.0/src/ghostqa/engine/orchestrator.py +859 -0
  35. ghostqa-0.1.0/src/ghostqa/engine/persona_agent.py +638 -0
  36. ghostqa-0.1.0/src/ghostqa/engine/report_generator.py +202 -0
  37. ghostqa-0.1.0/src/ghostqa/models.py +27 -0
  38. ghostqa-0.1.0/src/ghostqa/viewer/__init__.py +1 -0
  39. ghostqa-0.1.0/src/ghostqa/viewer/server.py +432 -0
  40. ghostqa-0.1.0/src/ghostqa/viewer/static/style.css +908 -0
  41. ghostqa-0.1.0/src/ghostqa/viewer/templates/base.html +33 -0
  42. ghostqa-0.1.0/src/ghostqa/viewer/templates/detail.html +284 -0
  43. ghostqa-0.1.0/src/ghostqa/viewer/templates/index.html +117 -0
  44. ghostqa-0.1.0/tests/__init__.py +0 -0
  45. ghostqa-0.1.0/tests/conftest.py +79 -0
  46. ghostqa-0.1.0/tests/test_cli_init.py +175 -0
  47. ghostqa-0.1.0/tests/test_config.py +193 -0
  48. ghostqa-0.1.0/tests/test_cost_tracker.py +310 -0
  49. ghostqa-0.1.0/tests/test_credentials.py +228 -0
  50. ghostqa-0.1.0/tests/test_models.py +136 -0
  51. ghostqa-0.1.0/tests/test_report_generator.py +279 -0
@@ -0,0 +1,83 @@
1
+ name: Bug Report
2
+ description: Report a bug in GhostQA
3
+ title: "[Bug]: "
4
+ labels: ["bug", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for reporting a bug! Please fill out the sections below so we can reproduce and fix the issue.
10
+
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Description
15
+ description: A clear and concise description of what the bug is.
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: steps
21
+ attributes:
22
+ label: Steps to reproduce
23
+ description: How can we reproduce this behavior?
24
+ placeholder: |
25
+ 1. Create a persona YAML with ...
26
+ 2. Run `ghostqa run ...`
27
+ 3. See error ...
28
+ validations:
29
+ required: true
30
+
31
+ - type: textarea
32
+ id: expected
33
+ attributes:
34
+ label: Expected behavior
35
+ description: What did you expect to happen?
36
+ validations:
37
+ required: true
38
+
39
+ - type: textarea
40
+ id: actual
41
+ attributes:
42
+ label: Actual behavior
43
+ description: What actually happened? Include error messages or screenshots if applicable.
44
+ validations:
45
+ required: true
46
+
47
+ - type: input
48
+ id: ghostqa-version
49
+ attributes:
50
+ label: GhostQA version
51
+ description: "Output of `ghostqa --version` or `pip show ghostqa`"
52
+ placeholder: "0.1.0"
53
+ validations:
54
+ required: true
55
+
56
+ - type: input
57
+ id: python-version
58
+ attributes:
59
+ label: Python version
60
+ description: "Output of `python --version`"
61
+ placeholder: "3.12.0"
62
+ validations:
63
+ required: true
64
+
65
+ - type: dropdown
66
+ id: os
67
+ attributes:
68
+ label: Operating system
69
+ options:
70
+ - Linux
71
+ - macOS
72
+ - Windows
73
+ - Other
74
+ validations:
75
+ required: true
76
+
77
+ - type: textarea
78
+ id: additional
79
+ attributes:
80
+ label: Additional context
81
+ description: Any other context, logs, or screenshots about the problem.
82
+ validations:
83
+ required: false
@@ -0,0 +1,51 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement for GhostQA
3
+ title: "[Feature]: "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for suggesting an improvement! Please describe your idea below.
10
+
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Description
15
+ description: A clear and concise description of the feature you'd like.
16
+ validations:
17
+ required: true
18
+
19
+ - type: textarea
20
+ id: use-case
21
+ attributes:
22
+ label: Use case
23
+ description: What problem does this solve? Who benefits from it?
24
+ placeholder: |
25
+ As a QA engineer, I want to ... so that ...
26
+ validations:
27
+ required: true
28
+
29
+ - type: textarea
30
+ id: proposed-solution
31
+ attributes:
32
+ label: Proposed solution
33
+ description: How do you envision this working? Include API ideas, CLI flags, YAML config examples, etc.
34
+ validations:
35
+ required: false
36
+
37
+ - type: textarea
38
+ id: alternatives
39
+ attributes:
40
+ label: Alternatives considered
41
+ description: Have you considered other approaches? What are the trade-offs?
42
+ validations:
43
+ required: false
44
+
45
+ - type: textarea
46
+ id: additional
47
+ attributes:
48
+ label: Additional context
49
+ description: Any other context, mockups, or references.
50
+ validations:
51
+ required: false
@@ -0,0 +1,25 @@
1
+ ## Summary
2
+
3
+ <!-- What does this PR do? Why is it needed? Link related issues with "Closes #123". -->
4
+
5
+ ## Changes
6
+
7
+ <!-- Bullet list of the key changes in this PR. -->
8
+
9
+ -
10
+
11
+ ## Test plan
12
+
13
+ <!-- How did you verify this works? Include commands, screenshots, or test output. -->
14
+
15
+ - [ ] Tests pass locally (`pytest tests/ -v`)
16
+ - [ ] Linting passes (`ruff check src/`)
17
+ - [ ] Formatting passes (`ruff format --check src/`)
18
+
19
+ ## Checklist
20
+
21
+ - [ ] I have read the [contributing guide](../CONTRIBUTING.md)
22
+ - [ ] My code follows the project's style (ruff-enforced)
23
+ - [ ] I have added tests for new functionality
24
+ - [ ] I have updated documentation if needed
25
+ - [ ] All new and existing tests pass
@@ -0,0 +1,51 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+
24
+ - name: Install dependencies
25
+ run: pip install -e ".[dev]"
26
+
27
+ - name: Ruff check
28
+ run: ruff check src/
29
+
30
+ - name: Ruff format check
31
+ run: ruff format --check src/
32
+
33
+ test:
34
+ name: Test (Python ${{ matrix.python-version }})
35
+ runs-on: ubuntu-latest
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ python-version: ["3.10", "3.11", "3.12"]
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - uses: actions/setup-python@v5
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+
47
+ - name: Install dependencies
48
+ run: pip install -e ".[dev]"
49
+
50
+ - name: Run tests
51
+ run: pytest tests/ -v --tb=short
@@ -0,0 +1,31 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ id-token: write
9
+
10
+ jobs:
11
+ publish:
12
+ name: Build and publish to PyPI
13
+ runs-on: ubuntu-latest
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/p/ghostqa
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+
24
+ - name: Install build tools
25
+ run: pip install build
26
+
27
+ - name: Build package
28
+ run: python -m build
29
+
30
+ - name: Publish to PyPI
31
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,57 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+
7
+ # Distribution / packaging
8
+ .Python
9
+ build/
10
+ develop-eggs/
11
+ dist/
12
+ downloads/
13
+ eggs/
14
+ .eggs/
15
+ lib/
16
+ lib64/
17
+ parts/
18
+ sdist/
19
+ var/
20
+ wheels/
21
+ *.egg-info/
22
+ *.egg
23
+
24
+ # Virtual environments
25
+ .venv/
26
+ env/
27
+ venv/
28
+ ENV/
29
+
30
+ # IDE
31
+ .vscode/
32
+ .idea/
33
+ *.swp
34
+ *.swo
35
+ *~
36
+
37
+ # Testing
38
+ .pytest_cache/
39
+ .coverage
40
+ htmlcov/
41
+ .mypy_cache/
42
+ .ruff_cache/
43
+
44
+ # Environment variables
45
+ .env
46
+ .env.local
47
+ .env.*.local
48
+
49
+ # GhostQA project config and evidence
50
+ .ghostqa/config.yaml
51
+ .ghostqa/evidence/
52
+ evidence/
53
+ **/evidence/**/*.png
54
+
55
+ # OS
56
+ .DS_Store
57
+ Thumbs.db
@@ -0,0 +1,94 @@
1
+ # Contributing to GhostQA
2
+
3
+ Thanks for your interest in contributing to GhostQA! This guide will help you get started.
4
+
5
+ ## Development Setup
6
+
7
+ 1. **Clone the repository**
8
+
9
+ ```bash
10
+ git clone https://github.com/SyncTek-LLC/ghostqa.git
11
+ cd ghostqa
12
+ ```
13
+
14
+ 2. **Create a virtual environment**
15
+
16
+ ```bash
17
+ python -m venv .venv
18
+ source .venv/bin/activate # Linux/macOS
19
+ # .venv\Scripts\activate # Windows
20
+ ```
21
+
22
+ 3. **Install in development mode**
23
+
24
+ ```bash
25
+ pip install -e ".[dev]"
26
+ ```
27
+
28
+ 4. **Install Playwright browsers** (needed for integration tests)
29
+
30
+ ```bash
31
+ playwright install chromium
32
+ ```
33
+
34
+ ## Running Tests
35
+
36
+ ```bash
37
+ # Run all unit tests
38
+ pytest tests/ -v
39
+
40
+ # Run with coverage
41
+ pytest tests/ -v --cov=src/ghostqa --cov-report=term-missing
42
+
43
+ # Skip integration tests (which require a running app and API key)
44
+ pytest tests/ -v -m "not integration"
45
+ ```
46
+
47
+ ## Code Quality
48
+
49
+ We use [Ruff](https://docs.astral.sh/ruff/) for linting and formatting.
50
+
51
+ ```bash
52
+ # Check for lint issues
53
+ ruff check src/
54
+
55
+ # Auto-fix lint issues
56
+ ruff check src/ --fix
57
+
58
+ # Check formatting
59
+ ruff format --check src/
60
+
61
+ # Auto-format
62
+ ruff format src/
63
+ ```
64
+
65
+ Type checking with mypy:
66
+
67
+ ```bash
68
+ mypy src/ghostqa
69
+ ```
70
+
71
+ ## Submitting Changes
72
+
73
+ 1. **Fork the repository** and create a branch from `main`.
74
+ 2. **Make your changes.** Add tests for new functionality.
75
+ 3. **Ensure all checks pass:**
76
+ ```bash
77
+ ruff check src/
78
+ ruff format --check src/
79
+ pytest tests/ -v
80
+ ```
81
+ 4. **Open a pull request** against `main`. Fill out the PR template.
82
+ 5. A maintainer will review your PR. Address any feedback, then it will be merged.
83
+
84
+ ## Reporting Bugs
85
+
86
+ Use the [bug report template](https://github.com/SyncTek-LLC/ghostqa/issues/new?template=bug_report.yml) on GitHub Issues.
87
+
88
+ ## Requesting Features
89
+
90
+ Use the [feature request template](https://github.com/SyncTek-LLC/ghostqa/issues/new?template=feature_request.yml) on GitHub Issues.
91
+
92
+ ## License
93
+
94
+ By contributing to GhostQA, you agree that your contributions will be licensed under the [MIT License](LICENSE). All contributions are subject to this project's license terms.
ghostqa-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SyncTek LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
ghostqa-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,63 @@
1
+ Metadata-Version: 2.4
2
+ Name: ghostqa
3
+ Version: 0.1.0
4
+ Summary: AI persona-based behavioral testing for web apps. No test scripts. YAML-configured. Vision-powered.
5
+ Project-URL: Homepage, https://github.com/SyncTek-LLC/ghostqa
6
+ Project-URL: Repository, https://github.com/SyncTek-LLC/ghostqa
7
+ Project-URL: Issues, https://github.com/SyncTek-LLC/ghostqa/issues
8
+ Author: SyncTek LLC
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai,behavioral,persona,playwright,qa,testing,vision
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Testing
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: anthropic>=0.39.0
22
+ Requires-Dist: jinja2>=3.1.0
23
+ Requires-Dist: playwright>=1.48.0
24
+ Requires-Dist: python-dotenv>=1.0.0
25
+ Requires-Dist: pyyaml>=6.0
26
+ Requires-Dist: requests>=2.31.0
27
+ Requires-Dist: rich>=13.0.0
28
+ Requires-Dist: typer>=0.12.0
29
+ Provides-Extra: dev
30
+ Requires-Dist: build>=1.0.0; extra == 'dev'
31
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
32
+ Requires-Dist: pytest-cov>=4.0; extra == 'dev'
33
+ Requires-Dist: pytest>=7.0; extra == 'dev'
34
+ Requires-Dist: ruff>=0.3.0; extra == 'dev'
35
+ Description-Content-Type: text/markdown
36
+
37
+ # GhostQA
38
+
39
+ **AI ghosts walk your app so real users don't trip.**
40
+
41
+ GhostQA sends AI personas through your web app via vision models — they navigate like real humans, find UX bugs your test scripts miss, and generate evidence reports.
42
+
43
+ ## Quick Start
44
+
45
+ ```bash
46
+ pip install ghostqa
47
+ ghostqa install # Download browser
48
+ ghostqa init # Scaffold project
49
+ ghostqa run --product demo # Run your first test
50
+ ```
51
+
52
+ ## Features
53
+
54
+ - **Persona-based testing** — AI users with different skill levels, patience, and goals
55
+ - **Vision-powered** — Interprets screenshots like a human, catches visual/layout UX issues
56
+ - **YAML-configured** — No test scripts to maintain, PM-readable scenarios
57
+ - **Cost-aware** — Per-run budget enforcement, transparent API cost tracking
58
+ - **CI-ready** — JUnit XML output, exit codes, headless mode
59
+ - **Open source** — MIT license, no telemetry, no data collection
60
+
61
+ ## License
62
+
63
+ MIT
@@ -0,0 +1,27 @@
1
+ # GhostQA
2
+
3
+ **AI ghosts walk your app so real users don't trip.**
4
+
5
+ GhostQA sends AI personas through your web app via vision models — they navigate like real humans, find UX bugs your test scripts miss, and generate evidence reports.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ pip install ghostqa
11
+ ghostqa install # Download browser
12
+ ghostqa init # Scaffold project
13
+ ghostqa run --product demo # Run your first test
14
+ ```
15
+
16
+ ## Features
17
+
18
+ - **Persona-based testing** — AI users with different skill levels, patience, and goals
19
+ - **Vision-powered** — Interprets screenshots like a human, catches visual/layout UX issues
20
+ - **YAML-configured** — No test scripts to maintain, PM-readable scenarios
21
+ - **Cost-aware** — Per-run budget enforcement, transparent API cost tracking
22
+ - **CI-ready** — JUnit XML output, exit codes, headless mode
23
+ - **Open source** — MIT license, no telemetry, no data collection
24
+
25
+ ## License
26
+
27
+ MIT
@@ -0,0 +1,58 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ | Version | Supported |
6
+ |---------|--------------------|
7
+ | 0.1.x | Yes |
8
+ | < 0.1 | No |
9
+
10
+ We provide security updates for the latest minor release. Older versions will not receive patches.
11
+
12
+ ## Reporting a Vulnerability
13
+
14
+ **Please do not open a public GitHub issue for security vulnerabilities.**
15
+
16
+ Instead, report vulnerabilities by emailing **security@synctek.dev**. Include:
17
+
18
+ - A description of the vulnerability
19
+ - Steps to reproduce or a proof of concept
20
+ - The impact or severity as you understand it
21
+ - Your name/handle for attribution (optional)
22
+
23
+ ## Response Timeline
24
+
25
+ | Action | Target |
26
+ |----------------------------|-------------|
27
+ | Acknowledgment of report | 48 hours |
28
+ | Initial assessment | 5 business days |
29
+ | Fix or mitigation released | 30 days |
30
+
31
+ We will keep you informed of our progress. If the issue is accepted, we will:
32
+
33
+ 1. Develop and test a fix privately
34
+ 2. Release a patched version
35
+ 3. Publish a security advisory on GitHub
36
+ 4. Credit the reporter (unless anonymity is requested)
37
+
38
+ ## Scope
39
+
40
+ The following are in scope for security reports:
41
+
42
+ - The `ghostqa` Python package (code in `src/`)
43
+ - CLI command injection or path traversal
44
+ - Unsafe handling of API keys or credentials
45
+ - Persona YAML injection leading to unintended behavior
46
+
47
+ The following are out of scope:
48
+
49
+ - Vulnerabilities in third-party dependencies (report those upstream)
50
+ - Issues requiring physical access to the machine
51
+ - Social engineering attacks
52
+
53
+ ## Security Best Practices for Users
54
+
55
+ - Never commit your `.env` file or API keys to version control
56
+ - Use environment variables or a secrets manager for `ANTHROPIC_API_KEY`
57
+ - Review persona YAML files from untrusted sources before running them
58
+ - Keep GhostQA and its dependencies updated
@@ -0,0 +1,35 @@
1
+ id: demo-onboarding
2
+ display_name: "Demo App Onboarding"
3
+ product: demo
4
+ persona: alex_developer
5
+ level: smoke
6
+ tags: [onboarding, critical_path]
7
+ steps:
8
+ - id: visit_homepage
9
+ type: browser
10
+ goal: "Navigate to the homepage and verify it loads"
11
+ url: "/"
12
+ checkpoints:
13
+ - type: text_present
14
+ value: "Welcome"
15
+
16
+ - id: navigate_signup
17
+ type: browser
18
+ goal: "Find and click the signup or register link"
19
+ checkpoints:
20
+ - type: text_present
21
+ value: "Sign"
22
+
23
+ - id: fill_signup_form
24
+ type: browser
25
+ goal: "Fill out the signup form with test credentials"
26
+ checkpoints:
27
+ - type: text_present
28
+ value: "email"
29
+
30
+ - id: verify_success
31
+ type: browser
32
+ goal: "Verify that signup was successful and you are logged in"
33
+ checkpoints:
34
+ - type: text_present
35
+ value: "dashboard"
@@ -0,0 +1,18 @@
1
+ name: alex_developer
2
+ display_name: "Alex Chen"
3
+ role: "Full-Stack Developer"
4
+ age: 28
5
+ tech_comfort: high
6
+ patience: medium
7
+ device_preference: desktop
8
+ viewport:
9
+ width: 1280
10
+ height: 720
11
+ goals:
12
+ - "Evaluate the app from a developer's perspective"
13
+ - "Check for common UX anti-patterns"
14
+ - "Verify forms work correctly"
15
+ frustrations:
16
+ - "Unclear error messages"
17
+ - "Slow page loads"
18
+ - "Missing loading indicators"
@@ -0,0 +1,12 @@
1
+ name: demo
2
+ display_name: "GhostQA Demo App"
3
+ base_url: "http://localhost:5000"
4
+ services:
5
+ frontend:
6
+ url: "http://localhost:5000"
7
+ viewports:
8
+ desktop:
9
+ width: 1280
10
+ height: 720
11
+ cost_limits:
12
+ per_run_usd: 5.00