agentic-qe 3.9.8 → 3.9.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/.claude/skills/README.md +4 -3
- package/.claude/skills/a11y-ally/SKILL.md +40 -18
- package/.claude/skills/accessibility-testing/SKILL.md +4 -0
- package/.claude/skills/compatibility-testing/SKILL.md +23 -0
- package/.claude/skills/e2e-flow-verifier/SKILL.md +87 -52
- package/.claude/skills/enterprise-integration-testing/SKILL.md +4 -0
- package/.claude/skills/localization-testing/SKILL.md +14 -0
- package/.claude/skills/observability-testing-patterns/SKILL.md +16 -0
- package/.claude/skills/qe-browser/SKILL.md +409 -0
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +291 -0
- package/.claude/skills/qe-browser/fixtures/package.json +7 -0
- package/.claude/skills/qe-browser/fixtures/serve-skills.js +130 -0
- package/.claude/skills/qe-browser/references/assertion-kinds.md +132 -0
- package/.claude/skills/qe-browser/references/migration-from-playwright.md +195 -0
- package/.claude/skills/qe-browser/schemas/output.json +188 -0
- package/.claude/skills/qe-browser/scripts/assert.js +378 -0
- package/.claude/skills/qe-browser/scripts/batch.js +292 -0
- package/.claude/skills/qe-browser/scripts/check-injection.js +267 -0
- package/.claude/skills/qe-browser/scripts/intent-score.js +325 -0
- package/.claude/skills/qe-browser/scripts/lib/vibium.js +330 -0
- package/.claude/skills/qe-browser/scripts/package.json +7 -0
- package/.claude/skills/qe-browser/scripts/smoke-test.sh +212 -0
- package/.claude/skills/qe-browser/scripts/validate-config.json +46 -0
- package/.claude/skills/qe-browser/scripts/visual-diff.js +276 -0
- package/.claude/skills/qe-visual-accessibility/SKILL.md +31 -1
- package/.claude/skills/security-visual-testing/SKILL.md +18 -0
- package/.claude/skills/skills-manifest.json +20 -13
- package/.claude/skills/testability-scoring/SKILL.md +23 -0
- package/.claude/skills/trust-tier-manifest.json +14 -3
- package/.claude/skills/visual-testing-advanced/SKILL.md +41 -1
- package/CHANGELOG.md +53 -0
- package/README.md +5 -3
- package/assets/skills/README.md +4 -3
- package/assets/skills/a11y-ally/SKILL.md +40 -18
- package/assets/skills/accessibility-testing/SKILL.md +4 -0
- package/assets/skills/compatibility-testing/SKILL.md +23 -0
- package/assets/skills/e2e-flow-verifier/SKILL.md +87 -52
- package/assets/skills/enterprise-integration-testing/SKILL.md +4 -0
- package/assets/skills/localization-testing/SKILL.md +14 -0
- package/assets/skills/observability-testing-patterns/SKILL.md +16 -0
- package/assets/skills/qe-browser/SKILL.md +409 -0
- package/assets/skills/qe-browser/evals/qe-browser.yaml +291 -0
- package/assets/skills/qe-browser/fixtures/package.json +7 -0
- package/assets/skills/qe-browser/fixtures/serve-skills.js +130 -0
- package/assets/skills/qe-browser/references/assertion-kinds.md +132 -0
- package/assets/skills/qe-browser/references/migration-from-playwright.md +195 -0
- package/assets/skills/qe-browser/schemas/output.json +188 -0
- package/assets/skills/qe-browser/scripts/assert.js +378 -0
- package/assets/skills/qe-browser/scripts/batch.js +292 -0
- package/assets/skills/qe-browser/scripts/check-injection.js +267 -0
- package/assets/skills/qe-browser/scripts/intent-score.js +325 -0
- package/assets/skills/qe-browser/scripts/lib/vibium.js +330 -0
- package/assets/skills/qe-browser/scripts/package.json +7 -0
- package/assets/skills/qe-browser/scripts/smoke-test.sh +212 -0
- package/assets/skills/qe-browser/scripts/validate-config.json +46 -0
- package/assets/skills/qe-browser/scripts/visual-diff.js +276 -0
- package/assets/skills/qe-visual-accessibility/SKILL.md +31 -1
- package/assets/skills/security-visual-testing/SKILL.md +18 -0
- package/assets/skills/skills-manifest.json +211 -15
- package/assets/skills/testability-scoring/SKILL.md +23 -0
- package/assets/skills/trust-tier-manifest.json +14 -3
- package/assets/skills/visual-testing-advanced/SKILL.md +41 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-XKXEZEMM.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-LAE4NTVX.js → agent-booster-wasm-QEN7W6VC.js} +2 -2
- package/dist/cli/chunks/{agent-handler-FVXHR6XN.js → agent-handler-F3RLG42J.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-Q7LLBA7C.js → agent-memory-branch-U3PZ3CPL.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-K7XGBDMZ.js +2 -0
- package/dist/cli/chunks/{audit-YRLKHJLX.js → audit-FF6SP7Q2.js} +2 -2
- package/dist/cli/chunks/base-NUF35LIJ.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-XFGOGICB.js → better-sqlite3-CVXRDGQX.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KIUSNVSS.js → brain-handler-AMTRZ35W.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-VKZ4L3FH.js → branch-enumerator-Y4A34YFT.js} +2 -2
- package/dist/cli/chunks/{browser-GZVIYFIB.js → browser-ETSF5GZR.js} +2 -2
- package/dist/cli/chunks/browser-workflow-MWPELXFA.js +2 -0
- package/dist/cli/chunks/{chunk-LPRHYSXN.js → chunk-22HQFULR.js} +1 -1
- package/dist/cli/chunks/{chunk-677V67MR.js → chunk-2BSVGL35.js} +1 -1
- package/dist/cli/chunks/{chunk-TDPHLQ2M.js → chunk-2HFPJPQW.js} +2 -2
- package/dist/cli/chunks/{chunk-EKDFIYV5.js → chunk-2JAYDTSE.js} +2 -2
- package/dist/cli/chunks/{chunk-AVKDT3UL.js → chunk-2KY5B4ON.js} +8 -8
- package/dist/cli/chunks/{chunk-NHXFAXEV.js → chunk-2O3WZ6E3.js} +1 -1
- package/dist/cli/chunks/{chunk-PBPOSPTY.js → chunk-2UP3DYNH.js} +2 -2
- package/dist/cli/chunks/{chunk-3WOQMFTD.js → chunk-2X7LDTVD.js} +2 -2
- package/dist/cli/chunks/{chunk-A4DJMFDM.js → chunk-2ZHA6ORO.js} +1 -1
- package/dist/cli/chunks/{chunk-TN72MXLI.js → chunk-3F666FYP.js} +2 -2
- package/dist/cli/chunks/{chunk-UGJNR52C.js → chunk-3FAEM5M7.js} +1 -1
- package/dist/cli/chunks/{chunk-GHJRX7PV.js → chunk-3JCZTTFY.js} +1 -1
- package/dist/cli/chunks/{chunk-7PHNHFZI.js → chunk-3NU4C62D.js} +3 -3
- package/dist/cli/chunks/{chunk-YDW522M7.js → chunk-3XR7ARS6.js} +2 -2
- package/dist/cli/chunks/{chunk-NCXVOOA7.js → chunk-4CDSEZD6.js} +2 -2
- package/dist/cli/chunks/{chunk-7L64UC5U.js → chunk-4CSINHCB.js} +1 -1
- package/dist/cli/chunks/{chunk-6ZMM7MXA.js → chunk-4HDG7OS4.js} +2 -2
- package/dist/cli/chunks/{chunk-SP3ZBJ63.js → chunk-52RZZV4M.js} +3 -3
- package/dist/cli/chunks/{chunk-LOANEFGZ.js → chunk-5DU4YW2S.js} +2 -2
- package/dist/cli/chunks/{chunk-6A4FEIE2.js → chunk-5HM66R4W.js} +3 -3
- package/dist/cli/chunks/{chunk-BXMIQRF3.js → chunk-5L3EUZJA.js} +2 -2
- package/dist/cli/chunks/{chunk-2V5VKOJ2.js → chunk-5SWY75MJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCKNGICX.js → chunk-65XCVUP7.js} +1 -1
- package/dist/cli/chunks/{chunk-R4VOIXJQ.js → chunk-6KQLF3ZO.js} +2 -2
- package/dist/cli/chunks/{chunk-SQ6XZGR4.js → chunk-6LTJP3DO.js} +4 -4
- package/dist/cli/chunks/{chunk-WXEDVKJS.js → chunk-6PJUDLCT.js} +2 -2
- package/dist/cli/chunks/{chunk-JK6JBNGL.js → chunk-74FBSJVC.js} +2 -2
- package/dist/cli/chunks/{chunk-XPL3BXLM.js → chunk-A6GYFTIA.js} +1 -1
- package/dist/cli/chunks/{chunk-DLKRK2GU.js → chunk-ADJGMTIW.js} +1 -1
- package/dist/cli/chunks/{chunk-W4IRWGGR.js → chunk-AHOP227C.js} +4 -4
- package/dist/cli/chunks/{chunk-FKODRXOU.js → chunk-ANLFEGDG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZJ4PMOIZ.js → chunk-AT2VD2ZP.js} +2 -2
- package/dist/cli/chunks/{chunk-7CFEGUEH.js → chunk-AYMIF4W5.js} +2 -2
- package/dist/cli/chunks/{chunk-KMGAJRQ6.js → chunk-B3DA4SCL.js} +1 -1
- package/dist/cli/chunks/{chunk-4KX6TMKB.js → chunk-BSES27JE.js} +3 -3
- package/dist/cli/chunks/{chunk-TWDWDKOI.js → chunk-BVKS3X2I.js} +1 -1
- package/dist/cli/chunks/{chunk-PG7CZ6Q4.js → chunk-BVOGMK6N.js} +2 -2
- package/dist/cli/chunks/{chunk-RGCCSAHI.js → chunk-BYJEK6LX.js} +2 -2
- package/dist/cli/chunks/{chunk-QVGSD25D.js → chunk-BYPBKVTC.js} +1 -1
- package/dist/cli/chunks/{chunk-2QI5RYVR.js → chunk-C7YD7O74.js} +2 -2
- package/dist/cli/chunks/{chunk-UAI5NPPQ.js → chunk-CCCBGKVY.js} +2 -2
- package/dist/cli/chunks/{chunk-OGFGNAKQ.js → chunk-CJQLJEO4.js} +2 -2
- package/dist/cli/chunks/{chunk-TSDTRJOG.js → chunk-CXWA34RL.js} +2 -2
- package/dist/cli/chunks/{chunk-5TGK7VTS.js → chunk-CZYTPNUI.js} +2 -2
- package/dist/cli/chunks/{chunk-HE2NWYHK.js → chunk-DI6R2AVP.js} +1 -1
- package/dist/cli/chunks/{chunk-UOSKMAAY.js → chunk-DNS7DP2O.js} +1 -1
- package/dist/cli/chunks/{chunk-Q5PARJC6.js → chunk-ECNPBD4Y.js} +2 -2
- package/dist/cli/chunks/{chunk-2K3DJ3EK.js → chunk-ENG5UF7M.js} +2 -2
- package/dist/cli/chunks/{chunk-JVH7753D.js → chunk-EV2NMWJV.js} +1 -1
- package/dist/cli/chunks/{chunk-X66IXWSO.js → chunk-FGW5W3YK.js} +2 -2
- package/dist/cli/chunks/{chunk-IP2Z4Z6X.js → chunk-FTF34UME.js} +1 -1
- package/dist/cli/chunks/{chunk-YIJDCZVX.js → chunk-GYNGJHYF.js} +2 -2
- package/dist/cli/chunks/{chunk-AYKMWP7F.js → chunk-HDM43P7H.js} +1 -1
- package/dist/cli/chunks/{chunk-ECYDMBDA.js → chunk-HOWZFW7G.js} +2 -2
- package/dist/cli/chunks/{chunk-Y67OXEUM.js → chunk-IZC5NPHD.js} +1 -1
- package/dist/cli/chunks/{chunk-P7APAQD6.js → chunk-J2DNMVB5.js} +3 -3
- package/dist/cli/chunks/{chunk-HTL2WT64.js → chunk-J62N66ZH.js} +1 -1
- package/dist/cli/chunks/{chunk-IHJXFWUL.js → chunk-JIPU4YQK.js} +2 -2
- package/dist/cli/chunks/{chunk-MGX2BZWE.js → chunk-JK4K4EH3.js} +2 -2
- package/dist/cli/chunks/{chunk-WUCWFDBE.js → chunk-JQJHRQRX.js} +2 -2
- package/dist/cli/chunks/{chunk-IFIYNCT2.js → chunk-KSJCMXAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-W45FANJG.js → chunk-MDTF7LE6.js} +2 -2
- package/dist/cli/chunks/{chunk-DDDEGBBJ.js → chunk-MUCFC3YG.js} +2 -2
- package/dist/cli/chunks/{chunk-BZB5D4BO.js → chunk-MUIJVPGB.js} +2 -2
- package/dist/cli/chunks/{chunk-VVNR4R22.js → chunk-MWZN4PYF.js} +2 -2
- package/dist/cli/chunks/{chunk-XVXSQOQG.js → chunk-MXMKHI2I.js} +2 -2
- package/dist/cli/chunks/{chunk-U62WL3WZ.js → chunk-MZOYBHJ3.js} +3 -3
- package/dist/cli/chunks/{chunk-TZMKO6PC.js → chunk-NLKJI73E.js} +2 -2
- package/dist/cli/chunks/{chunk-66DCG6RO.js → chunk-NQ3WHTLT.js} +4 -4
- package/dist/cli/chunks/{chunk-JBQ4WGB4.js → chunk-NVVF5ROM.js} +2 -2
- package/dist/cli/chunks/{chunk-HYACMUUR.js → chunk-OEZA7Q2Z.js} +2 -2
- package/dist/cli/chunks/{chunk-ELZ5SKEN.js → chunk-OFOFXJ3M.js} +2 -2
- package/dist/cli/chunks/{chunk-HN7HYUW6.js → chunk-OMRZUYXN.js} +9 -9
- package/dist/cli/chunks/{chunk-IIYXSWJN.js → chunk-P6YMECV2.js} +2 -2
- package/dist/cli/chunks/{chunk-R2LWLZ3Y.js → chunk-PEEN4AAK.js} +1 -1
- package/dist/cli/chunks/{chunk-4EAAHMVM.js → chunk-PRJUO2OQ.js} +2 -2
- package/dist/cli/chunks/{chunk-LFEBTWFS.js → chunk-PYTXZMXR.js} +2 -2
- package/dist/cli/chunks/{chunk-I25KIHQE.js → chunk-Q2ZBPOUX.js} +1 -1
- package/dist/cli/chunks/{chunk-76UL224Z.js → chunk-QHATTMJC.js} +2 -2
- package/dist/cli/chunks/{chunk-KJZU3E5G.js → chunk-QMNAELZG.js} +2 -2
- package/dist/cli/chunks/{chunk-3ZAGYTEC.js → chunk-QQLQEQJM.js} +2 -2
- package/dist/cli/chunks/{chunk-GOPE5OB5.js → chunk-QSA23PJ6.js} +1 -1
- package/dist/cli/chunks/{chunk-MVW7AACO.js → chunk-QTYTM7C7.js} +2 -2
- package/dist/cli/chunks/{chunk-6DBYVKGA.js → chunk-QZMBJ67L.js} +2 -2
- package/dist/cli/chunks/{chunk-S72TSJS4.js → chunk-R23PJGH7.js} +2 -2
- package/dist/cli/chunks/{chunk-YSUMQBMY.js → chunk-R5ZKFJ3H.js} +1 -1
- package/dist/cli/chunks/{chunk-JD3GH47Z.js → chunk-RLLDZNLF.js} +2 -2
- package/dist/cli/chunks/{chunk-F5VLJFVU.js → chunk-RZYTJSQT.js} +1 -1
- package/dist/cli/chunks/{chunk-JCROLOP6.js → chunk-S6VT7VAO.js} +2 -2
- package/dist/cli/chunks/{chunk-237NNDKL.js → chunk-SVLO2DVL.js} +2 -2
- package/dist/cli/chunks/{chunk-A2QLTNN5.js → chunk-TTENF6AH.js} +1 -1
- package/dist/cli/chunks/{chunk-CG3HIYF4.js → chunk-UEKDDUGV.js} +2 -2
- package/dist/cli/chunks/{chunk-E4D36LGH.js → chunk-UYKIPSRX.js} +1 -1
- package/dist/cli/chunks/{chunk-M2JBQVBP.js → chunk-VIIUJRKA.js} +2 -2
- package/dist/cli/chunks/chunk-VRH3YLO2.js +2 -0
- package/dist/cli/chunks/{chunk-I7OH6RAC.js → chunk-VTX4NAWB.js} +2 -2
- package/dist/cli/chunks/{chunk-P2H5ARHM.js → chunk-VWHALAEO.js} +1 -1
- package/dist/cli/chunks/{chunk-OZTSMI7P.js → chunk-W4VDPHWC.js} +1 -1
- package/dist/cli/chunks/{chunk-266SKKFM.js → chunk-W57I57M4.js} +2 -2
- package/dist/cli/chunks/{chunk-YOKRSFGA.js → chunk-WDWIJDQR.js} +2 -2
- package/dist/cli/chunks/{chunk-IZTUAI5T.js → chunk-WEJJWJ5M.js} +2 -2
- package/dist/cli/chunks/{chunk-ETXK25IY.js → chunk-WZR4CKR4.js} +1 -1
- package/dist/cli/chunks/{chunk-WJDOOT2M.js → chunk-XZ2JYMFT.js} +2 -2
- package/dist/cli/chunks/{chunk-SDMGF3KD.js → chunk-YISXT54V.js} +2 -2
- package/dist/cli/chunks/{chunk-N2L7RWNX.js → chunk-YRORPSPA.js} +2 -2
- package/dist/cli/chunks/{chunk-JNJYWWBG.js → chunk-YXE67VME.js} +6 -6
- package/dist/cli/chunks/{chunk-SSURIMCL.js → chunk-Z7AFNZMI.js} +2 -2
- package/dist/cli/chunks/{chunk-4GMV6Z7Y.js → chunk-ZEUORIH2.js} +2 -2
- package/dist/cli/chunks/{chunk-VHZ653XS.js → chunk-ZKXA4VBK.js} +3 -3
- package/dist/cli/chunks/{chunk-6KWX7A3R.js → chunk-ZTI3BATG.js} +2 -2
- package/dist/cli/chunks/{ci-A5ZXOEC4.js → ci-4QYE6JBM.js} +2 -2
- package/dist/cli/chunks/{ci-output-S47BMRYC.js → ci-output-MV75HUK7.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-F5WBEBVK.js → claude-flow-setup-CZITY7SG.js} +2 -2
- package/dist/cli/chunks/client-VXVVUQDV.js +2 -0
- package/dist/cli/chunks/{cline-installer-HLKR4QDR.js → cline-installer-ZLQKCPFF.js} +2 -2
- package/dist/cli/chunks/{code-MTZWS6JT.js → code-NYEXOJVP.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-BALTZ2WQ.js → code-index-extractor-TITXUC44.js} +2 -2
- package/dist/cli/chunks/{codex-installer-LI2VIGET.js → codex-installer-TWT4LIL2.js} +2 -2
- package/dist/cli/chunks/{completions-TOF4GTNF.js → completions-2KNV2MZG.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-IPFXIT6T.js → complexity-analyzer-2U3OVRDX.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-KWI66RBI.js → continuedev-installer-BWQBRVTC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-REFOE6UF.js → copilot-installer-CYN33NMG.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-M2MZQXCN.js → cost-tracker-2GUCBYLK.js} +2 -2
- package/dist/cli/chunks/{coverage-UR2XSJCR.js → coverage-BAVD66VL.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-HUJG6CFC.js +2 -0
- package/dist/cli/chunks/{cursor-installer-X4PXCVYH.js → cursor-installer-ZQAUD47B.js} +2 -2
- package/dist/cli/chunks/{daemon-5R6ZEEBB.js → daemon-VY2LZPIM.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-RUY2RJZA.js → dag-attention-scheduler-JNQWWXSW.js} +2 -2
- package/dist/cli/chunks/{detect-PX2AYBHM.js → detect-Y7BBW4LI.js} +2 -2
- package/dist/cli/chunks/{domain-handler-5JXWEO3E.js → domain-handler-473WNSR2.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-6M2YLBJY.js → domain-transfer-R4VK7CRR.js} +2 -2
- package/dist/cli/chunks/dream-QQDRI2EQ.js +2 -0
- package/dist/cli/chunks/esm-node-Y3HIFLTX.js +2 -0
- package/dist/cli/chunks/{eval-L6ZBG462.js → eval-TJAZGRCM.js} +2 -2
- package/dist/cli/chunks/{fast-paths-WIFDALFK.js → fast-paths-LMN542IB.js} +2 -2
- package/dist/cli/chunks/{feature-flags-YLBXFUCN.js → feature-flags-IMFZ7KED.js} +2 -2
- package/dist/cli/chunks/{feature-flags-GRHF5MTK.js → feature-flags-WMXIDTXL.js} +2 -2
- package/dist/cli/chunks/{file-discovery-4HXUB4HN.js → file-discovery-GXXWQJV3.js} +2 -2
- package/dist/cli/chunks/{fleet-RPLJXOEP.js → fleet-WIC7RHJV.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-2D5IOGAT.js → gnn-wrapper-PVKCXV25.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-D5SWZZGA.js → heartbeat-handler-BJ6ZZP7Q.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-WSG4Y3M2.js → heartbeat-scheduler-3SQXTFYU.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-VKS7ORL2.js +2 -0
- package/dist/cli/chunks/hnsw-index-GPUBY6EQ.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-UH6RWE74.js → hnsw-legacy-bridge-23HFWIPK.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-BJ4ZJPMP.js → hnswlib-node-4GRFMUPD.js} +2 -2
- package/dist/cli/chunks/{hooks-KGDQNB5T.js → hooks-IXH5454I.js} +6 -6
- package/dist/cli/chunks/{hypergraph-engine-LARQCK7V.js → hypergraph-engine-TEQMJFJJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-RACF4AOX.js → hypergraph-handler-3ECUWIG3.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-D6MBGRKX.js +2 -0
- package/dist/cli/chunks/{init-handler-64AOFMJD.js → init-handler-TZRKW3NZ.js} +6 -6
- package/dist/cli/chunks/init-wizard-S6P2MFJF.js +2 -0
- package/dist/cli/chunks/kernel-EFDDMNXJ.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-4ICIP6QN.js → kilocode-installer-IPH3O3ZS.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-J2GOV2OB.js → kiro-installer-VROMOOQO.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-4PM4DFH3.js +2 -0
- package/dist/cli/chunks/{learning-QD4JVH3K.js → learning-JYQLD66S.js} +3 -3
- package/dist/cli/chunks/{llm-router-4K4IT2PQ.js → llm-router-CIICNICY.js} +2 -2
- package/dist/cli/chunks/{load-EXKUJMBK.js → load-DMAQB4NC.js} +2 -2
- package/dist/cli/chunks/load-test-PPSWF3TO.js +2 -0
- package/dist/cli/chunks/{mcp-NSNDZSMH.js → mcp-K6CSUBMU.js} +2 -2
- package/dist/cli/chunks/{memory-63JTNVZN.js → memory-5BSXKHSK.js} +5 -5
- package/dist/cli/chunks/memory-backend-3E6BA2JU.js +2 -0
- package/dist/cli/chunks/{memory-handlers-2335MVQJ.js → memory-handlers-APOLXPNH.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-244LFSPN.js → opencode-installer-IUWO2QV6.js} +2 -2
- package/dist/cli/chunks/{orchestrator-TZB457J6.js → orchestrator-Z2EM76CR.js} +22 -19
- package/dist/cli/chunks/{pipeline-YLBD2Z5Q.js → pipeline-OL5SI2RI.js} +2 -2
- package/dist/cli/chunks/{platform-53PWFZSE.js → platform-VNJIKIHZ.js} +2 -2
- package/dist/cli/chunks/{plugin-6GUQEFJU.js → plugin-SJJUE47D.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-VCOK7FV5.js → prime-radiant-advanced-wasm-ZLVTCNSH.js} +2 -2
- package/dist/cli/chunks/protocol-executor-2RD52J5J.js +2 -0
- package/dist/cli/chunks/{protocol-handler-25UEGTE2.js → protocol-handler-HTX44YTW.js} +2 -2
- package/dist/cli/chunks/{prove-CTOU5F6G.js → prove-MGFLVZNS.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-OGKT52EN.js +2 -0
- package/dist/cli/chunks/{quality-PB7H5UEF.js → quality-FMFKPICZ.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-B63YXNI6.js +2 -0
- package/dist/cli/chunks/{real-embeddings-RWWYCIE5.js → real-embeddings-2BMEEOA2.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-U4AGYVKL.js → roocode-installer-2PA3B5JI.js} +2 -2
- package/dist/cli/chunks/router-NDQCJQC6.js +2 -0
- package/dist/cli/chunks/routing-feedback-PSN2RLDO.js +2 -0
- package/dist/cli/chunks/{routing-handler-NTDKDEBE.js → routing-handler-SNGSQ757.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-RQKOLQSW.js → ruvector-commands-54MYLF63.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-6EZ7S7OG.js → rvf-dual-writer-6Q44XJOJ.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-EBTV6FV2.js → rvf-migration-adapter-JECN625C.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-MERU7VLY.js → rvf-migration-coordinator-MEAVIHQY.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-F56HQKLS.js +2 -0
- package/dist/cli/chunks/safe-db-LMRMNROL.js +2 -0
- package/dist/cli/chunks/schedule-OZSUYPPC.js +2 -0
- package/dist/cli/chunks/scheduler-GFXCQ6ZA.js +2 -0
- package/dist/cli/chunks/{security-JPDLGHMC.js → security-CXLXTNIV.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-RZPF4WWK.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-7OGLQE5Y.js → shared-rvf-dual-writer-SOQDKE6S.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-VP67CJPK.js +2 -0
- package/dist/cli/chunks/{status-handler-3TI3DHEL.js → status-handler-NNEF4SQV.js} +2 -2
- package/dist/cli/chunks/{structural-health-WCZKXVWS.js → structural-health-FY6QIA55.js} +2 -2
- package/dist/cli/chunks/{sync-AM5T4GYO.js → sync-2QMSZ67Q.js} +2 -2
- package/dist/cli/chunks/{task-handler-VHDTXPVP.js → task-handler-GZJPE2QW.js} +2 -2
- package/dist/cli/chunks/{task-handlers-GEJ36WNB.js → task-handlers-AHM37D4I.js} +2 -2
- package/dist/cli/chunks/{test-G6P5XGHM.js → test-JVA2S2R2.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-37RBUN4E.js → test-scheduling-PRMP4H6X.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-JPE3LWXQ.js → token-bootstrap-YJEHCBV2.js} +2 -2
- package/dist/cli/chunks/{token-usage-5XGVBLFR.js → token-usage-G73L32OF.js} +2 -2
- package/dist/cli/chunks/{transformers-JTKWAZJU.js → transformers-U3TSLEGO.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-KW2GWIIQ.js → tree-sitter-wasm-parser-QXP2MNSX.js} +2 -2
- package/dist/cli/chunks/{types-7R72BACI.js → types-BIQ7O5VR.js} +2 -2
- package/dist/cli/chunks/unified-memory-JB4KPMPI.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-RPSZZIWP.js +2 -0
- package/dist/cli/chunks/unified-persistence-L23T4C5C.js +2 -0
- package/dist/cli/chunks/{validate-TYB4ZTUL.js → validate-CTBEA4BZ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-3TFI6PLT.js → validate-swarm-PHT6XW3A.js} +2 -2
- package/dist/cli/chunks/{vibium-3YELURJT.js → vibium-CRCYAH3V.js} +2 -2
- package/dist/cli/chunks/visual-security-F2I524IQ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-7Q77A27Y.js → web-tree-sitter-2MH3G7K7.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-ASARRM2X.js → windsurf-installer-LBRNYFSI.js} +2 -2
- package/dist/cli/chunks/witness-chain-CN6FCWRY.js +2 -0
- package/dist/cli/chunks/{witness-chain-WZ6PNXEY.js → witness-chain-HNFQLO7Q.js} +2 -2
- package/dist/cli/chunks/{workflow-JDTEE6TY.js → workflow-DNAF6BQ2.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-JJBCCNYI.js +2 -0
- package/dist/cli/chunks/{wrappers-X7WZLBZD.js → wrappers-U7AO6ZZN.js} +2 -2
- package/dist/init/browser-engine-installer.d.ts +60 -0
- package/dist/init/browser-engine-installer.js +92 -0
- package/dist/init/phases/09-assets.d.ts +2 -0
- package/dist/init/phases/09-assets.js +65 -0
- package/dist/init/skills-installer.js +1 -0
- package/dist/mcp/bundle.js +1 -1
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-D4XQUIJD.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-CGIWYLIP.js +0 -2
- package/dist/cli/chunks/base-BYVP2STR.js +0 -2
- package/dist/cli/chunks/browser-workflow-PC4N5TKL.js +0 -2
- package/dist/cli/chunks/chunk-OT4JADWW.js +0 -2
- package/dist/cli/chunks/client-56BU3GAX.js +0 -2
- package/dist/cli/chunks/cross-domain-router-XQT52BTB.js +0 -2
- package/dist/cli/chunks/dream-LFZCN5WK.js +0 -2
- package/dist/cli/chunks/esm-node-EBDIEPKS.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BMXTVGZB.js +0 -2
- package/dist/cli/chunks/hnsw-index-YX6XLICT.js +0 -2
- package/dist/cli/chunks/impact-analyzer-MGSI2WBK.js +0 -2
- package/dist/cli/chunks/init-wizard-TBDWRRMC.js +0 -2
- package/dist/cli/chunks/kernel-NV7TO2FK.js +0 -2
- package/dist/cli/chunks/knowledge-graph-7REGYH6A.js +0 -2
- package/dist/cli/chunks/load-test-RYQK44TT.js +0 -2
- package/dist/cli/chunks/memory-backend-3EBE2DEX.js +0 -2
- package/dist/cli/chunks/protocol-executor-MR37S7GX.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-DANGLPTH.js +0 -2
- package/dist/cli/chunks/queen-coordinator-4YJPYF5F.js +0 -2
- package/dist/cli/chunks/router-F4IPY4RQ.js +0 -2
- package/dist/cli/chunks/routing-feedback-VGHFIJ5S.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-2P75WF5A.js +0 -2
- package/dist/cli/chunks/safe-db-47NEO2RS.js +0 -2
- package/dist/cli/chunks/schedule-L5GJW25Z.js +0 -2
- package/dist/cli/chunks/scheduler-NGGGSZMO.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-NKNTYGHO.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-TE2ZRHKA.js +0 -2
- package/dist/cli/chunks/unified-memory-KSBLUZT4.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-V3EOMQIZ.js +0 -2
- package/dist/cli/chunks/unified-persistence-URIRJ4BM.js +0 -2
- package/dist/cli/chunks/visual-security-DJOOVCBZ.js +0 -2
- package/dist/cli/chunks/witness-chain-ZWJUCXCJ.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-5CKA6Q74.js +0 -2
package/.claude/skills/README.md
CHANGED
|
@@ -4,9 +4,9 @@ This directory contains Quality Engineering skills managed by Agentic QE.
|
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
|
|
7
|
-
- **Total QE Skills**:
|
|
7
|
+
- **Total QE Skills**: 85
|
|
8
8
|
- **V2 Methodology Skills**: 62
|
|
9
|
-
- **V3 Domain Skills**:
|
|
9
|
+
- **V3 Domain Skills**: 24
|
|
10
10
|
- **Platform Skills**: 30 (Claude Flow managed)
|
|
11
11
|
- **Validation Infrastructure**: ✅ Installed
|
|
12
12
|
|
|
@@ -80,11 +80,12 @@ Version-agnostic quality engineering best practices from the QE community.
|
|
|
80
80
|
- **wms-testing-patterns**: Warehouse Management System testing patterns for inventory operations, pick/pack/ship workflows, wave management, EDI X12/EDIFACT compliance, RF/barcode scanning, and WMS-ERP integration. Use when testing WMS platforms (Blue Yonder, Manhattan, SAP EWM).
|
|
81
81
|
- **xp-practices**: Apply XP practices including pair programming, ensemble programming, continuous integration, and sustainable pace. Use when implementing agile development practices, improving team collaboration, or adopting technical excellence practices.
|
|
82
82
|
|
|
83
|
-
## V3 Domain Skills (
|
|
83
|
+
## V3 Domain Skills (24)
|
|
84
84
|
|
|
85
85
|
V3-specific implementation guides for the 12 DDD bounded contexts plus on-demand hooks, investigation runbooks, and measurement tools.
|
|
86
86
|
|
|
87
87
|
- **pentest-validation**: Orchestrate security finding validation through graduated exploitation. 4-phase pipeline: recon (SAST/DAST), analysis (code review), validation (exploit proof), report (No Exploit, No Report gate). Eliminates false positives by proving exploitability.
|
|
88
|
+
- **qe-browser**: Browser automation fleet skill built on Vibium (WebDriver BiDi, ~10MB Go binary, auto-installed by `aqe init`). Ships 5 helpers: typed assertions with 16 check kinds, multi-step batch executor, pixel-perfect visual-diff against baselines, prompt-injection scanner with 14 patterns, and semantic intent scorer with 15 intents (accept_cookies, submit_form, fill_email, etc.). Emits a `skipped` envelope with exit code 2 if vibium isn't installed. Supersedes per-skill browser glue in a11y-ally, e2e-flow-verifier, visual-testing-advanced, and 8 other skills. See [ADR-091](../../../docs/implementation/adrs/ADR-091-qe-browser-skill-vibium-engine.md).
|
|
88
89
|
- **qe-chaos-resilience**: Chaos engineering and resilience testing including fault injection, load testing, and system recovery validation.
|
|
89
90
|
- **qe-code-intelligence**: Knowledge graph-based code understanding with semantic search and 80% token reduction through intelligent context retrieval.
|
|
90
91
|
- **qe-coverage-analysis**: O(log n) sublinear coverage gap detection with risk-weighted analysis and intelligent test prioritization.
|
|
@@ -69,32 +69,54 @@ Claude: [Runs scan] → [Analyzes violations] → [Downloads video] → [Extract
|
|
|
69
69
|
|
|
70
70
|
## STEP 1: BROWSER AUTOMATION - Content Fetching
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
```javascript
|
|
74
|
-
ToolSearch("select:mcp__vibium__browser_launch")
|
|
75
|
-
ToolSearch("select:mcp__vibium__browser_navigate")
|
|
76
|
-
mcp__vibium__browser_launch({ headless: true })
|
|
77
|
-
mcp__vibium__browser_navigate({ url: "TARGET_URL" })
|
|
78
|
-
```
|
|
72
|
+
Uses the **qe-browser** fleet skill as the browser engine. qe-browser wraps Vibium (WebDriver BiDi, 10MB Go binary) and provides the QE primitives we rely on. See `.claude/skills/qe-browser/SKILL.md`.
|
|
79
73
|
|
|
80
|
-
|
|
74
|
+
### 1.1: PRIMARY — qe-browser via Vibium CLI
|
|
75
|
+
```bash
|
|
76
|
+
# Navigate
|
|
77
|
+
vibium go "$TARGET_URL"
|
|
78
|
+
vibium wait load
|
|
81
79
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
# Capture accessibility tree without visual render
|
|
81
|
+
vibium a11y-tree --json > /tmp/a11y-work/tree.json
|
|
82
|
+
|
|
83
|
+
# Screenshot for Vision pipeline
|
|
84
|
+
vibium screenshot -o /tmp/a11y-work/page.png --full-page
|
|
86
85
|
```
|
|
87
86
|
|
|
88
|
-
|
|
87
|
+
If Vibium MCP tools are registered (`mcp__vibium__*`), prefer them; otherwise shell out to the `vibium` binary installed by `aqe init`.
|
|
88
|
+
|
|
89
|
+
### 1.2: Run axe-core + WCAG assertions via qe-browser
|
|
90
|
+
```bash
|
|
91
|
+
# Inject axe-core via vibium eval and collect violations
|
|
92
|
+
vibium eval --stdin <<'EOF'
|
|
93
|
+
const s = document.createElement('script');
|
|
94
|
+
s.src = 'https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.10.2/axe.min.js';
|
|
95
|
+
document.head.appendChild(s);
|
|
96
|
+
await new Promise(r => s.onload = r);
|
|
97
|
+
const results = await axe.run();
|
|
98
|
+
JSON.stringify({ violations: results.violations.length, issues: results.violations });
|
|
99
|
+
EOF
|
|
100
|
+
|
|
101
|
+
# Enforce: no critical a11y violations + no failed network requests
|
|
102
|
+
node .claude/skills/qe-browser/scripts/assert.js --checks '[
|
|
103
|
+
{"kind": "no_console_errors"},
|
|
104
|
+
{"kind": "no_failed_requests"},
|
|
105
|
+
{"kind": "selector_visible", "selector": "main, [role=main]"}
|
|
106
|
+
]'
|
|
107
|
+
```
|
|
89
108
|
|
|
90
|
-
###
|
|
109
|
+
### 1.3: FALLBACK — pa11y + Lighthouse (when axe alone is insufficient)
|
|
91
110
|
```bash
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
111
|
+
# Only use when you need the extra rulesets, not as the primary path
|
|
112
|
+
pa11y "$TARGET_URL" --reporter json > /tmp/a11y-work/pa11y.json
|
|
113
|
+
lighthouse "$TARGET_URL" --only-categories=accessibility --output=json --output-path=/tmp/a11y-work/lighthouse.json --chrome-flags="--headless"
|
|
95
114
|
```
|
|
96
115
|
|
|
97
|
-
|
|
116
|
+
**Why we dropped playwright-extra + puppeteer-extra-plugin-stealth from the primary path:**
|
|
117
|
+
- 300MB+ of Node deps vs Vibium's 10MB binary
|
|
118
|
+
- Redundant: Vibium uses WebDriver BiDi which is less fingerprintable than raw CDP
|
|
119
|
+
- Simpler: one tool instead of a cascade
|
|
98
120
|
|
|
99
121
|
### 1d: PARALLEL MULTI-PAGE AUDIT (Optional)
|
|
100
122
|
|
|
@@ -23,6 +23,10 @@ validation:
|
|
|
23
23
|
|
|
24
24
|
> **Consolidated**: For comprehensive WCAG auditing with multi-tool testing (axe-core + pa11y + Lighthouse), video accessibility, and remediation, prefer [`/a11y-ally`](../a11y-ally/). This skill provides a quick reference card for basic accessibility testing patterns.
|
|
25
25
|
|
|
26
|
+
## Browser engine
|
|
27
|
+
|
|
28
|
+
Browser-driven a11y checks should go through the **qe-browser** fleet skill. `vibium a11y-tree --json` returns the full accessibility tree without visual rendering — feed it into axe-core via `vibium eval --stdin` for ruleset enforcement. See `.claude/skills/qe-browser/SKILL.md`.
|
|
29
|
+
|
|
26
30
|
<default_to_action>
|
|
27
31
|
When testing accessibility or ensuring compliance:
|
|
28
32
|
1. APPLY POUR principles: Perceivable, Operable, Understandable, Robust
|
|
@@ -19,6 +19,29 @@ validation:
|
|
|
19
19
|
|
|
20
20
|
# Compatibility Testing
|
|
21
21
|
|
|
22
|
+
## Browser engine
|
|
23
|
+
|
|
24
|
+
Browser-driven checks (viewport emulation, responsive validation, cross-browser screenshots) should go through the **qe-browser** fleet skill (`.claude/skills/qe-browser/`). Vibium is installed by `aqe init`. Quick reference:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Viewport emulation per breakpoint
|
|
28
|
+
vibium viewport 375 667 # mobile
|
|
29
|
+
vibium viewport 768 1024 # tablet
|
|
30
|
+
vibium viewport 1920 1080 # desktop
|
|
31
|
+
|
|
32
|
+
# Full device emulation (user-agent, DPR, touch)
|
|
33
|
+
vibium emulate-device "iPhone 15"
|
|
34
|
+
|
|
35
|
+
# Visual diff per viewport
|
|
36
|
+
for vp in "375 667 mobile" "768 1024 tablet" "1920 1080 desktop"; do
|
|
37
|
+
read w h name <<< "$vp"
|
|
38
|
+
vibium viewport $w $h
|
|
39
|
+
node .claude/skills/qe-browser/scripts/visual-diff.js --name "homepage-$name"
|
|
40
|
+
done
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Cross-browser (Firefox/Safari) still requires Playwright or a cloud device farm today — Vibium's BiDi backend is Chrome-only at v26.3.x.
|
|
44
|
+
|
|
22
45
|
<default_to_action>
|
|
23
46
|
When validating cross-browser/platform compatibility:
|
|
24
47
|
1. DEFINE browser matrix (cover 95%+ of users)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: e2e-flow-verifier
|
|
3
|
-
description: "Use when verifying complete user flows end-to-end with
|
|
3
|
+
description: "Use when verifying complete user flows end-to-end with the qe-browser skill (Vibium), recording session evidence, and asserting state at each step. For product verification with real browser automation."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# E2E Flow Verifier
|
|
8
8
|
|
|
9
|
-
Product verification skill that drives user flows with
|
|
9
|
+
Product verification skill that drives user flows with the **qe-browser** fleet skill (Vibium engine), asserts state at each step, and records evidence as a ZIP of screenshots + DOM snapshots.
|
|
10
10
|
|
|
11
11
|
## Activation
|
|
12
12
|
|
|
@@ -14,65 +14,100 @@ Product verification skill that drives user flows with Playwright, asserts state
|
|
|
14
14
|
/e2e-flow-verifier [flow-name]
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
17
|
+
## Dependency
|
|
18
|
+
|
|
19
|
+
This skill uses `.claude/skills/qe-browser/` for all browser automation. The `vibium` binary is installed automatically by `aqe init`. See `qe-browser/SKILL.md` for the full command reference.
|
|
20
|
+
|
|
21
|
+
## Flow Verification Pattern (qe-browser + batch + assert)
|
|
22
|
+
|
|
23
|
+
Define the flow as a JSON batch plan and drive it with the qe-browser batch runner:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# flows/{{flow-name}}.json
|
|
27
|
+
cat > /tmp/{{flow-name}}.json <<'EOF'
|
|
28
|
+
[
|
|
29
|
+
{"action": "go", "url": "{{base_url}}"},
|
|
30
|
+
{"action": "wait_load"},
|
|
31
|
+
{"action": "fill", "selector": "[data-testid=email]", "text": "{{test_user}}"},
|
|
32
|
+
{"action": "fill", "selector": "[data-testid=password]", "text": "{{test_password}}"},
|
|
33
|
+
{"action": "click", "selector": "[data-testid=login-btn]"},
|
|
34
|
+
{"action": "wait_url","pattern": "/dashboard"},
|
|
35
|
+
{"action": "assert", "checks": [
|
|
36
|
+
{"kind": "url_contains", "text": "/dashboard"},
|
|
37
|
+
{"kind": "selector_visible","selector": "[data-testid=dashboard]"},
|
|
38
|
+
{"kind": "no_console_errors"},
|
|
39
|
+
{"kind": "no_failed_requests"}
|
|
40
|
+
]},
|
|
41
|
+
{"action": "click", "selector": "[data-testid={{action_element}}]"},
|
|
42
|
+
{"action": "assert", "checks": [
|
|
43
|
+
{"kind": "text_visible", "text": "{{expected_text}}"}
|
|
44
|
+
]}
|
|
45
|
+
]
|
|
46
|
+
EOF
|
|
47
|
+
|
|
48
|
+
# Record evidence AND drive the flow
|
|
49
|
+
vibium record start --screenshots --snapshots --name "{{flow-name}}"
|
|
50
|
+
node .claude/skills/qe-browser/scripts/batch.js --steps "@/tmp/{{flow-name}}.json"
|
|
51
|
+
FLOW_EXIT=$?
|
|
52
|
+
vibium record stop -o "test-results/{{flow-name}}/evidence.zip"
|
|
53
|
+
exit $FLOW_EXIT
|
|
53
54
|
```
|
|
54
55
|
|
|
56
|
+
The batch runner exits non-zero if any step fails, so CI gates work with a plain `$?` check.
|
|
57
|
+
|
|
55
58
|
## Evidence Collection
|
|
56
59
|
|
|
57
|
-
After each flow verification:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
After each flow verification, `vibium record` produces a ZIP containing:
|
|
61
|
+
|
|
62
|
+
1. **Screenshots** — one per action + annotated failure shots
|
|
63
|
+
2. **DOM snapshots** — before/after each interaction
|
|
64
|
+
3. **Timeline** — ordered event log with URLs and timings
|
|
65
|
+
4. **Console/network logs** — captured inline
|
|
66
|
+
|
|
67
|
+
Use `vibium har-export` for a separate HAR 1.2 network log if needed.
|
|
68
|
+
|
|
69
|
+
## Asserting backend state alongside UI
|
|
70
|
+
|
|
71
|
+
The qe-browser `assert.js` check kinds include network assertions that capture backend calls made from the page:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
node .claude/skills/qe-browser/scripts/assert.js --checks '[
|
|
75
|
+
{"kind": "response_status", "url": "/api/{{resource}}", "status": 200},
|
|
76
|
+
{"kind": "request_url_seen", "url": "/api/{{resource}}"}
|
|
77
|
+
]'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
For API calls that don't originate from the page, run the API check in a separate step (`curl` + `jq`, or a dedicated API test skill).
|
|
62
81
|
|
|
63
82
|
## Common Flows to Verify
|
|
64
83
|
|
|
65
84
|
| Flow | Steps | Critical Assertions |
|
|
66
85
|
|------|-------|-------------------|
|
|
67
|
-
| Sign-up | Register → Verify email → Login |
|
|
68
|
-
| Purchase | Browse → Add to cart → Checkout → Pay |
|
|
69
|
-
| Profile | Login → Edit profile → Save |
|
|
70
|
-
| Search | Enter query → Filter → Select result |
|
|
86
|
+
| Sign-up | Register → Verify email → Login | `url_contains /dashboard`, `no_failed_requests` |
|
|
87
|
+
| Purchase | Browse → Add to cart → Checkout → Pay | `response_status /api/orders 201`, `text_visible "Thank you"` |
|
|
88
|
+
| Profile | Login → Edit profile → Save | `value_equals` on the reloaded form, `no_console_errors` |
|
|
89
|
+
| Search | Enter query → Filter → Select result | `element_count .result >= 1`, `text_visible <query>` |
|
|
90
|
+
|
|
91
|
+
## Reusing auth state across runs
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Once: log in and save state
|
|
95
|
+
vibium go "{{base_url}}/login"
|
|
96
|
+
vibium fill "[data-testid=email]" "$USERNAME"
|
|
97
|
+
vibium fill "[data-testid=password]" "$PASSWORD"
|
|
98
|
+
vibium click "[data-testid=login-btn]"
|
|
99
|
+
vibium wait url "/dashboard"
|
|
100
|
+
vibium storage -o test-results/auth/state.json
|
|
101
|
+
|
|
102
|
+
# Every subsequent run
|
|
103
|
+
vibium storage restore test-results/auth/state.json
|
|
104
|
+
vibium go "{{base_url}}/dashboard"
|
|
105
|
+
```
|
|
71
106
|
|
|
72
107
|
## Gotchas
|
|
73
108
|
|
|
74
|
-
-
|
|
75
|
-
- Selectors break on deployment —
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
109
|
+
- **Re-map after DOM changes** — Vibium `@e1` refs are invalidated by navigation; use `vibium diff map` to see what changed and re-map if needed.
|
|
110
|
+
- **Selectors break on deployment** — prefer `data-testid` over CSS classes.
|
|
111
|
+
- **Auth tokens expire** — use fresh login per run, or rotate `storage` snapshots.
|
|
112
|
+
- **Evidence ZIPs grow** — keep failure runs only in CI, gc after N days.
|
|
113
|
+
- **No raw Playwright** — this skill used to use `@playwright/test`. If you need Playwright's network interception (`page.route`), use it in a separate skill and call it as a step; don't reintroduce the dependency here.
|
|
@@ -20,6 +20,10 @@ validation:
|
|
|
20
20
|
|
|
21
21
|
# Enterprise Integration Testing
|
|
22
22
|
|
|
23
|
+
## Browser engine
|
|
24
|
+
|
|
25
|
+
UI-level enterprise integration checks (SAP Fiori launchpad smoke tests, admin UI validation) should use the **qe-browser** fleet skill. RFC/BAPI/IDoc/OData/SOAP testing continues to use the dedicated `qe-soap-tester`, `qe-sap-rfc-tester`, `qe-sap-idoc-tester`, and `qe-odata-contract-tester` agents. See `.claude/skills/qe-browser/SKILL.md`.
|
|
26
|
+
|
|
23
27
|
<default_to_action>
|
|
24
28
|
When testing enterprise integrations or SAP-connected systems:
|
|
25
29
|
1. MAP the end-to-end flow (web -> API -> middleware -> backend -> response)
|
|
@@ -20,6 +20,20 @@ validation:
|
|
|
20
20
|
|
|
21
21
|
# Localization & Internationalization Testing
|
|
22
22
|
|
|
23
|
+
## Browser engine
|
|
24
|
+
|
|
25
|
+
Browser-driven locale checks (RTL layout diffs, language-switching flows, locale-specific screenshots) should go through the **qe-browser** fleet skill. Example:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
vibium go "$BASE_URL?lang=ar" # Arabic, RTL
|
|
29
|
+
vibium wait load
|
|
30
|
+
node .claude/skills/qe-browser/scripts/visual-diff.js --name homepage-ar-rtl
|
|
31
|
+
vibium go "$BASE_URL?lang=ja" # Japanese, CJK text expansion
|
|
32
|
+
node .claude/skills/qe-browser/scripts/visual-diff.js --name homepage-ja
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
See `.claude/skills/qe-browser/SKILL.md` for the full reference.
|
|
36
|
+
|
|
23
37
|
<default_to_action>
|
|
24
38
|
When testing multi-language/region support:
|
|
25
39
|
1. VERIFY translation coverage (all strings translated)
|
|
@@ -20,6 +20,22 @@ validation:
|
|
|
20
20
|
|
|
21
21
|
# Observability Testing Patterns
|
|
22
22
|
|
|
23
|
+
## Browser engine
|
|
24
|
+
|
|
25
|
+
Dashboard screenshot validation and alert-UI verification go through the **qe-browser** fleet skill (`.claude/skills/qe-browser/`). Vibium is installed by `aqe init`. Typical dashboard regression workflow:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
vibium go "$GRAFANA_URL/d/api-latency"
|
|
29
|
+
vibium wait load
|
|
30
|
+
node .claude/skills/qe-browser/scripts/assert.js --checks '[
|
|
31
|
+
{"kind": "selector_visible", "selector": ".panel-title"},
|
|
32
|
+
{"kind": "no_console_errors"},
|
|
33
|
+
{"kind": "no_failed_requests"},
|
|
34
|
+
{"kind": "element_count", "selector": ".panel", "op": ">=", "count": 4}
|
|
35
|
+
]'
|
|
36
|
+
node .claude/skills/qe-browser/scripts/visual-diff.js --name "grafana-api-latency"
|
|
37
|
+
```
|
|
38
|
+
|
|
23
39
|
<default_to_action>
|
|
24
40
|
When testing observability infrastructure, dashboards, or monitoring:
|
|
25
41
|
1. VALIDATE data accuracy (source data matches what the dashboard displays)
|