fai-scoutqa-test — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fai-scoutqa-test (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
AI-driven test generation with self-healing selectors and coverage discovery.
from scoutqa import Scout
scout = Scout(base_url="http://localhost:3000")
# AI explores the app and generates test scenarios
scenarios = scout.discover_flows(
starting_pages=["/", "/chat", "/dashboard"],
max_depth=3,
interaction_types=["click", "fill", "navigate"],
)
# Generate test code from discovered flows
for scenario in scenarios:
test_code = scout.generate_test(scenario, framework="playwright")
print(f"# {scenario.name}")
print(test_code)# Instead of brittle CSS selectors:
# page.click("#submit-btn-v3") # Breaks on redesign
# ScoutQA uses multiple selector strategies:
scout.click(
element="submit button",
selectors=[
{"strategy": "test-id", "value": "submit-btn"},
{"strategy": "role", "value": "button", "name": "Submit"},
{"strategy": "text", "value": "Submit"},
{"strategy": "css", "value": "form button[type=submit]"},
],
# Falls back through strategies if primary fails
)# Run discovered tests
scoutqa run --base-url http://localhost:3000 --output results/
# Run with visual report
scoutqa run --report html --screenshots on-failure- name: Run ScoutQA
run: |
scoutqa run --base-url ${{ env.APP_URL }} \
--output test-results/ \
--report junit
- name: Upload Results
uses: actions/upload-artifact@v4
with: { name: test-results, path: test-results/ }| Issue | Cause | Fix |
|---|---|---|
| Low discovery coverage | shallow max_depth | Increase max_depth to 4-5 |
| False positive failures | UI changed, selectors stale | Enable self-healing mode |
| Slow test runs | Too many scenarios | Filter by priority or page |
| Auth flows not discovered | Login not configured | Provide auth cookies or setup script |
| Practice | Rationale |
|---|---|
Test naming: test_{action}_{scenario}_{expected} | Clear intent from name alone |
| One assertion per test (ideally) | Pinpoints exact failure |
| Arrange-Act-Assert structure | Consistent, readable tests |
| Mock external dependencies | Fast, deterministic execution |
| Run tests in CI on every PR | Catch regressions before merge |
| Separate unit from integration | Fast feedback loop for unit tests |
fai-build-test-harness — Reusable test infrastructurefai-build-unit-test — Unit test patterns across languagesfai-build-integration-test — Integration test with fixturesfai-pytest-coverage — Python coverage configuration~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.