testeiya 0.3.9 โ†’ 0.3.10

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 (176) hide show
  1. package/README.md +312 -27
  2. package/dist/prompt/index.js +6 -2
  3. package/dist/prompt/index.js.map +1 -1
  4. package/dist/prompt/print.js +8 -0
  5. package/dist/prompt/print.js.map +1 -1
  6. package/dist/prompt/system-prompt.js +14 -4
  7. package/dist/prompt/system-prompt.js.map +1 -1
  8. package/dist/prompt/testomatio.js +3 -3
  9. package/dist/prompt/tools.js +15 -7
  10. package/dist/prompt/tools.js.map +1 -1
  11. package/dist/src/args.js +147 -47
  12. package/dist/src/args.js.map +1 -1
  13. package/dist/src/cli.js +50 -14
  14. package/dist/src/cli.js.map +1 -1
  15. package/dist/src/doctor.js +186 -0
  16. package/dist/src/doctor.js.map +1 -0
  17. package/dist/src/env.js +29 -5
  18. package/dist/src/env.js.map +1 -1
  19. package/dist/src/mcp.js +3 -3
  20. package/dist/src/mcp.js.map +1 -1
  21. package/dist/src/model.js +15 -10
  22. package/dist/src/model.js.map +1 -1
  23. package/dist/src/models.js +38 -0
  24. package/dist/src/models.js.map +1 -0
  25. package/dist/src/output.js +185 -0
  26. package/dist/src/output.js.map +1 -0
  27. package/dist/src/run.js +116 -24
  28. package/dist/src/run.js.map +1 -1
  29. package/dist/src/session.js +38 -23
  30. package/dist/src/session.js.map +1 -1
  31. package/dist/src/sessions.js +61 -0
  32. package/dist/src/sessions.js.map +1 -0
  33. package/package.json +7 -3
  34. package/prompt/index.ts +11 -2
  35. package/prompt/print.ts +9 -0
  36. package/prompt/system-prompt.ts +18 -4
  37. package/prompt/testomatio.ts +3 -3
  38. package/prompt/tools.ts +15 -7
  39. package/skills/codeceptjs/ci-fix-tests/SKILL.md +119 -0
  40. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +141 -0
  41. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +100 -0
  42. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +196 -0
  43. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +83 -0
  44. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +126 -0
  45. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +109 -0
  46. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +295 -0
  47. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +339 -0
  48. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +459 -0
  49. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +338 -0
  50. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +78 -0
  51. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +102 -0
  52. package/skills/playwright/playwright-best-practices/SKILL.md +303 -0
  53. package/skills/playwright/playwright-best-practices/advanced/authentication-flows.md +360 -0
  54. package/skills/playwright/playwright-best-practices/advanced/authentication.md +871 -0
  55. package/skills/playwright/playwright-best-practices/advanced/clock-mocking.md +364 -0
  56. package/skills/playwright/playwright-best-practices/advanced/mobile-testing.md +409 -0
  57. package/skills/playwright/playwright-best-practices/advanced/multi-context.md +288 -0
  58. package/skills/playwright/playwright-best-practices/advanced/multi-user.md +393 -0
  59. package/skills/playwright/playwright-best-practices/advanced/network-advanced.md +452 -0
  60. package/skills/playwright/playwright-best-practices/advanced/third-party.md +464 -0
  61. package/skills/playwright/playwright-best-practices/architecture/pom-vs-fixtures.md +363 -0
  62. package/skills/playwright/playwright-best-practices/architecture/test-architecture.md +369 -0
  63. package/skills/playwright/playwright-best-practices/architecture/when-to-mock.md +383 -0
  64. package/skills/playwright/playwright-best-practices/browser-apis/browser-apis.md +391 -0
  65. package/skills/playwright/playwright-best-practices/browser-apis/iframes.md +403 -0
  66. package/skills/playwright/playwright-best-practices/browser-apis/service-workers.md +504 -0
  67. package/skills/playwright/playwright-best-practices/browser-apis/websockets.md +403 -0
  68. package/skills/playwright/playwright-best-practices/core/annotations.md +424 -0
  69. package/skills/playwright/playwright-best-practices/core/assertions-waiting.md +361 -0
  70. package/skills/playwright/playwright-best-practices/core/configuration.md +452 -0
  71. package/skills/playwright/playwright-best-practices/core/fixtures-hooks.md +417 -0
  72. package/skills/playwright/playwright-best-practices/core/global-setup.md +434 -0
  73. package/skills/playwright/playwright-best-practices/core/locators.md +242 -0
  74. package/skills/playwright/playwright-best-practices/core/page-object-model.md +315 -0
  75. package/skills/playwright/playwright-best-practices/core/projects-dependencies.md +453 -0
  76. package/skills/playwright/playwright-best-practices/core/test-data.md +492 -0
  77. package/skills/playwright/playwright-best-practices/core/test-suite-structure.md +361 -0
  78. package/skills/playwright/playwright-best-practices/core/test-tags.md +298 -0
  79. package/skills/playwright/playwright-best-practices/debugging/console-errors.md +420 -0
  80. package/skills/playwright/playwright-best-practices/debugging/debugging.md +504 -0
  81. package/skills/playwright/playwright-best-practices/debugging/error-testing.md +360 -0
  82. package/skills/playwright/playwright-best-practices/debugging/flaky-tests.md +496 -0
  83. package/skills/playwright/playwright-best-practices/frameworks/angular.md +530 -0
  84. package/skills/playwright/playwright-best-practices/frameworks/nextjs.md +469 -0
  85. package/skills/playwright/playwright-best-practices/frameworks/react.md +531 -0
  86. package/skills/playwright/playwright-best-practices/frameworks/vue.md +574 -0
  87. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +468 -0
  88. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/docker.md +283 -0
  89. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/github-actions.md +546 -0
  90. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/gitlab.md +397 -0
  91. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/other-providers.md +521 -0
  92. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +371 -0
  93. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/performance.md +453 -0
  94. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/reporting.md +424 -0
  95. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +497 -0
  96. package/skills/playwright/playwright-best-practices/testing-patterns/accessibility.md +359 -0
  97. package/skills/playwright/playwright-best-practices/testing-patterns/api-testing.md +719 -0
  98. package/skills/playwright/playwright-best-practices/testing-patterns/browser-extensions.md +506 -0
  99. package/skills/playwright/playwright-best-practices/testing-patterns/canvas-webgl.md +493 -0
  100. package/skills/playwright/playwright-best-practices/testing-patterns/component-testing.md +500 -0
  101. package/skills/playwright/playwright-best-practices/testing-patterns/drag-drop.md +576 -0
  102. package/skills/playwright/playwright-best-practices/testing-patterns/electron.md +509 -0
  103. package/skills/playwright/playwright-best-practices/testing-patterns/file-operations.md +377 -0
  104. package/skills/playwright/playwright-best-practices/testing-patterns/file-upload-download.md +562 -0
  105. package/skills/playwright/playwright-best-practices/testing-patterns/forms-validation.md +561 -0
  106. package/skills/playwright/playwright-best-practices/testing-patterns/graphql-testing.md +331 -0
  107. package/skills/playwright/playwright-best-practices/testing-patterns/i18n.md +508 -0
  108. package/skills/playwright/playwright-best-practices/testing-patterns/performance-testing.md +476 -0
  109. package/skills/playwright/playwright-best-practices/testing-patterns/security-testing.md +430 -0
  110. package/skills/playwright/playwright-best-practices/testing-patterns/visual-regression.md +634 -0
  111. package/skills/playwright/playwright-cli/SKILL.md +420 -0
  112. package/skills/playwright/playwright-cli/references/element-attributes.md +23 -0
  113. package/skills/playwright/playwright-cli/references/playwright-tests.md +39 -0
  114. package/skills/playwright/playwright-cli/references/request-mocking.md +87 -0
  115. package/skills/playwright/playwright-cli/references/running-code.md +241 -0
  116. package/skills/playwright/playwright-cli/references/session-management.md +225 -0
  117. package/skills/playwright/playwright-cli/references/storage-state.md +275 -0
  118. package/skills/playwright/playwright-cli/references/test-generation.md +433 -0
  119. package/skills/playwright/playwright-cli/references/tracing.md +139 -0
  120. package/skills/playwright/playwright-cli/references/video-recording.md +143 -0
  121. package/skills/skills.lock.json +39 -36
  122. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +76 -0
  123. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  124. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +108 -0
  125. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +86 -0
  126. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  127. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  128. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  129. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  130. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  131. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  132. package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +56 -0
  133. package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +242 -0
  134. package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +182 -0
  135. package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +22 -0
  136. package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +90 -0
  137. package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +53 -0
  138. package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +52 -0
  139. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +107 -0
  140. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +113 -0
  141. package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +29 -0
  142. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  143. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +153 -0
  144. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  145. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  146. package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +289 -0
  147. package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +86 -0
  148. package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +54 -0
  149. package/skills/testomatio/test-management/improve-test-cases/SKILL.md +114 -0
  150. package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +66 -0
  151. package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +141 -0
  152. package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +354 -0
  153. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +82 -0
  154. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +37 -0
  155. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +118 -0
  156. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +149 -0
  157. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +54 -0
  158. package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +126 -0
  159. package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +128 -0
  160. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  161. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  162. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  163. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +174 -0
  164. package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +138 -0
  165. package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +65 -0
  166. package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +40 -0
  167. package/skills/testomatio/test-management/qa-thinking/SKILL.md +36 -0
  168. package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +267 -0
  169. package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +387 -0
  170. package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +72 -0
  171. package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +159 -0
  172. package/skills/testomatio/test-management/scan-automation-project/SKILL.md +152 -0
  173. package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +107 -0
  174. package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +140 -0
  175. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +195 -0
  176. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +177 -0
