QAira Repository Intelligence
Run the QAira Semantic Compiler Docker image from VS Code and generate repository-grounded test assets.
This extension does not bundle the Python agents. Docker performs the heavy repository analysis. VS Code provides the developer UX, secure key storage, split commands, output handling, and protected QAira imports.
Default image:
jayarajumetta/semantic-compiler:latest
Commands
QAira: Generate API Tests
- Runs Docker with
QAIRA_TEST_TYPE=api.
- Generates API contracts, Postman collection, QAira API test payloads, traces, reports.
QAira: Generate WebUI Pages
- Runs Docker with
QAIRA_TEST_TYPE=webui.
- Generates QSG graph, HTML page locator JSON, Playwright locator modules, Page Object class files, WebUI specs, traces, reports.
QAira: Generate API + WebUI
- Runs Docker with
QAIRA_TEST_TYPE=both.
- API pipeline first, then WebUI/QSG pipeline.
QAira: Configure OPENAI_API_KEY
- Stores
OPENAI_API_KEY securely in VS Code SecretStorage.
- Passed to Docker as
-e OPENAI_API_KEY=<secret>.
QAira: Configure Runtime Paths
- Configures output and learning directories.
- Optional config path is blank by default. Leave blank to auto-use
config/config.yml if it exists.
QAira: Configure Import
- Configures API test import, WebUI page import, auth mode, app type, endpoints, and secure credentials.
QAira: Import API Tests
- Converts generated
postman_collection.json into QAira import payload and sends it to QAira.
QAira: Generate WebUI Class Files
- Converts generated WebUI locator JSON into per-page Playwright Page Object class files and specs.
QAira: Import WebUI Pages
- Builds a WebUI pages import payload including locator JSON, Page Object class TS, and smoke spec TS.
QAira: Open Output Directory
QAira: Show Status
QAira: Clear Stored Secrets
Runtime behavior
For QAira: Generate API Tests, the extension runs effectively:
docker run --rm \
-e PYTHONUNBUFFERED=1 \
-e QAIRA_TEST_TYPE=api \
-e OPENAI_API_KEY="$OPENAI_API_KEY" \
-v "$WORKSPACE:/workspace/source:ro" \
-v "$WORKSPACE/qaira-output:/output" \
-v "$WORKSPACE/qaira-learning:/learning" \
jayarajumetta/semantic-compiler:latest
For WebUI:
docker run --rm \
-e PYTHONUNBUFFERED=1 \
-e QAIRA_TEST_TYPE=webui \
-e OPENAI_API_KEY="$OPENAI_API_KEY" \
-v "$WORKSPACE:/workspace/source:ro" \
-v "$WORKSPACE/qaira-output:/output" \
-v "$WORKSPACE/qaira-learning:/learning" \
jayarajumetta/semantic-compiler:latest
For both:
docker run --rm \
-e PYTHONUNBUFFERED=1 \
-e QAIRA_TEST_TYPE=both \
-e OPENAI_API_KEY="$OPENAI_API_KEY" \
-v "$WORKSPACE:/workspace/source:ro" \
-v "$WORKSPACE/qaira-output:/output" \
-v "$WORKSPACE/qaira-learning:/learning" \
jayarajumetta/semantic-compiler:latest
If <workspace>/config/config.yml exists, it is mounted as:
-v "$WORKSPACE/config/config.yml:/config/config.yml:ro" \
-e QAIRA_CONFIG=/config/config.yml
If qaira.configPath is set, that custom config file overrides the default workspace config path.
Settings
Only runtime/import settings are exposed. Git options are intentionally not exposed in the extension.
{
"qaira.outputDir": "qaira-output",
"qaira.learningDir": "qaira-learning",
"qaira.configPath": "",
"qaira.import.apiTests.enabled": false,
"qaira.import.webuiPages.enabled": false,
"qaira.import.apiTestsUrl": "http://localhost:8080/api/test-cases/import",
"qaira.import.webuiPagesUrl": "http://localhost:8080/api/test-cases/automation/learning-cache/import",
"qaira.import.appTypeId": "a2",
"qaira.import.authMode": "x-api-key",
"qaira.import.baseUrl": "",
"qaira.import.confirmBeforeSending": true
}
Secret storage
These are stored securely using VS Code SecretStorage:
OPENAI_API_KEY
- QAira
x-api-key
- QAira bearer token
They are not written into settings.json, config.yml, generated curl files, or output artifacts.
Outputs
Common traces:
qaira-output/verbose/trace.jsonl
qaira-output/runtime/agent_progress.jsonl
qaira-output/runtime/phase_progress.jsonl
qaira-output/runtime/agent_results.jsonl
qaira-output/runtime/execution_plan.json
qaira-output/runtime/orchestrator_report.json
qaira-output/runtime/final_run_report.json
qaira-output/runtime/artifact_manifest.json
API outputs:
qaira-output/generated/postman_collection.json
qaira-output/generated/qaira_tests.json
qaira-output/generated/openapi.json
qaira-output/generated/api_test_generation_trace.json
qaira-output/final/final_test_generation_report.json
qaira-output/qaira-import/api-test-cases-import-payload.json
qaira-output/qaira-import/import-api-test-cases.curl.sh
qaira-output/qaira-import/api-import-response.json
WebUI outputs:
qaira-output/graph/qsg.sqlite
qaira-output/graph/qsg.json
qaira-output/graph/qsg_summary.json
qaira-output/generated/html_page_locators.json
qaira-output/generated/playwright_locators.js
qaira-output/generated/webui/html_page_locators.nested.json
qaira-output/generated/webui/html_page_locators.csv
qaira-output/generated/webui/index.json
qaira-output/generated/webui/pages.ts
qaira-output/generated/webui/pages/<page-slug>/locators.json
qaira-output/generated/webui/pages/<page-slug>/<page-slug>.page.ts
qaira-output/generated/webui/pages/<page-slug>/<page-slug>.spec.ts
qaira-output/qaira-import/webui-pages-import-payload.json
qaira-output/qaira-import/import-webui-pages.curl.sh
qaira-output/qaira-import/webui-pages-import-response.json
Build and install locally
npm install
npm run lint
npm run package
Then install the generated .vsix through VS Code:
Extensions → ... → Install from VSIX...
Or, if the code command is installed:
code --install-extension qaira-repository-intelligence-1.1.0.vsix
July 2026 update — WebUI Object Repository import
QAira: Import WebUI Pages now imports generated WebUI locators into QAira's automation learning cache / object repository endpoint:
POST /api/test-cases/automation/learning-cache/import
The extension creates and sends:
{
"app_type_id": "<configured app type id>",
"import_source": "or_file_import",
"entries": []
}
It also writes:
qaira-output/generated/webui/object_repository_import.csv
qaira-output/generated/webui/object_repository_import_payload.json
qaira-output/qaira-import/webui-object-repository-import-payload.json
qaira-output/qaira-import/webui-object-repository-import.csv
The CSV has one screen row and stable/actionable locator field rows per screen. Pseudo/TODO locators are not imported.
1.3.1 WebUI Object Repository batching fix
QAira: Import WebUI Pages now respects the QAira backend limit of 200 repository entries per request.
The extension still writes the complete payload and CSV for traceability:
qaira-output/qaira-import/webui-object-repository-import-payload.json
qaira-output/qaira-import/webui-object-repository-import.csv
It also writes batch-safe artifacts:
qaira-output/qaira-import/webui-object-repository-import-manifest.json
qaira-output/qaira-import/webui-object-repository-batches/batch-001.json
qaira-output/qaira-import/webui-object-repository-batches/batch-001.curl.sh
qaira-output/qaira-import/import-webui-object-repository.curl.sh
qaira-output/qaira-import/webui-object-repository-import-response.json
Each request sent to /api/test-cases/automation/learning-cache/import contains at most 200 entries.
If a screen has more than 199 fields, the screen record is repeated in subsequent batches so the backend can still associate fields with the screen.