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.
- package/README.md +312 -27
- package/dist/prompt/index.js +6 -2
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/print.js +8 -0
- package/dist/prompt/print.js.map +1 -1
- package/dist/prompt/system-prompt.js +14 -4
- package/dist/prompt/system-prompt.js.map +1 -1
- package/dist/prompt/testomatio.js +3 -3
- package/dist/prompt/tools.js +15 -7
- package/dist/prompt/tools.js.map +1 -1
- package/dist/src/args.js +147 -47
- package/dist/src/args.js.map +1 -1
- package/dist/src/cli.js +50 -14
- package/dist/src/cli.js.map +1 -1
- package/dist/src/doctor.js +186 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/env.js +29 -5
- package/dist/src/env.js.map +1 -1
- package/dist/src/mcp.js +3 -3
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/model.js +15 -10
- package/dist/src/model.js.map +1 -1
- package/dist/src/models.js +38 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/output.js +185 -0
- package/dist/src/output.js.map +1 -0
- package/dist/src/run.js +116 -24
- package/dist/src/run.js.map +1 -1
- package/dist/src/session.js +38 -23
- package/dist/src/session.js.map +1 -1
- package/dist/src/sessions.js +61 -0
- package/dist/src/sessions.js.map +1 -0
- package/package.json +7 -3
- package/prompt/index.ts +11 -2
- package/prompt/print.ts +9 -0
- package/prompt/system-prompt.ts +18 -4
- package/prompt/testomatio.ts +3 -3
- package/prompt/tools.ts +15 -7
- package/skills/codeceptjs/ci-fix-tests/SKILL.md +119 -0
- package/skills/codeceptjs/codeceptjs-auth/SKILL.md +141 -0
- package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +100 -0
- package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +196 -0
- package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +83 -0
- package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +126 -0
- package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +109 -0
- package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +295 -0
- package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +339 -0
- package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +459 -0
- package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +338 -0
- package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +78 -0
- package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +102 -0
- package/skills/playwright/playwright-best-practices/SKILL.md +303 -0
- package/skills/playwright/playwright-best-practices/advanced/authentication-flows.md +360 -0
- package/skills/playwright/playwright-best-practices/advanced/authentication.md +871 -0
- package/skills/playwright/playwright-best-practices/advanced/clock-mocking.md +364 -0
- package/skills/playwright/playwright-best-practices/advanced/mobile-testing.md +409 -0
- package/skills/playwright/playwright-best-practices/advanced/multi-context.md +288 -0
- package/skills/playwright/playwright-best-practices/advanced/multi-user.md +393 -0
- package/skills/playwright/playwright-best-practices/advanced/network-advanced.md +452 -0
- package/skills/playwright/playwright-best-practices/advanced/third-party.md +464 -0
- package/skills/playwright/playwright-best-practices/architecture/pom-vs-fixtures.md +363 -0
- package/skills/playwright/playwright-best-practices/architecture/test-architecture.md +369 -0
- package/skills/playwright/playwright-best-practices/architecture/when-to-mock.md +383 -0
- package/skills/playwright/playwright-best-practices/browser-apis/browser-apis.md +391 -0
- package/skills/playwright/playwright-best-practices/browser-apis/iframes.md +403 -0
- package/skills/playwright/playwright-best-practices/browser-apis/service-workers.md +504 -0
- package/skills/playwright/playwright-best-practices/browser-apis/websockets.md +403 -0
- package/skills/playwright/playwright-best-practices/core/annotations.md +424 -0
- package/skills/playwright/playwright-best-practices/core/assertions-waiting.md +361 -0
- package/skills/playwright/playwright-best-practices/core/configuration.md +452 -0
- package/skills/playwright/playwright-best-practices/core/fixtures-hooks.md +417 -0
- package/skills/playwright/playwright-best-practices/core/global-setup.md +434 -0
- package/skills/playwright/playwright-best-practices/core/locators.md +242 -0
- package/skills/playwright/playwright-best-practices/core/page-object-model.md +315 -0
- package/skills/playwright/playwright-best-practices/core/projects-dependencies.md +453 -0
- package/skills/playwright/playwright-best-practices/core/test-data.md +492 -0
- package/skills/playwright/playwright-best-practices/core/test-suite-structure.md +361 -0
- package/skills/playwright/playwright-best-practices/core/test-tags.md +298 -0
- package/skills/playwright/playwright-best-practices/debugging/console-errors.md +420 -0
- package/skills/playwright/playwright-best-practices/debugging/debugging.md +504 -0
- package/skills/playwright/playwright-best-practices/debugging/error-testing.md +360 -0
- package/skills/playwright/playwright-best-practices/debugging/flaky-tests.md +496 -0
- package/skills/playwright/playwright-best-practices/frameworks/angular.md +530 -0
- package/skills/playwright/playwright-best-practices/frameworks/nextjs.md +469 -0
- package/skills/playwright/playwright-best-practices/frameworks/react.md +531 -0
- package/skills/playwright/playwright-best-practices/frameworks/vue.md +574 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +468 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/docker.md +283 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/github-actions.md +546 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/gitlab.md +397 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/other-providers.md +521 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +371 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/performance.md +453 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/reporting.md +424 -0
- package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +497 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/accessibility.md +359 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/api-testing.md +719 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/browser-extensions.md +506 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/canvas-webgl.md +493 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/component-testing.md +500 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/drag-drop.md +576 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/electron.md +509 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/file-operations.md +377 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/file-upload-download.md +562 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/forms-validation.md +561 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/graphql-testing.md +331 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/i18n.md +508 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/performance-testing.md +476 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/security-testing.md +430 -0
- package/skills/playwright/playwright-best-practices/testing-patterns/visual-regression.md +634 -0
- package/skills/playwright/playwright-cli/SKILL.md +420 -0
- package/skills/playwright/playwright-cli/references/element-attributes.md +23 -0
- package/skills/playwright/playwright-cli/references/playwright-tests.md +39 -0
- package/skills/playwright/playwright-cli/references/request-mocking.md +87 -0
- package/skills/playwright/playwright-cli/references/running-code.md +241 -0
- package/skills/playwright/playwright-cli/references/session-management.md +225 -0
- package/skills/playwright/playwright-cli/references/storage-state.md +275 -0
- package/skills/playwright/playwright-cli/references/test-generation.md +433 -0
- package/skills/playwright/playwright-cli/references/tracing.md +139 -0
- package/skills/playwright/playwright-cli/references/video-recording.md +143 -0
- package/skills/skills.lock.json +39 -36
- package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +76 -0
- package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
- package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +108 -0
- package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +86 -0
- package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
- package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
- package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
- package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
- package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
- package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +56 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +242 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +182 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +22 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +90 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +53 -0
- package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +52 -0
- package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +107 -0
- package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +113 -0
- package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +29 -0
- package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
- package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +153 -0
- package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
- package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
- package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +289 -0
- package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +86 -0
- package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +54 -0
- package/skills/testomatio/test-management/improve-test-cases/SKILL.md +114 -0
- package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +66 -0
- package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +141 -0
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +354 -0
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +82 -0
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +37 -0
- package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +118 -0
- package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +149 -0
- package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +54 -0
- package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +126 -0
- package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +128 -0
- package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
- package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
- package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
- package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +174 -0
- package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +138 -0
- package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +65 -0
- package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +40 -0
- package/skills/testomatio/test-management/qa-thinking/SKILL.md +36 -0
- package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +267 -0
- package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +387 -0
- package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +72 -0
- package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +159 -0
- package/skills/testomatio/test-management/scan-automation-project/SKILL.md +152 -0
- package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +107 -0
- package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +140 -0
- package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +195 -0
- 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.
|