@roopesh.yadava/qa-pack 1.0.3 → 1.2.0

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.
@@ -3,7 +3,8 @@ name: ui-test-figma
3
3
  description: >
4
4
  Compares a live web application page against a Figma design to detect UI inconsistencies.
5
5
  Uses Playwright CLI for zero-token screenshots and targeted browser_evaluate for CSS — never
6
- browser_snapshot. Figma MCP preferred; browser fallback automatic. OTP always 999999.
6
+ browser_snapshot. Figma MCP preferred; browser fallback automatic. Credentials and OTP
7
+ code come from .env (QA_USERNAME / QA_PASSWORD / QA_OTP_CODE).
7
8
  Can be called standalone or from manual-testing (Step 1 of Manual branch).
8
9
  Trigger: "compare with application", "ui test", "check design", "test this page against figma",
9
10
  "run ui check", or a Figma link with a comparison request.
@@ -30,7 +31,8 @@ Compares a live app page against a Figma design. Uses **Playwright CLI** for all
30
31
 
31
32
  ## Token Tracking
32
33
 
33
- Silent background task — follow the **Token Tracking** pattern in `SKILLS_CONTEXT.md`.
34
+ Optional and silent — follow the **Token Tracking** pattern in `SKILLS_CONTEXT.md`
35
+ (run its enablement check once at skill start; if disabled, skip every checkpoint silently).
34
36
  Never show tracking output to user. Checkpoints: `start` → `login` → `comparison` → `end + report + session`.
35
37
  Use `CARD_ID` if called from pipeline, else `"ui-test"`.
36
38
 
@@ -68,7 +70,9 @@ ls .playwright-session.json 2>/dev/null && echo "SESSION_EXISTS" || echo "NO_SES
68
70
  **If no session file:**
69
71
  Navigate to `BASE_URL` via `browser_navigate` and take a `browser_snapshot`.
70
72
  - **Dashboard/home page** → session active, skip to Step 1b.
71
- - **Login form** → ask for email, then password.
73
+ - **Login form** → read `.env` for `QA_USERNAME` / `QA_PASSWORD` / `QA_OTP_CODE` (or use
74
+ values passed by the invoking skill). Only if still missing, ask for email + password
75
+ in one message. Never print the password.
72
76
 
73
77
  Once inputs collected: `"Got everything. Logging in and starting the comparison now..."`
74
78
 
@@ -100,7 +104,7 @@ Use `browser_snapshot` to read field selectors, then:
100
104
 
101
105
  **If OTP screen appears** (6-box PIN):
102
106
  7. `browser_click` first OTP box
103
- 8. `browser_type(text: "999999")` — always this value, auto-advances
107
+ 8. `browser_type(text: QA_OTP_CODE)` — the code from `.env` (ask once if unset), auto-advances
104
108
  9. `browser_click` Verify button
105
109
  10. `browser_wait_for(state: "networkidle")`
106
110
  11. `browser_snapshot()` — confirm past OTP
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roopesh.yadava/qa-pack",
3
- "version": "1.0.3",
3
+ "version": "1.2.0",
4
4
  "description": "AI-powered QA agent skills for Claude Code — manual testing, BDD automation, accessibility, UI/Figma diff, bug reporting",
