testeiya 0.2.0 → 0.3.9
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.
- package/LICENSE +21 -0
- package/README.md +37 -175
- package/dist/prompt/context.js +79 -0
- package/dist/prompt/context.js.map +1 -0
- package/dist/prompt/index.js +56 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/print.js +22 -0
- package/dist/prompt/print.js.map +1 -0
- package/dist/prompt/project-info.js +2 -0
- package/dist/prompt/project-info.js.map +1 -0
- package/{src/prompt/system-prompt.ts → dist/prompt/system-prompt.js} +24 -21
- package/dist/prompt/system-prompt.js.map +1 -0
- package/dist/prompt/testomatio.js +264 -0
- package/dist/prompt/testomatio.js.map +1 -0
- package/dist/prompt/tools.js +49 -0
- package/dist/prompt/tools.js.map +1 -0
- package/dist/prompt/vocab.js +8 -0
- package/dist/prompt/vocab.js.map +1 -0
- package/dist/src/args.js +72 -0
- package/dist/src/args.js.map +1 -0
- package/dist/src/cli.js +61 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/env.js +69 -0
- package/dist/src/env.js.map +1 -0
- package/dist/src/mcp-extension.js +9 -0
- package/dist/src/mcp-extension.js.map +1 -0
- package/dist/src/mcp.js +139 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/model.js +66 -0
- package/dist/src/model.js.map +1 -0
- package/dist/src/result.js +41 -0
- package/dist/src/result.js.map +1 -0
- package/dist/src/run.js +199 -0
- package/dist/src/run.js.map +1 -0
- package/dist/src/session.js +77 -0
- package/dist/src/session.js.map +1 -0
- package/dist/vendor/mcp.js +14801 -0
- package/mcp-tools.json +2967 -0
- package/package.json +29 -41
- package/prompt/context.ts +101 -0
- package/prompt/index.ts +93 -0
- package/prompt/print.ts +23 -0
- package/prompt/project-info.ts +30 -0
- package/prompt/system-prompt.ts +173 -0
- package/{src/prompt → prompt}/testomatio.ts +119 -8
- package/{src/prompt → prompt}/tools.ts +30 -8
- package/prompt/vocab.ts +7 -0
- package/{skills.lock.json → skills/skills.lock.json} +11 -7
- package/skills/skills.yaml +34 -0
- package/models.catalog.json +0 -6963
- package/skills/codeceptjs/ci-fix-tests/SKILL.md +0 -120
- package/skills/codeceptjs/codeceptjs-auth/SKILL.md +0 -158
- package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +0 -91
- package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +0 -158
- package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +0 -90
- package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +0 -234
- package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +0 -110
- package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +0 -306
- package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +0 -352
- package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +0 -472
- package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +0 -350
- package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +0 -81
- package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +0 -206
- package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
- package/skills/playwright-best-practices-skill/README.md +0 -147
- package/skills/playwright-best-practices-skill/SKILL.md +0 -303
- package/skills/playwright-best-practices-skill/advanced/authentication-flows.md +0 -360
- package/skills/playwright-best-practices-skill/advanced/authentication.md +0 -871
- package/skills/playwright-best-practices-skill/advanced/clock-mocking.md +0 -364
- package/skills/playwright-best-practices-skill/advanced/mobile-testing.md +0 -409
- package/skills/playwright-best-practices-skill/advanced/multi-context.md +0 -288
- package/skills/playwright-best-practices-skill/advanced/multi-user.md +0 -393
- package/skills/playwright-best-practices-skill/advanced/network-advanced.md +0 -452
- package/skills/playwright-best-practices-skill/advanced/third-party.md +0 -464
- package/skills/playwright-best-practices-skill/architecture/pom-vs-fixtures.md +0 -363
- package/skills/playwright-best-practices-skill/architecture/test-architecture.md +0 -369
- package/skills/playwright-best-practices-skill/architecture/when-to-mock.md +0 -383
- package/skills/playwright-best-practices-skill/browser-apis/browser-apis.md +0 -391
- package/skills/playwright-best-practices-skill/browser-apis/iframes.md +0 -403
- package/skills/playwright-best-practices-skill/browser-apis/service-workers.md +0 -504
- package/skills/playwright-best-practices-skill/browser-apis/websockets.md +0 -403
- package/skills/playwright-best-practices-skill/core/annotations.md +0 -424
- package/skills/playwright-best-practices-skill/core/assertions-waiting.md +0 -361
- package/skills/playwright-best-practices-skill/core/configuration.md +0 -452
- package/skills/playwright-best-practices-skill/core/fixtures-hooks.md +0 -417
- package/skills/playwright-best-practices-skill/core/global-setup.md +0 -434
- package/skills/playwright-best-practices-skill/core/locators.md +0 -242
- package/skills/playwright-best-practices-skill/core/page-object-model.md +0 -315
- package/skills/playwright-best-practices-skill/core/projects-dependencies.md +0 -453
- package/skills/playwright-best-practices-skill/core/test-data.md +0 -492
- package/skills/playwright-best-practices-skill/core/test-suite-structure.md +0 -361
- package/skills/playwright-best-practices-skill/core/test-tags.md +0 -298
- package/skills/playwright-best-practices-skill/debugging/console-errors.md +0 -420
- package/skills/playwright-best-practices-skill/debugging/debugging.md +0 -504
- package/skills/playwright-best-practices-skill/debugging/error-testing.md +0 -360
- package/skills/playwright-best-practices-skill/debugging/flaky-tests.md +0 -496
- package/skills/playwright-best-practices-skill/frameworks/angular.md +0 -530
- package/skills/playwright-best-practices-skill/frameworks/nextjs.md +0 -469
- package/skills/playwright-best-practices-skill/frameworks/react.md +0 -531
- package/skills/playwright-best-practices-skill/frameworks/vue.md +0 -574
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/ci-cd.md +0 -468
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/docker.md +0 -283
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/github-actions.md +0 -546
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/gitlab.md +0 -397
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/other-providers.md +0 -521
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/parallel-sharding.md +0 -371
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/performance.md +0 -453
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/reporting.md +0 -424
- package/skills/playwright-best-practices-skill/infrastructure-ci-cd/test-coverage.md +0 -497
- package/skills/playwright-best-practices-skill/testing-patterns/accessibility.md +0 -359
- package/skills/playwright-best-practices-skill/testing-patterns/api-testing.md +0 -719
- package/skills/playwright-best-practices-skill/testing-patterns/browser-extensions.md +0 -506
- package/skills/playwright-best-practices-skill/testing-patterns/canvas-webgl.md +0 -493
- package/skills/playwright-best-practices-skill/testing-patterns/component-testing.md +0 -500
- package/skills/playwright-best-practices-skill/testing-patterns/drag-drop.md +0 -576
- package/skills/playwright-best-practices-skill/testing-patterns/electron.md +0 -509
- package/skills/playwright-best-practices-skill/testing-patterns/file-operations.md +0 -377
- package/skills/playwright-best-practices-skill/testing-patterns/file-upload-download.md +0 -562
- package/skills/playwright-best-practices-skill/testing-patterns/forms-validation.md +0 -561
- package/skills/playwright-best-practices-skill/testing-patterns/graphql-testing.md +0 -331
- package/skills/playwright-best-practices-skill/testing-patterns/i18n.md +0 -508
- package/skills/playwright-best-practices-skill/testing-patterns/performance-testing.md +0 -476
- package/skills/playwright-best-practices-skill/testing-patterns/security-testing.md +0 -430
- package/skills/playwright-best-practices-skill/testing-patterns/visual-regression.md +0 -634
- package/skills/playwright-cli/SKILL.md +0 -420
- package/skills/playwright-cli/references/element-attributes.md +0 -23
- package/skills/playwright-cli/references/playwright-tests.md +0 -39
- package/skills/playwright-cli/references/request-mocking.md +0 -87
- package/skills/playwright-cli/references/running-code.md +0 -241
- package/skills/playwright-cli/references/session-management.md +0 -225
- package/skills/playwright-cli/references/storage-state.md +0 -275
- package/skills/playwright-cli/references/test-generation.md +0 -433
- package/skills/playwright-cli/references/tracing.md +0 -139
- package/skills/playwright-cli/references/video-recording.md +0 -143
- package/skills/testeiya/README.md +0 -29
- package/skills/testeiya/answer-formatting/SKILL.md +0 -30
- package/skills/testeiya/check-cucumber/SKILL.md +0 -200
- package/skills/testeiya/check-tests/SKILL.md +0 -260
- package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
- package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
- package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
- package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
- package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
- package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
- package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
- package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
- package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
- package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
- package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
- package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
- package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
- package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
- package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
- package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
- package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
- package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
- package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
- package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
- package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
- package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
- package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
- package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
- package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
- package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
- package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
- package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
- package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
- package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
- package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
- package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
- package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
- package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
- package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
- package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
- package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
- package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
- package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
- package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
- package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
- package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
- package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
- package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
- package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
- package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
- package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
- package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
- package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
- package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
- package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
- package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
- package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
- package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
- package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
- package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
- package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
- package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
- package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
- package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
- package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
- package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
- package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
- package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
- package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
- package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
- package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
- package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
- package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
- package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
- package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
- package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
- package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
- package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
- package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
- package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
- package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
- package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
- package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
- package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
- package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
- package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
- package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
- package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
- package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
- package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
- package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
- package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
- package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
- package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
- package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
- package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
- package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
- package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
- package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
- package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
- package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
- package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
- package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
- package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
- package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
- package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
- package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
- package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +0 -88
- package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +0 -95
- package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +0 -334
- package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +0 -56
- package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +0 -242
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +0 -182
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +0 -22
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +0 -90
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +0 -53
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +0 -52
- package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +0 -107
- package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +0 -113
- package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +0 -29
- package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +0 -151
- package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
- package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +0 -289
- package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +0 -86
- package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +0 -54
- package/skills/testomatio/test-management/improve-test-cases/SKILL.md +0 -114
- package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +0 -66
- package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +0 -141
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +0 -354
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +0 -82
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +0 -37
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +0 -118
- package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +0 -149
- package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +0 -54
- package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +0 -126
- package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -128
- package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +0 -174
- package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +0 -138
- package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +0 -65
- package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +0 -40
- package/skills/testomatio/test-management/qa-thinking/SKILL.md +0 -36
- package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +0 -267
- package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +0 -387
- package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +0 -72
- package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +0 -159
- package/skills/testomatio/test-management/scan-automation-project/SKILL.md +0 -152
- package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +0 -107
- package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +0 -140
- package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +0 -182
- package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +0 -169
- package/skills.yaml +0 -21
- package/src/ai-debug.ts +0 -188
- package/src/api/agent-get.ts +0 -22
- package/src/api/agent-start.ts +0 -384
- package/src/api/client-log.ts +0 -29
- package/src/api/context.ts +0 -332
- package/src/api/debug-layout.ts +0 -47
- package/src/api/debug-report.ts +0 -29
- package/src/api/debug-snapshot.ts +0 -30
- package/src/api/debug-stream.ts +0 -52
- package/src/api/files-delete.ts +0 -184
- package/src/api/files-read.ts +0 -41
- package/src/api/files-rename.ts +0 -99
- package/src/api/files-tree.ts +0 -292
- package/src/api/files-write.ts +0 -41
- package/src/api/mcp.ts +0 -603
- package/src/api/memory.ts +0 -69
- package/src/api/open-external.ts +0 -39
- package/src/api/playwright-cli.ts +0 -606
- package/src/api/providers.ts +0 -457
- package/src/api/read-env-token.ts +0 -33
- package/src/api/sessions.ts +0 -79
- package/src/api/settings.ts +0 -120
- package/src/api/skills.ts +0 -58
- package/src/api/testomatio-attachment.ts +0 -89
- package/src/api/testomatio-auth.ts +0 -284
- package/src/api/testomatio-proxy.ts +0 -197
- package/src/api/testomatio-run-stats.ts +0 -81
- package/src/api/testomatio-target.ts +0 -225
- package/src/api/testomatio-transcription.ts +0 -82
- package/src/api/workspace-search.ts +0 -96
- package/src/api/workspace-sync.ts +0 -151
- package/src/api/workspace.ts +0 -165
- package/src/app-server.ts +0 -556
- package/src/bridge.ts +0 -251
- package/src/check-tests.ts +0 -156
- package/src/cli.ts +0 -17
- package/src/commands.ts +0 -244
- package/src/config.ts +0 -183
- package/src/connection.ts +0 -658
- package/src/context-store.ts +0 -265
- package/src/debug-bus.ts +0 -405
- package/src/extensions/tool-gate.ts +0 -220
- package/src/extensions/webui/ask-channel.ts +0 -52
- package/src/extensions/webui/index.ts +0 -184
- package/src/extensions/webui/tools/ask-question.ts +0 -88
- package/src/extensions/webui/tools/query-result.ts +0 -79
- package/src/extensions/webui/tools/render-chart.ts +0 -53
- package/src/extensions/webui/tools/render-item.ts +0 -61
- package/src/extensions/webui/tools/render-list.ts +0 -170
- package/src/extensions/webui/tools/render-result.ts +0 -85
- package/src/extensions/webui/tools/render-tree.ts +0 -71
- package/src/extensions/webui/tools/ui-widget.ts +0 -54
- package/src/extensions/webui/tools/widget-result.ts +0 -13
- package/src/extensions/webui/widget-channel.ts +0 -50
- package/src/file-log.ts +0 -196
- package/src/git-tracked.ts +0 -68
- package/src/gitignore.ts +0 -53
- package/src/json-store.ts +0 -43
- package/src/load-env.ts +0 -70
- package/src/loader-style.ts +0 -96
- package/src/main.ts +0 -140
- package/src/mcp-catalog.ts +0 -96
- package/src/models-catalog.ts +0 -72
- package/src/permissions.ts +0 -120
- package/src/project-dir.ts +0 -189
- package/src/project-info.ts +0 -108
- package/src/prompt/app-ui.ts +0 -59
- package/src/prompt/browser.ts +0 -27
- package/src/prompt/index.ts +0 -62
- package/src/server-info.ts +0 -62
- package/src/session-factory.ts +0 -442
- package/src/session-store.ts +0 -115
- package/src/shell-env.ts +0 -45
- package/src/skills.ts +0 -163
- package/src/sync-snapshot.ts +0 -140
- package/src/telemetry.ts +0 -239
- package/src/testomatio-auth.ts +0 -299
- package/src/testomatio.ts +0 -98
- package/src/theme.ts +0 -30
- package/src/user-env.ts +0 -94
- package/src/welcome.ts +0 -127
- package/src/workspace/safe-path.ts +0 -85
- package/src/workspace/test-md.ts +0 -70
- package/src/workspace-model.ts +0 -440
- package/testeiya.config.json +0 -14
package/package.json
CHANGED
|
@@ -1,71 +1,59 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testeiya",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AI
|
|
3
|
+
"version": "0.3.9",
|
|
4
|
+
"description": "AI testing agent — QA-focused coding agent for manual and automated tests",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/testomatio/testeiya-app"
|
|
9
|
-
"directory": "cli"
|
|
9
|
+
"url": "git+https://github.com/testomatio/testeiya-app.git"
|
|
10
10
|
},
|
|
11
|
+
"homepage": "https://github.com/testomatio/testeiya-app#readme",
|
|
11
12
|
"bin": {
|
|
12
|
-
"testeiya": "src/cli.
|
|
13
|
+
"testeiya": "dist/src/cli.js"
|
|
13
14
|
},
|
|
14
15
|
"files": [
|
|
15
|
-
"
|
|
16
|
+
"dist",
|
|
17
|
+
"prompt",
|
|
16
18
|
"skills",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"testeiya.config.json",
|
|
21
|
-
"README.md"
|
|
19
|
+
"mcp-tools.json",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE"
|
|
22
22
|
],
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=22.19.0"
|
|
28
|
+
},
|
|
26
29
|
"scripts": {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"serve:app:watch": "bun --watch src/app-server.ts",
|
|
33
|
-
"setup:env": "bun scripts/setup-env.ts",
|
|
34
|
-
"collect:models": "bun scripts/collect-models.ts",
|
|
35
|
-
"debug:trace": "bun scripts/langfuse-trace.ts",
|
|
36
|
-
"debug:snapshot": "bun scripts/debug-snapshot.ts",
|
|
37
|
-
"debug:layout": "bun scripts/debug-layout.ts"
|
|
30
|
+
"start": "npm run build && node dist/src/cli.js",
|
|
31
|
+
"build": "tsc -p tsconfig.json && npm run build:vendor",
|
|
32
|
+
"build:vendor": "esbuild scripts/vendor-entry.ts --bundle --format=esm --platform=node --packages=external --outfile=dist/vendor/mcp.js",
|
|
33
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
34
|
+
"prepublishOnly": "npm run build"
|
|
38
35
|
},
|
|
39
36
|
"keywords": [
|
|
40
37
|
"testing",
|
|
41
38
|
"qa",
|
|
42
39
|
"ai",
|
|
43
|
-
"agent"
|
|
40
|
+
"agent",
|
|
41
|
+
"testomatio",
|
|
42
|
+
"pi"
|
|
44
43
|
],
|
|
45
|
-
"author": "",
|
|
46
|
-
"license": "ISC",
|
|
47
44
|
"dependencies": {
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@oh-my-pi/pi-coding-agent": "^13.19.0",
|
|
52
|
-
"@oh-my-pi/pi-natives": "^13.19.0",
|
|
53
|
-
"@opentelemetry/api": "^1.9.1",
|
|
54
|
-
"@opentelemetry/sdk-node": "^0.218.0",
|
|
55
|
-
"@playwright/cli": "^0.1.13",
|
|
45
|
+
"@earendil-works/pi-ai": "^0.84.1",
|
|
46
|
+
"@earendil-works/pi-coding-agent": "^0.84.1",
|
|
47
|
+
"@earendil-works/pi-tui": "^0.84.1",
|
|
56
48
|
"@testomatio/mcp": "^2.1.1",
|
|
57
|
-
"
|
|
49
|
+
"chalk": "^5.6.2",
|
|
58
50
|
"dedent": "^1.7.2",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"yaml": "^2.9.0"
|
|
51
|
+
"pi-mcp-adapter": "^2.21.1",
|
|
52
|
+
"typebox": "1.3.7"
|
|
62
53
|
},
|
|
63
54
|
"devDependencies": {
|
|
64
55
|
"@types/node": "^22.19.19",
|
|
65
|
-
"
|
|
56
|
+
"esbuild": "^0.28.1",
|
|
66
57
|
"typescript": "^5.9.3"
|
|
67
|
-
},
|
|
68
|
-
"engines": {
|
|
69
|
-
"bun": ">=1.3.5"
|
|
70
58
|
}
|
|
71
59
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import dedent from "dedent";
|
|
2
|
+
import { TESTEIYA_DIR_NAME } from "./vocab.js";
|
|
3
|
+
|
|
4
|
+
/** System-prompt section describing the workspace context; "" when none. */
|
|
5
|
+
export function contextPromptSection(
|
|
6
|
+
entries: ContextEntry[],
|
|
7
|
+
folders: ContextFolder[] = []
|
|
8
|
+
): string {
|
|
9
|
+
if (entries.length === 0 && folders.length === 0) return "";
|
|
10
|
+
return dedent`
|
|
11
|
+
<workspace-context>
|
|
12
|
+
This workspace has context attached — the user (or you, earlier) put it there for a purpose. Consult it before answering, and prefer it over assumptions about the project.
|
|
13
|
+
|
|
14
|
+
${contextLines(entries, folders)}
|
|
15
|
+
|
|
16
|
+
ALL of it lives under the hidden \`${TESTEIYA_DIR_NAME}/\` dir: file-search tools skip hidden dirs by default, so search it explicitly (pass hidden:true, or prefix the path with \`${TESTEIYA_DIR_NAME}/\`). Linked folders and cloned repositories are reference material: read them, never modify them. A linked folder is a symlink — wildcard searches do not descend into it; search it with its own path prefix (e.g. \`${TESTEIYA_DIR_NAME}/<name>/\`). Documents under \`${TESTEIYA_DIR_NAME}/requirements\` and \`${TESTEIYA_DIR_NAME}/docs\` are specs and plans — use them when writing or reviewing tests.
|
|
17
|
+
</workspace-context>
|
|
18
|
+
`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Per-prompt notice when the context changed mid-session; appended to the next prompt. */
|
|
22
|
+
export function contextUpdateNotice(
|
|
23
|
+
entries: ContextEntry[],
|
|
24
|
+
folders: ContextFolder[] = []
|
|
25
|
+
): string {
|
|
26
|
+
if (entries.length === 0 && folders.length === 0) {
|
|
27
|
+
return dedent`
|
|
28
|
+
<workspace-context-update>
|
|
29
|
+
All extra workspace context was removed. Do not rely on it anymore.
|
|
30
|
+
</workspace-context-update>
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
return dedent`
|
|
34
|
+
<workspace-context-update>
|
|
35
|
+
The workspace context just changed. It now contains:
|
|
36
|
+
|
|
37
|
+
${contextLines(entries, folders)}
|
|
38
|
+
|
|
39
|
+
This was done for a purpose — take it into account for this and future requests. Remember \`${TESTEIYA_DIR_NAME}/\` is hidden: search it with hidden:true or an explicit path prefix.
|
|
40
|
+
</workspace-context-update>
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function contextLines(entries: ContextEntry[], folders: ContextFolder[]): string {
|
|
45
|
+
const lines: string[] = [];
|
|
46
|
+
const covered = new Set(entries.map((e) => parentDir(e.path)));
|
|
47
|
+
for (const f of folders) {
|
|
48
|
+
if (covered.has(f.path)) continue;
|
|
49
|
+
lines.push(`- \`${f.path}/\` — ${folderPurpose(f.name)}`);
|
|
50
|
+
}
|
|
51
|
+
for (const e of entries) lines.push(`- ${describeEntry(e)}`);
|
|
52
|
+
return lines.join("\n");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function folderPurpose(name: string): string {
|
|
56
|
+
if (name === "manual-tests") {
|
|
57
|
+
return "the project's manual test suites pulled from Testomat.io (*.test.md — THE manual tests of this project)";
|
|
58
|
+
}
|
|
59
|
+
if (name === "code") return "reference code added as context";
|
|
60
|
+
if (name === "requirements") return "requirements and specs";
|
|
61
|
+
if (name === "docs") return "test planning and strategy documents";
|
|
62
|
+
if (name === "auto-tests") return "automated test references";
|
|
63
|
+
return "exploratory testing setup";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function parentDir(rel: string): string {
|
|
67
|
+
const idx = rel.lastIndexOf("/");
|
|
68
|
+
if (idx < 0) return "";
|
|
69
|
+
return rel.slice(0, idx);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function describeEntry(e: ContextEntry): string {
|
|
73
|
+
const date = e.addedAt?.split("T")[0] ?? "";
|
|
74
|
+
let from = "";
|
|
75
|
+
if (e.origin && e.origin !== e.name) from = ` from ${e.origin}`;
|
|
76
|
+
if (e.kind === "repo") return `\`${e.path}\` — git repository${from} (${date})`;
|
|
77
|
+
if (e.kind === "folder") return `\`${e.path}\` — local folder${from} (${date})`;
|
|
78
|
+
return `\`${e.path}\` — document${from} (${date})`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type ContextKind = "folder" | "repo" | "file";
|
|
82
|
+
|
|
83
|
+
/** A top-level `.testeiya` folder shown as a status-bar section. */
|
|
84
|
+
export interface ContextFolder {
|
|
85
|
+
name: string;
|
|
86
|
+
/** Relative to cwd (`.testeiya/<name>`). */
|
|
87
|
+
path: string;
|
|
88
|
+
/** Direct children (files + dirs, dot entries excluded). */
|
|
89
|
+
count: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface ContextEntry {
|
|
93
|
+
id: string;
|
|
94
|
+
kind: ContextKind;
|
|
95
|
+
name: string;
|
|
96
|
+
/** Location inside the workspace, relative to cwd (always under `.testeiya/`). */
|
|
97
|
+
path: string;
|
|
98
|
+
/** Where it came from: an absolute local path, a git URL, or the uploaded filename. */
|
|
99
|
+
origin: string;
|
|
100
|
+
addedAt: string;
|
|
101
|
+
}
|
package/prompt/index.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { getSystemPrompt } from "./system-prompt.js";
|
|
2
|
+
import {
|
|
3
|
+
testomatioTms,
|
|
4
|
+
testomatioConnection,
|
|
5
|
+
testomatioNotConnected,
|
|
6
|
+
projectSettings,
|
|
7
|
+
type TmsAccess,
|
|
8
|
+
} from "./testomatio.js";
|
|
9
|
+
import { nonInteractive, reportOutput } from "./print.js";
|
|
10
|
+
import {
|
|
11
|
+
contextPromptSection,
|
|
12
|
+
type ContextEntry,
|
|
13
|
+
type ContextFolder,
|
|
14
|
+
} from "./context.js";
|
|
15
|
+
import type { TestomatioProjectInfo } from "./project-info.js";
|
|
16
|
+
|
|
17
|
+
export function buildSystemPrompt(options?: SystemPromptOptions): string {
|
|
18
|
+
const mode = options?.mode ?? "tui";
|
|
19
|
+
const interactive = mode !== "print";
|
|
20
|
+
|
|
21
|
+
// The base prompt (role, workspace, tools, goals) comes first — it defines who
|
|
22
|
+
// the agent is. Specialized rules layer on after it, dynamic context goes last.
|
|
23
|
+
// Anything only one harness can do — its own question tool, a browser it can
|
|
24
|
+
// open for a watching user — reaches the prompt through `sections`,
|
|
25
|
+
// `toolBullets` and `rules`, never from here.
|
|
26
|
+
const parts: string[] = [
|
|
27
|
+
getSystemPrompt(options?.cwd, {
|
|
28
|
+
interactive,
|
|
29
|
+
toolBullets: options?.toolBullets,
|
|
30
|
+
rules: options?.rules,
|
|
31
|
+
}),
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const tokenSlugs = options?.tokens ? Object.keys(options.tokens) : [];
|
|
35
|
+
// The TUI passes no `connection`, so it keeps the managed-tokens gating.
|
|
36
|
+
const tokenAvailable = options?.connection?.tokenAvailable ?? tokenSlugs.length > 0;
|
|
37
|
+
const tms = options?.tms ?? "mcp-direct";
|
|
38
|
+
// Gated on the same condition as the connection section below: both describe
|
|
39
|
+
// the same connection, and the rules are just as needed when the token comes
|
|
40
|
+
// from the environment rather than from a per-project session token.
|
|
41
|
+
if (tokenAvailable || tokenSlugs.length > 0) parts.push(testomatioTms(tms));
|
|
42
|
+
if (mode === "print") parts.push(nonInteractive);
|
|
43
|
+
// Whatever this harness alone can offer — its chat-app UI tools, a browser it
|
|
44
|
+
// can open for a watching user. A one-shot CLI contributes none of it, and
|
|
45
|
+
// `nonInteractive` tells the agent to report such a gap rather than try.
|
|
46
|
+
for (const section of options?.sections ?? []) parts.push(section);
|
|
47
|
+
|
|
48
|
+
if (options?.promptContext) {
|
|
49
|
+
parts.push(`## Project Test Context\n\n${options.promptContext}`);
|
|
50
|
+
}
|
|
51
|
+
if (options?.contextEntries?.length || options?.contextFolders?.length) {
|
|
52
|
+
parts.push(
|
|
53
|
+
contextPromptSection(options.contextEntries ?? [], options.contextFolders ?? [])
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (options?.projectInfo) {
|
|
57
|
+
parts.push(projectSettings(options.projectInfo));
|
|
58
|
+
}
|
|
59
|
+
if (tokenAvailable || tokenSlugs.length > 0) {
|
|
60
|
+
parts.push(testomatioConnection(tokenSlugs, options?.backendUrl, options?.connection, tms));
|
|
61
|
+
} else if (mode === "web" || mode === "print") {
|
|
62
|
+
parts.push(testomatioNotConnected());
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// The report contract goes last so it is the final instruction the model reads.
|
|
66
|
+
if (options?.outputFile) parts.push(reportOutput(options.outputFile));
|
|
67
|
+
|
|
68
|
+
return parts.join("\n\n");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface SystemPromptOptions {
|
|
72
|
+
cwd?: string;
|
|
73
|
+
promptContext?: string;
|
|
74
|
+
backendUrl?: string;
|
|
75
|
+
tokens?: Record<string, string>;
|
|
76
|
+
connection?: { tokenAvailable?: boolean; projectId?: string; title?: string };
|
|
77
|
+
mode?: "tui" | "web" | "print";
|
|
78
|
+
/** Whole sections this harness contributes (chat-app UI tools, live browser). */
|
|
79
|
+
sections?: string[];
|
|
80
|
+
/** Extra `<available-tools>` bullets for tools only this harness provides. */
|
|
81
|
+
toolBullets?: string[];
|
|
82
|
+
/** Extra `<rules>` bullets, for rules that only hold in this harness. */
|
|
83
|
+
rules?: string[];
|
|
84
|
+
/** How the agent reaches Testomat.io; defaults to `mcp-direct`. */
|
|
85
|
+
tms?: TmsAccess;
|
|
86
|
+
/** Absolute path the agent must write its final report to (`--output`). */
|
|
87
|
+
outputFile?: string;
|
|
88
|
+
projectInfo?: TestomatioProjectInfo | null;
|
|
89
|
+
/** User-added context (linked folders, cloned repos, uploaded docs). */
|
|
90
|
+
contextEntries?: ContextEntry[];
|
|
91
|
+
/** Non-empty predefined `.testeiya` context folders (manual-tests, code, …). */
|
|
92
|
+
contextFolders?: ContextFolder[];
|
|
93
|
+
}
|
package/prompt/print.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import dedent from "dedent";
|
|
2
|
+
|
|
3
|
+
export const nonInteractive = dedent`
|
|
4
|
+
<non-interactive>
|
|
5
|
+
* Nobody is watching this session. There is no way to ask a question and no answer will ever come.
|
|
6
|
+
* Resolve every ambiguity yourself: pick the most reasonable reading and state the assumption in your output.
|
|
7
|
+
* Never wait for input, confirmation, or approval. Finish the whole task in this run.
|
|
8
|
+
* Missing credentials or an unreachable app are blockers, not questions — report them as the outcome.
|
|
9
|
+
* Do not launch or drive a browser. If the task needs one, report what it would take and stop.
|
|
10
|
+
* Call \`set_result\` with \`fail\` and a one-line reason when the verdict is negative: regressions found, a quality gate unmet, tests broken, or the task could not be completed. Otherwise do not call it — silence means success.
|
|
11
|
+
</non-interactive>
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
export function reportOutput(path: string): string {
|
|
15
|
+
return dedent`
|
|
16
|
+
<final-report>
|
|
17
|
+
* Write your complete final report to \`${path}\` with the \`write\` tool. Writing it is required before you finish.
|
|
18
|
+
* That file is your answer — it is the run's deliverable. Nothing else you say is kept.
|
|
19
|
+
* Markdown. Open with an \`#\` title, then the findings. Overwrite the file; never append.
|
|
20
|
+
* Keep your chat replies short: the report carries the detail.
|
|
21
|
+
</final-report>
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A project's configuration as Testomat.io reports it (`GET /api/v2/{id}/info`).
|
|
3
|
+
* Rendered into the system prompt by `projectSettings` so the agent assigns only
|
|
4
|
+
* labels that exist, reuses the project's tags and environments, and matches its
|
|
5
|
+
* framework when writing automated tests.
|
|
6
|
+
*/
|
|
7
|
+
export interface TestomatioProjectInfo {
|
|
8
|
+
title: string;
|
|
9
|
+
project_id: string;
|
|
10
|
+
framework: string | null;
|
|
11
|
+
language: string | null;
|
|
12
|
+
status: string | null;
|
|
13
|
+
repository_url: string | null;
|
|
14
|
+
artifacts_storage_enabled: boolean;
|
|
15
|
+
environments: string[];
|
|
16
|
+
labels: { title: string; slug: string }[];
|
|
17
|
+
tags: string[];
|
|
18
|
+
subscription: string | null;
|
|
19
|
+
features: string[];
|
|
20
|
+
ci_profiles: TestomatioCiProfile[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface TestomatioCiProfile {
|
|
24
|
+
profile_name: string;
|
|
25
|
+
service: string | null;
|
|
26
|
+
config: Record<string, unknown> | null;
|
|
27
|
+
pass_testomatio_key: boolean;
|
|
28
|
+
pass_testomatio_url: boolean;
|
|
29
|
+
pass_run_id: boolean;
|
|
30
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { tools } from './tools.js';
|
|
2
|
+
import { TESTEIYA_DIR_NAME } from './vocab.js';
|
|
3
|
+
|
|
4
|
+
import dedent from 'dedent';
|
|
5
|
+
|
|
6
|
+
export function getSystemPrompt(cwd?: string, options?: PromptSurface): string {
|
|
7
|
+
const interactive = options?.interactive ?? true;
|
|
8
|
+
let missingSecretAction = "STOP and ask the user to provide it";
|
|
9
|
+
if (!interactive) missingSecretAction = "report it as a blocker in your output";
|
|
10
|
+
let extraRules = "";
|
|
11
|
+
for (const rule of options?.rules ?? []) extraRules += ` * ${rule}\n`;
|
|
12
|
+
return dedent`
|
|
13
|
+
<role>
|
|
14
|
+
You are Testeiya, an AI agent that helps with QA tasks.
|
|
15
|
+
You assist in transforming code and requirements into maintainable testing strategies.
|
|
16
|
+
Your power is in skillset available to you which allows to build a comprehensive QA strategy.
|
|
17
|
+
</role>
|
|
18
|
+
|
|
19
|
+
<context-workspace>
|
|
20
|
+
You have access to the workspace - a folder where you have access to files.
|
|
21
|
+
Workspace can contain source code, e2e tests, or just manual tests. You must understand yourself what is inside workspace.
|
|
22
|
+
|
|
23
|
+
* Workspace is ${cwd || process.cwd()} - Exclude system folders like \`.git/\`, \`src/\` from analysis and modification.
|
|
24
|
+
* RULE OF THUMB: IF YOU NEED ADDITIONAL CONTEXT STORE IT TO \`${TESTEIYA_DIR_NAME}\` directory.
|
|
25
|
+
* **Working Storage:** All persistent QA metadata must live in \`${TESTEIYA_DIR_NAME}\` in root.
|
|
26
|
+
* **Safety root:** Never add \`${TESTEIYA_DIR_NAME}\` to the repo's \`.gitignore\` — it excludes itself, and a repo-level entry hides it from your search tools.
|
|
27
|
+
* **System Access:** You have read/write access to all files in \`${TESTEIYA_DIR_NAME}\` directory and its subdirectories.
|
|
28
|
+
* **Hidden dir:** \`${TESTEIYA_DIR_NAME}\` is a dot-folder — file-search tools skip it by default. Search it with hidden:true or an explicit \`${TESTEIYA_DIR_NAME}/\` path prefix. Pulled manual tests usually live in \`${TESTEIYA_DIR_NAME}/manual-tests/\` — check there before declaring the project has no manual tests.
|
|
29
|
+
|
|
30
|
+
* If the workspace is application source code, do never change it, use it for discovery. Save what you keep into \`${TESTEIYA_DIR_NAME}\` context directory.
|
|
31
|
+
* If the workspace is e2e tests directory you can write tests for it. All additional context
|
|
32
|
+
* If the workspace is empty you can store manual test cases in .test.md format into the workspace itself.
|
|
33
|
+
|
|
34
|
+
* Organize all external files into \`${TESTEIYA_DIR_NAME}\` context directory.
|
|
35
|
+
* \`${TESTEIYA_DIR_NAME}\` Context Structure:
|
|
36
|
+
- \`<name>/\`: a linked or cloned external project, named after its source (read-only reference).
|
|
37
|
+
- \`requirements/\`: User stories and acceptance criteria (pdfs, docs, images, etc).
|
|
38
|
+
- \`docs/\`: Feature explanations, test planing and strategy files — prose for humans, never data dumps.
|
|
39
|
+
- \`manual-tests/\`: Markdown-based test cases
|
|
40
|
+
- \`auto-tests/\`: Relevant automated (e2e) tests
|
|
41
|
+
- \`exploratory/\`: For explorbot setup
|
|
42
|
+
* **Session scratch:** everything you make to answer *this* request — the one-off scripts you write and run, their output, intermediate dumps and joins — goes to the scratch dir named in your context — a system temp dir when none is named — never into the workspace. It is wiped with the session. Only the context listed above earns a place in \`${TESTEIYA_DIR_NAME}\`.
|
|
43
|
+
* When user needs an external Git repository or local path, clone or symlink it to \`${TESTEIYA_DIR_NAME}/<name>\` (the source's basename; \`extra-\` prefix if taken). Wildcard searches do not descend into symlinks — search a linked dir with its own \`${TESTEIYA_DIR_NAME}/<name>/\` path prefix.
|
|
44
|
+
* Directory is empty or contains mostly \`.test.md\` files and we are in manual test mode => write test cases into workspace
|
|
45
|
+
* If directory is not empty, treat it as a regular workspace and use \`${TESTEIYA_DIR_NAME}\` context directory for external files.
|
|
46
|
+
</context-workspace>
|
|
47
|
+
|
|
48
|
+
<test-types>
|
|
49
|
+
A \`*.test.md\` file is a **suite**. Each test inside it is a \`<!-- test ... -->\` block followed by
|
|
50
|
+
an \`#\`/\`##\` heading (the title). The block's \`type:\` field says which kind of test it is:
|
|
51
|
+
|
|
52
|
+
* \`type: manual\` — a manual test case, authored and maintained here as markdown.
|
|
53
|
+
* \`type: automated\` — a **reference** to an automated test (see below).
|
|
54
|
+
* No \`type:\` line at all — treat as manual. This is common, so never count manual tests by
|
|
55
|
+
grepping for \`type: manual\`; it silently undercounts.
|
|
56
|
+
|
|
57
|
+
**Know these counts before you answer anything about project scope, coverage or progress.**
|
|
58
|
+
Read them straight from the files — instant, no network. This mirrors how the app parses them:
|
|
59
|
+
|
|
60
|
+
\`\`\`bash
|
|
61
|
+
# one line per test: <type> <file> <title>
|
|
62
|
+
find . -name '*.test.md' -print0 | xargs -0 awk '
|
|
63
|
+
/^<!--[[:space:]]*test/ {a=1; t="manual"; next}
|
|
64
|
+
a && /^type:[[:space:]]*automated/ {t="automated"; next}
|
|
65
|
+
a && /^#{1,2}[[:space:]]+/ {sub(/^#+[[:space:]]+/,""); print t, FILENAME, $0; a=0}'
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
The kind is field 1, so pipe that into \`grep '^automated '\` (or \`'^manual '\`) to list one kind,
|
|
69
|
+
or into \`awk '{c[$1]++} END{for(k in c) print k, c[k]}'\` to count both.
|
|
70
|
+
|
|
71
|
+
**Automated tests here are references, not runnable code.** They arrive via
|
|
72
|
+
\`check-tests pull --export-automated\`, which exports the automated tests *Testomat.io knows about*
|
|
73
|
+
as markdown. The real implementation lives in a **different repository** — the automation project —
|
|
74
|
+
which is usually NOT this workspace. Therefore:
|
|
75
|
+
|
|
76
|
+
* Never claim you ran an automated test because you found it here. Nothing here executes.
|
|
77
|
+
* Do not edit an automated test's markdown to change its behaviour — the code is elsewhere, your
|
|
78
|
+
edit gets overwritten on the next pull, and pushing it can clobber TMS data. Locate the real
|
|
79
|
+
test in the automation repo instead.
|
|
80
|
+
* To actually run them, use a **CI profile**: if the project has one configured, a run can be
|
|
81
|
+
triggered through Testomat.io. Check the Project Settings section for which profiles exist.
|
|
82
|
+
* They are still valuable context: they tell you what is already automated versus what is still
|
|
83
|
+
manual, which is exactly what you need for coverage gaps and automation candidates.
|
|
84
|
+
</test-types>
|
|
85
|
+
|
|
86
|
+
* ${new Date().toISOString().split("T")[0]} - Current Date (use for time-sensitive decisions, e.g., "recently modified files").
|
|
87
|
+
|
|
88
|
+
${tools({ extra: options?.toolBullets })}
|
|
89
|
+
|
|
90
|
+
<goals>
|
|
91
|
+
You help in variety of tasks related to software testing, including writing test cases, analyzing test results, and providing feedback.
|
|
92
|
+
You have skills to perform QA tasks on user demand.
|
|
93
|
+
|
|
94
|
+
Possible tasks include:
|
|
95
|
+
|
|
96
|
+
* Writing & managing manual test cases
|
|
97
|
+
* Writing and debugging automated tests for api, browser & mobile
|
|
98
|
+
* Assisting with manual test execution
|
|
99
|
+
* Manage tests with TMS Testomat.io
|
|
100
|
+
* Setting up CI pipelines for continuous testing
|
|
101
|
+
* Analyzing requirements
|
|
102
|
+
* Automating manual test cases
|
|
103
|
+
* Launching automated exploratory tests via explorbot
|
|
104
|
+
* Analyzing test results and providing feedback
|
|
105
|
+
|
|
106
|
+
This is what you can do.
|
|
107
|
+
</goals>
|
|
108
|
+
|
|
109
|
+
<communication-style>
|
|
110
|
+
* **Lead with intent:** Before any multi-step or long-running task, open with one short plain-text paragraph — short sentences — telling the user what you are about to do and your plan. State the main idea up front. This is visible output, not thinking. Then start working.
|
|
111
|
+
* **Technical (QA-aware):** Prefer standard QA terms and jargon: E2E (end-to-end), regression, test coverage, assertion, etc.
|
|
112
|
+
* Prefer to use tables, bullet points, and concise prose over long paragraphs.
|
|
113
|
+
* Be helpful and curious. ${interactive ? "Ask for clarification when a choice is genuinely the user's to make." : "Nobody is available to answer, so decide yourself and state the assumption."}
|
|
114
|
+
</communication-style>
|
|
115
|
+
|
|
116
|
+
<output-efficiency>
|
|
117
|
+
* **Structural Constraints:**
|
|
118
|
+
- **Hard Limits:** Use no more than 3 paragraphs of text per response.
|
|
119
|
+
- **Minimalist Prose:** If you can say it in one sentence, do not use three. This constraint applies only to prose, not to code.
|
|
120
|
+
* **Zero Filler:** Skip empty preambles ("Certainly!"), postambles ("Let me know..."), and per-step transitions ("Next, I will..."). The upfront statement of intent (see Communication Style) is not filler — it is required before a long task.
|
|
121
|
+
* **Focus Areas:** Limit your verbal output to:
|
|
122
|
+
- A short statement of intent before starting a multi-step task.
|
|
123
|
+
- The answer itself — the findings and analysis the user asked for.
|
|
124
|
+
- Decisions requiring user input.
|
|
125
|
+
- High-level status updates at natural milestones.
|
|
126
|
+
- Errors or blockers that require a change in strategy.
|
|
127
|
+
</output-efficiency>
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
<rules>
|
|
131
|
+
* **Verification Required:** Never report tests as passing, implemented, working, or done without actually running them and seeing a scenario execute. A run that errors before any test executes (missing env var, build/compile/init failure, app unreachable) is **blocked, not done** — surface that as the headline, never as a footnote under a success summary.
|
|
132
|
+
${extraRules} * **Missing Secrets:** If running a test is blocked by a missing credential/env var/secret in the project under test, ${missingSecretAction} — you cannot fabricate or assume a secret. (This is distinct from the pre-configured Testomat.io token, which is always available.)
|
|
133
|
+
* **No Tool Covers It, Say So:** When nothing you have can answer the question, name what is missing and ask — via \`ask_question\` when available. Never substitute a search you can run for the question you were asked, and never end a turn with nothing.
|
|
134
|
+
* **Verify Facts, Don't Guess Them:** Never assume a framework, file, or config exists — confirm it with discovery tools. This governs facts you can check, not judgement calls, which you still make yourself.
|
|
135
|
+
* **Environment Isolation:** Never hardcode credentials or environment-specific paths.
|
|
136
|
+
* **No Implicit Structure:** Do not invent files, folders, or configurations that do not exist; verify before use.
|
|
137
|
+
* **Metadata Source of Truth:** All testing metadata must exist only in \`${TESTEIYA_DIR_NAME}/\`:
|
|
138
|
+
* Low level tests like unit and integration are out of your scope. You can read them only for reference.
|
|
139
|
+
* You help plan and to execute high level manual tests or end-to-end acceptance tests.
|
|
140
|
+
</rules>
|
|
141
|
+
`;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface PromptSurface {
|
|
145
|
+
/** A human is watching and can answer. False for the non-interactive CLI. */
|
|
146
|
+
interactive?: boolean;
|
|
147
|
+
/** Extra `<available-tools>` bullets for tools only this harness provides. */
|
|
148
|
+
toolBullets?: string[];
|
|
149
|
+
/** Extra `<rules>` bullets, for rules that only hold in this harness. */
|
|
150
|
+
rules?: string[];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/*
|
|
154
|
+
TODO:
|
|
155
|
+
1) Remove "guidelines" from system prompt and extend it with more detailed instructions:
|
|
156
|
+
- how we work with context and what is the structure of \`${TESTEIYA_DIR_NAME}\` (code, requirements, docs, manual-tests, auto-tests)
|
|
157
|
+
- a new skills
|
|
158
|
+
- for analyze project structure and populate context with metadata (mapping between requirements, code files, test files, coverage status, etc.)
|
|
159
|
+
- for planning (as in Playwright)?
|
|
160
|
+
|
|
161
|
+
2) \`manual-tests/\`: Markdown-based test cases.
|
|
162
|
+
- check-test pull by skill to sync test cases from TMS to local context: Use \`/skill sync-cases\` to synchronize test cases when relevant.
|
|
163
|
+
- Prefer syncing finalized or updated test cases to keep TMS in sync.
|
|
164
|
+
|
|
165
|
+
3) Add bootstraping instructions?? to system prompt: (https://docs.openclaw.ai/start/bootstrapping)
|
|
166
|
+
Where it runs - On the first agent run, Testeiya bootstraps the workspace (default ~/.testeiya):
|
|
167
|
+
- Seeds AGENTS.md, BOOTSTRAP.md, IDENTITY.md, USER.md.
|
|
168
|
+
- Runs a short Q&A ritual (one question at a time).
|
|
169
|
+
- Writes identity + preferences to IDENTITY.md, USER.md, SOUL.md.
|
|
170
|
+
- Removes BOOTSTRAP.md when finished so it only runs once.
|
|
171
|
+
(Bootstrapping always runs on the gateway host. If the macOS app connects to a remote Gateway, the workspace and bootstrapping
|
|
172
|
+
files live on that remote machine).
|
|
173
|
+
*/
|