@@ -0,0 +1,65 @@
1
+ # E2E Framework Detection
2
+
3
+ How to detect the framework in use and where Testomatio IDs live in each.
4
+
5
+ ## Detection signals
6
+
7
+ | Framework | Filename patterns | Imports | Test syntax |
8
+ | ------------ | --------------------------------------------------------- | ------------------------------------ | ---------------------------------------- |
9
+ | Playwright | `*.spec.ts`, `*.spec.js`, `*.test.ts` | `@playwright/test` | `test(...)`, `test.describe(...)` |
10
+ | Cypress | `*.cy.js`, `*.cy.ts` | `cypress` | `describe(...)`, `it(...)`, `context(...)` |
11
+ | WebdriverIO | `*.test.js`, `*.e2e.js` | `@wdio/cli`, `webdriverio` | `describe(...)`, `it(...)` |
12
+ | Puppeteer | `*.test.js` | `puppeteer` | `describe(...)`, `it(...)` |
13
+ | CodeceptJS | `*_test.js`, `*.test.js` | `codeceptjs` | `Feature(...)`, `Scenario(...)` |
14
+ | Appium | `*.spec.js`, `*.e2e.js` | `appium`, `webdriverio` | `describe(...)`, `it(...)` |
15
+ | Mocha (e2e) | `*.test.js`, `*.spec.js` | `mocha` | `describe(...)`, `it(...)` |
16
+ | Jest (e2e) | `*.test.js`, `*.spec.js` | `jest` | `describe(...)`, `it(...)`, `test(...)` |
17
+
18
+ Look at filename patterns first, then confirm with imports. Configuration files (`playwright.config.*`, `cypress.config.*`, `wdio.conf.*`, `codecept.conf.*`) are the strongest tiebreaker.
19
+
20
+ ## Where Testomatio IDs live
21
+
22
+ IDs are appended to test/suite names โ€” never inside code blocks:
23
+
24
+ ```javascript
25
+ // Playwright / WebdriverIO / Mocha / Jest / Puppeteer / Cypress
26
+ describe('<suite title> @S1a2b3c4d', () => {
27
+ it('<test title> @T5e6f7a8b', () => { ... });
28
+ });
29
+
30
+ test('<test title> @smoke @T5e6f7a8b', async ({ page }) => { ... });
31
+ ```
32
+
33
+ ```javascript
34
+ // CodeceptJS
35
+ Feature('<suite title> @S1a2b3c4d');
36
+
37
+ Scenario('<test title> @T5e6f7a8b', ({ I }) => { ... });
38
+ ```
39
+
40
+ Tags use the same `@word` form (`@smoke`, `@regression`, `@jira-123`).
41
+
42
+ ## Populating IDs
43
+
44
+ If tests do not yet contain `@S` / `@T` markers, run `check-tests` with the matching framework adapter and `--update-ids`:
45
+
46
+ ```bash
47
+ # Playwright
48
+ npx check-tests@latest Playwright "**/*{.,_}{test,spec}.{js,ts}" --update-ids
49
+
50
+ # Cypress
51
+ npx check-tests@latest Cypress "**/*.cy.{js,ts}" --update-ids
52
+
53
+ # CodeceptJS
54
+ npx check-tests@latest CodeceptJS "**/*_test.js" --update-ids
55
+
56
+ # WebdriverIO
57
+ npx check-tests@latest WebdriverIO "**/*.{test,e2e}.js" --update-ids
58
+ ```
59
+
60
+ `check-tests` rewrites the test files in place, inserting the IDs assigned by Testomat.io. Commit the changes before running `qa-test-code-coverage`.
61
+
62
+ ## Related skills
63
+
64
+ - `qa-e2e-tests-reporting` โ€” install `@testomatio/reporter` and import tests via `check-tests`.
65
+ - `sync-test-cases-with-tms` โ€” pull/push manual cases. See its [Testomat.io CLI reference](../../sync-test-cases-with-tms/references/TESTOMATIO_CLI.md) for the full `check-tests` command set, including `--update-ids`.
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ // Sanity-check a coverage YAML mapping (manual and automated โ€” same format).
3
+ //
4
+ // `js-yaml` does the YAML parsing; this script just checks the result.
5
+ // Run it from the project root and pipe the parsed file in:
6
+ //
7
+ // npx js-yaml coverage.tests.yml | node check-coverage.mjs
8
+ //
9
+ // (`npx js-yaml` prints JSON, and fails loudly if the YAML is malformed,
10
+ // so a broken file never reaches this script.)
11
+ //
12
+ // Reports: keys whose path is missing on disk, keys with no identifiers,
13
+ // and the list of @S/@T/tag IDs referenced โ€” cross-check those against
14
+ // the test set you already extracted. Exits non-zero on any problem.
15
+ // (Never use python.)
16
+
17
+ import { existsSync, readFileSync } from 'node:fs';
18
+
19
+ const map = JSON.parse(readFileSync(0, 'utf8')); // fd 0 = stdin
20
+ if (!map || typeof map !== 'object' || Array.isArray(map)) {
21
+ console.error('expected a JSON object of "path": [ids] โ€” pipe `npx js-yaml <file>` into me');
22
+ process.exit(1);
23
+ }
24
+
25
+ const ids = new Set();
26
+ let problems = 0;
27
+
28
+ for (const [key, value] of Object.entries(map)) {
29
+ const list = Array.isArray(value) ? value : value == null ? [] : [value];
30
+ if (list.length === 0) { console.log('empty: ', key); problems++; }
31
+ list.forEach((id) => ids.add(String(id)));
32
+
33
+ if (key.startsWith('tag:')) continue; // tag selector, not a path
34
+ const base = key.replace(/[\/\\][^\/\\]*[*?[\]].*$/, ''); // a glob โ†’ its non-glob prefix
35
+ if (base && !existsSync(base)) { console.log('missing:', key); problems++; }
36
+ }
37
+
38
+ console.log('\nidentifiers:', [...ids].sort().join(', ') || '(none)');
39
+ console.log(problems ? `\n${problems} problem(s) above โ€” fix them` : '\nall keys resolve, no empty entries');
40
+ process.exit(problems ? 1 : 0);
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: qa-thinking
3
+ description: Analyze a feature a developer is building from a QA perspective โ€” edge cases, negative flows, abuses, unobvious scenarios. Use when asked "what could go wrong?", "what am I missing?", or "review this as QA".
4
+ ---
5
+
6
+ # QA Thinking
7
+
8
+ Think about a feature like a senior QA engineer and surface risk scenarios.
9
+ The user can explain the idea, or take it from the current branch or PR.
10
+ For a PR, gather intent with the `qa-pr-requirements-analyzer` skill first.
11
+ When the feature's current behavior is unclear, establish it with the `qa-explain-behavior` skill first.
12
+
13
+ ## Think
14
+
15
+ - Positive scenarios.
16
+ - Negative scenarios: possible misuse and failures.
17
+ - Unobvious usage: repeated actions, boundary values, cancellations.
18
+ - Combinations: how this feature interacts with other features.
19
+ - Possible abuses.
20
+ - Data consistency: inputs that create inconsistent state, and how it affects the system later.
21
+ - Security vulnerabilities.
22
+
23
+ ## Output
24
+
25
+ - Section `๐Ÿ‘“ What must be clarified`: questions to resolve important ambiguities.
26
+ - Section `๐Ÿ”ฌ What must be verified`: up to 10 most important risk scenarios, no more.
27
+ - Prefer simple wording and short sentences.
28
+ - When asked for more, propose the next batch of scenarios.
29
+
30
+ ## Next actions
31
+
32
+ Offer after the analysis:
33
+
34
+ - Split the scenarios across testing levels โ†’ `qa-split-testing-levels-pyramid` skill.
35
+ - Turn scenarios into test cases or a checklist โ†’ `qa-write-test-cases` skill.
36
+ - Ambiguities point to requirement defects โ†’ `qa-requirement-reviewer` skill.
@@ -0,0 +1,267 @@
1
+ ---
2
+ name: qa-write-test-cases
3
+ description: Generate test cases and checklists for software testing. Use this skill whenever the user asks to create test cases, test scenarios, test plans, checklists, QA documentation, or mentions testing activities like "write tests for feature", "create a test checklist", "generate test scenarios from requirements", or similar. This skill works better if user provides documentation, requirements, etc., or it can create test cases based on the user prompt without any additional context.
4
+ ---
5
+
6
+ # Test Case & Checklist Generator
7
+
8
+ Generates test cases and checklists for software testing from the context the user provides.
9
+
10
+ References:
11
+
12
+ - [Test Case Format](./references/test-case-format.md) โ€” markdown format for suites, tests, and steps (Testomat.io-friendly)
13
+ - [Writing Rules](./references/writing-rule.md) โ€” rules for suites, tests, preconditions, steps, and AI writing patterns to avoid
14
+ - [Testomat.io TMS Guide](./references/testomat-tms-guide.md) โ€” Testomat.io conventions and MCP tools
15
+
16
+ ## Prerequisites
17
+
18
+ - Project structure checked (source code, e2e tests, test cases) via the /scan-automation-project skill.
19
+ - Existing Testomat.io tests pulled via the /sync-test-cases-with-tms skill.
20
+ - PLAN mode enabled, if available, for the interview steps.
21
+
22
+ ## User interaction
23
+
24
+ - **Always generate a checklist before test cases**, even if the user asks for test cases directly.
25
+ - **Do not skip steps. Get user approval at each gate before moving to the next step.**
26
+ - Strictly recommend PLAN mode. Switch to Edit mode only on the last step โ€” writing test cases to md files.
27
+ - Use the Ask tool for choices when available.
28
+ - Fill input fields with suggestions when asking the user for input.
29
+ - Mark questions with โ“ and numbered options:
30
+
31
+ ```
32
+ โ“ Do you want to:
33
+
34
+ 1. action 1
35
+ 2. action 2
36
+ 3. type something else
37
+ ```
38
+
39
+ ## Workflow
40
+
41
+ 1. Gather context and show sources โ€” approval gate
42
+ 2. Ask for coverage scope โ€” approval gate
43
+ 3. Ask for role โ€” approval gate; skipped for smoke
44
+ 4. Generate checklist โ€” approval gate
45
+ 5. Generate detailed test cases
46
+ 6. Show summary
47
+
48
+ ### Step 1: Gather context
49
+
50
+ Understand:
51
+
52
+ - the feature/functionality under test and its business goals
53
+ - main testing flows and user journeys
54
+ - specific areas of concern
55
+
56
+ Information sources:
57
+
58
+ - User prompt
59
+ - Task tracking systems (Jira, etc.)
60
+ - Requirements documents (Confluence, etc.)
61
+ - Design mockups (Figma, Miro, etc.)
62
+ - Existing test cases (TestRail, Testomat.io, etc.)
63
+ - Source code:
64
+ - manual test files: `.test.md` or `.md` in folders like `manual-tests`, `tests`, `manual`, `qa`, `spec`
65
+ - automated test files (spec, test, cy files, etc.)
66
+ - project structure
67
+
68
+ Sources may come as pasted text, links, or MCP tools. Ask the user for MCP configuration if needed.
69
+
70
+ Analyzing source code:
71
+
72
+ - Usually this skill runs from an automation project without application code. Check which case this is.
73
+ - Automation-only project: scan briefly, focus on test files.
74
+ - Application + automation project: scan the application code thoroughly; skip unit-test depth unless the user asks.
75
+
76
+ #### Testomat.io TMS detection
77
+
78
+ Detect if this is a Testomat.io project. Two options:
79
+
80
+ Option 1 โ€” MCP. If the `testomatio` MCP is available, gather context:
81
+
82
+ - `suites_list`, `suites_search` โ€” existing structure
83
+ - `tests_search`, `tests_list` โ€” existing tests, avoid duplicates
84
+ - `steps_list`, `steps_search` โ€” reusable shared steps
85
+ - `tags_list`, `labels_list` โ€” project conventions
86
+
87
+ Option 2 โ€” `sync-test-cases-with-tms` skill (with `check-tests` lib). Run it with the `pull` action, then analyze the downloaded files for:
88
+
89
+ - existing structure and suites
90
+ - current test cases (to avoid duplicates)
91
+ - project conventions (tags, labels, priority levels)
92
+
93
+ If existing test cases intersect with the feature under test, report them to the user and suggest expanding them or creating a new suite.
94
+
95
+ #### Approval gate
96
+
97
+ Show the list of sources (names only, no content) and ask:
98
+
99
+ ```markdown
100
+ I've gathered information from the following sources:
101
+
102
+ - Jira issue ABC-123
103
+ - Confluence
104
+ - Figma
105
+
106
+ โ“ Do you want to:
107
+
108
+ 1. โžก๏ธ Go to next step
109
+ 2. โœ๏ธ Type changes
110
+ ```
111
+
112
+ ### Step 2: Ask for coverage scope
113
+
114
+ The scope sets the initial checklist size; the user can still fine-tune it in Step 4.
115
+
116
+ - **Compute approximate test counts per tier from your Step 1 analysis. Do not use generic or hardcoded ranges** โ€” the numbers must reflect the specific feature under test.
117
+ - If you can't reasonably estimate (feature too vague, context too thin), say so and either omit the numbers or go back to Step 1.
118
+ - If the user picks โœ๏ธ Other, accept a number ("around 10") or a free-form description ("just the API contract, no UI") and size the checklist from it.
119
+
120
+ Show each option as a block: bold label with test count on the first line, description on the next. Replace `<N>` with your estimates:
121
+
122
+ ```markdown
123
+ โ“ **How much coverage do you want?**
124
+
125
+ **1. ๐Ÿš€ Smoke** ~<N> tests
126
+ Critical-path only
127
+
128
+ **2. โš–๏ธ Balanced** ~<N> tests
129
+ Happy path, key negative and common edge cases
130
+
131
+ **3. ๐Ÿงจ Exhaustive** ~<N> tests
132
+ Full coverage incl. error states, boundaries, and security/perf/i18n where relevant
133
+
134
+ **4. โœ๏ธ Other**
135
+ Proceed to specific role selection, type a number of tests, or describe scope in your own words
136
+ ```
137
+
138
+ ### Step 3: Ask for role
139
+
140
+ - If the user picked ๐Ÿš€ Smoke in Step 2: **skip this step** โ€” auto-apply โš™๏ธ default and go straight to Step 4. A smoke suite is too small to benefit from a specialized role.
141
+ - Otherwise show the roles (markdown table with name and short description) and ask the user to pick one. Recommend a role based on context.
142
+ - Use โš™๏ธ default if the user does not specify a role.
143
+ - If the user selects ๐Ÿ”ง other, ask them to define a custom role.
144
+ - If you show only some roles, add a "Show all available roles" option:
145
+
146
+ ```
147
+ โ“ Choose role:
148
+
149
+ 1. default (or recommended role based on context)
150
+ 2. โ˜ฐ Show all available roles
151
+ 3. โœ๏ธ Type role name
152
+ ```
153
+
154
+ #### Roles
155
+
156
+ | Role | Description |
157
+ | ------------------ | ---------------------------------------- |
158
+ | **โš™๏ธ default** | **balanced** approach |
159
+ | **๐ŸŒˆ optimist** | **positive** flows, happy path |
160
+ | **๐Ÿค“ nerd** | **details**, dependencies, perfectionist |
161
+ | **๐Ÿ”ช psycho** | **edge cases** |
162
+ | **๐Ÿ” pentest** | **security** |
163
+ | **๐ŸŽจ picasso** | **ui/ux** |
164
+ | **โš–๏ธ lawyer** | **texts**, error messages, typos, etc. |
165
+ | **๐ŸŒ polyglot** | **localization**, translations |
166
+ | **๐Ÿ“ˆ performance** | **performance**, load, stress, etc. |
167
+ | ๐Ÿ”ง other | **specify your own role** |
168
+
169
+ ### Step 4: Generate checklist
170
+
171
+ Create a hierarchical, categorized checklist from the gathered context.
172
+
173
+ Size it to the Step 2 tier:
174
+
175
+ - ๐Ÿš€ smoke โ€” only critical paths
176
+ - โš–๏ธ balanced โ€” happy path, key negative, common edge cases
177
+ - ๐Ÿงจ exhaustive โ€” full coverage
178
+ - โœ๏ธ other โ€” follow what the user described
179
+
180
+ Example:
181
+
182
+ ```markdown
183
+ - Signup
184
+ - Signup with valid email
185
+ - Signup with valid phone number
186
+
187
+ - Login
188
+ - Login with valid email
189
+ - Login with valid phone number
190
+ - Login with invalid password
191
+ ```
192
+
193
+ #### Approval gate
194
+
195
+ - If a multi-select/checkbox Ask tool is available: present leaf items as checkboxes, prefixed with their category (e.g. `Login: valid email`), with the recommended subset for the chosen tier pre-checked. The ticked items become the test cases in Step 5.
196
+ - Otherwise: show the markdown checklist and ask the user to add/remove/change items.
197
+
198
+ Always ask about the amount of cases / level of detail:
199
+
200
+ ```
201
+ โ“ Do you want to:
202
+
203
+ 1. ๐Ÿ‘ Keep as is
204
+ 2. โž– Less details
205
+ 3. โž• More details
206
+ 4. โœ๏ธ Type anything you want to change
207
+ ```
208
+
209
+ - More details โ†’ enable the ๐Ÿค“ nerd role.
210
+ - User modifies the checklist โ†’ regenerate (Step 4).
211
+ - User not satisfied โ†’ go back to Step 1 for more context.
212
+ - Approved โ†’ Step 5.
213
+
214
+ ### Step 5: Generate detailed test cases
215
+
216
+ If the user originally asked only for a checklist, first ask: "Do you want to generate test cases for this checklist?"
217
+
218
+ Where to store test cases:
219
+
220
+ - Empty or manual-tests-only workspace โ†’ project root
221
+ - End-to-end testing project โ†’ `manual-tests/` directory
222
+ - Any other case โ†’ `.testeiya/manual-tests/` (ensure `.testeiya/` exists and is git-ignored)
223
+
224
+ Generation rules:
225
+
226
+ - Name files `feature-name.test.md` (always the `.test.md` extension).
227
+ - Multiple features or whole product โ†’ one file per feature.
228
+ - **Don't change the user's source code. Only generate `*.test.md` files.**
229
+ - **Keep scope**: test only the functionality under test; don't test linked features unless the user explicitly asks.
230
+
231
+ Format rules:
232
+
233
+ - Strictly follow [Test Case Format](./references/test-case-format.md) for suites, tests, and steps. Only exception: the user specifies their own format in the prompt.
234
+ - Strictly follow [Writing Rules](./references/writing-rule.md) for suite/test descriptions, preconditions, steps, expected results, and anti-patterns.
235
+ - Follow the [Testomat.io TMS Guide](./references/testomat-tms-guide.md) for conventions (priority levels, tags, labels), especially when using the testomatio MCP.
236
+ - Wrap test cases in `<!-- suite ... -->` and `<!-- test ... -->` blocks.
237
+ - If required, put `tags:` and `labels:` inside each `<!-- test ... -->` metadata block (see [test metadata](./references/test-case-format.md#test-metadata)), not only on the suite block.
238
+ - Reuse existing tags and labels obtained via MCP or from other test cases.
239
+ - Do not use labels if you are not aware of any existing ones.
240
+ - If reasonable, add test metadata (priority, preconditions, test data, labels, tags) based on the analyzed context.
241
+ - Use concrete, executable values. **Do NOT introduce `${...}` placeholders in first-pass generation.** Parametrize only genuinely reused or data-driven values; format them as `${variable}` in backticks.
242
+ - **NEVER generate test or suite IDs of any kind:**
243
+ - Do NOT include Testomat.io IDs (`id: @T*`, `id: @S*`, e.g. `@T12345678`, `@S380c64db`).
244
+ - Do NOT include custom/random IDs (e.g. `TC-001`, `TC-R001`, `SUITE-01`) in `id:` fields, titles, or anywhere else.
245
+ - Testomat.io IDs are server-generated and assigned when the user runs `check-tests push` with `--update-ids` (or via the `sync-test-cases-with-tms` skill). Never add IDs at generation time.
246
+
247
+ #### Matching existing test case formats
248
+
249
+ When the user provides an existing test case example or asks for "similar" test cases:
250
+
251
+ DO match:
252
+
253
+ - writing style and level of detail
254
+ - field structure (Priority, Preconditions, Type, Test Data, etc.)
255
+ - additional fields like labels and tags
256
+ - original case language
257
+
258
+ DON'T copy:
259
+
260
+ - any IDs from the example โ€” neither Testomat.io IDs (`@T...`, `@S...`) nor custom prefixes (e.g. `TC-R001`, `TC-001`)
261
+ - original test case intent
262
+
263
+ ### Step 6: Show summary
264
+
265
+ - Show a concise summary (markdown table works well): number of test cases and suites, generated files, destination folder.
266
+ - Ask the user to review the files and request changes if needed.
267
+ - Suggest uploading the test cases to Testomat.io via the `sync-test-cases-with-tms` skill.