5
5
  "scripts": {
6
6
  "postinstall": "node bin/postinstall.js"
@@ -0,0 +1,22 @@
1
+ # qa-pack — QA agent secrets & environment (gitignored — fill in the values)
2
+ # All QA skills read this file once at startup. Values here take precedence over
3
+ # anything stored in product context. NEVER commit the filled-in .env.
4
+
5
+ # ── App under test ────────────────────────────────────────────────────────────
6
+ QA_APP_URL=
7
+ QA_LOGIN_URL=
8
+ QA_USERNAME=
9
+ QA_PASSWORD=
10
+ # OTP code entered on the OTP screen when the app asks for one (leave empty if no OTP)
11
+ QA_OTP_CODE=999999
12
+
13
+ # ── Jira REST (only needed for screenshot attachments on bugs) ────────────────
14
+ JIRA_BASE_URL=
15
+ JIRA_EMAIL=
16
+ JIRA_API_TOKEN=
17
+
18
+ # ── Optional: token-usage tracking (developer machines only) ──────────────────
19
+ # Point at a directory containing track_tokens.py + context_snapshot.py.
20
+ # When unset or the scripts are missing, skills skip all tracking silently.
21
+ # QA_TRACKING_DIR=
22
+ # QA_TRACKING_MODEL=
@@ -1,6 +1,7 @@
1
1
  # QA Agent — Project Configuration
2
2
 
3
- <!-- Fill in the sections marked TODO before committing. -->
3
+ <!-- Fill in the sections marked TODO before committing. This file is safe to commit —
4
+ secrets go in .env (gitignored), never here. -->
4
5
 
5
6
  ## Project
6
7
 
@@ -9,24 +10,28 @@
9
10
  - **Login URL**: `TODO: e.g. https://app.example.com/login` (or same as App URL)
10
11
  - **Environment**: `TODO: staging | dev | prod`
11
12
  - **Auth Method**: `TODO: form_login | SSO | token | none`
12
- - **OTP Required**: `TODO: yes (always use 999999) | no`
13
+ - **OTP Required**: `TODO: yes | no` (the code itself goes in `.env` as `QA_OTP_CODE`)
13
14
 
14
- ## Test credentials (dev/staging only — use env vars in CI)
15
+ ## Secrets
15
16
 
16
- - **Username**: `TODO`
17
- - **Password**: `TODO`
17
+ Test credentials live in `.env` at the repo root (gitignored, seeded by qa-pack install):
18
+ `QA_APP_URL`, `QA_LOGIN_URL`, `QA_USERNAME`, `QA_PASSWORD`, `QA_OTP_CODE`, plus
19
+ `JIRA_BASE_URL` / `JIRA_EMAIL` / `JIRA_API_TOKEN` for bug screenshot attachments.
20
+ **Never write credentials into this file or any committed file.**
18
21
 
19
22
  ---
20
23
 
21
24
  ## QA Skills available
22
25
 
23
- This project has the full QA agent skill pack installed. Invoke any skill from Claude Code:
26
+ This project has the qa-pack skill set installed. The QA agent runs a structured flow:
27
+ card ID → product context → only the missing questions → phase selection.
24
28
 
25
29
  | What you want | How to trigger |
26
30
  |---|---|
27
- | Full QA on a Jira card | `run qa PROJ-123` |
28
- | Manual testing only | `manual test PROJ-123` |
29
- | Write BDD automation | `automate PROJ-123` |
31
+ | Start the QA agent on a card | `run qa PROJ-123` (then pick a phase) |
32
+ | Phase 1 — manual testing | `manual test PROJ-123` |
33
+ | Phase 2 — write automation (reuse-first) | `automate PROJ-123` |
34
+ | Phase 3 — both (manual first, then automation) | `full QA PROJ-123` |
30
35
  | Accessibility audit | `accessibility test PROJ-123` |
31
36
  | UI vs Figma diff | `ui test PROJ-123` |
32
37
  | File a bug | `file a bug` |
@@ -35,7 +40,10 @@ This project has the full QA agent skill pack installed. Invoke any skill from C
35
40
 
36
41
  ## Conventions
37
42
 
38
- - Test files live in `test/`feature files in `test/features/`, step definitions in `test/step-definations/`
39
- - BDD runner: CucumberJS with `cucumber.cjs` config
43
+ - BDD runner: CucumberJS with `cucumber.cjs` config the automation skill discovers
44
+ your feature/step/POM layout from this config and the existing tree (no fixed layout imposed)
45
+ - The automation skill reuses existing Gherkin steps and step definitions first; new step
46
+ definitions require explicit approval and reuse % is tracked per run
40
47
  - Screenshots and reports go to `outputs/` (gitignored)
41
- - Product context (persistent QA memory) lives in `.claude/skills/qa-agent/product_context/{PROJECT_KEY}/context.md`
48
+ - Product context (persistent QA memory, no secrets) lives in
49
+ `.claude/skills/qa-agent/product_context/{PRODUCT}/context.md`