@fasttest-ai/qa-agent 0.4.3 → 1.0.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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAyF,MAAM,YAAY,CAAC;AACvJ,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAoB9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAErE,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAC3H,mFAAmF;IACnF,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAClE,CAAC;AAUD,MAAM,OAAO,cAAc;IACjB,OAAO,GAAmB,IAAI,CAAC;IAC/B,OAAO,GAA0B,IAAI,CAAC;IACtC,IAAI,GAAgB,IAAI,CAAC;IACzB,WAAW,CAAc;IACzB,QAAQ,CAAU;IAClB,OAAO,CAAS;IAChB,UAAU,CAAqB;IAC/B,aAAa,GAAyB,IAAI,CAAC;IAC3C,cAAc,GAAe,EAAE,CAAC;IAExC,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,SAAS,CAAC,MAA0B;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,6DAA6D;IACrD,iBAAiB,CAAC,KAAsC;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,UAAU,gFAAgF,CAAC,CAAC;YACjJ,CAAC;YACD,OAAO,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,6DAA6D;QAC7D,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACjD,mDAAmD;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjB,MAAM,QAAQ,GACZ,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC5B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAC7B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,QAAQ,CAAC;YAEjB,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,EAAE;iBAC/F,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACnF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC7D,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;wBAC5E,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;wBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,EAAE;qBAC/F,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QACD,iCAAiC;QACjC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY;QAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,oBAAoB,CAAC,IAAU;QACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,yDAAyD;YACzD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBACnC,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1C,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC5B,CAAC;YACH,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,IAAI,CAAC,aAAa,GAAG;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;gBACnC,MAAM;gBACN,YAAY;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA4B,EAAE,UAAmB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC;IAEO,qBAAqB,CAAC,IAAU;QACtC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvB,GAAG;gBACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;gBACpB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACzB,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE;gBAClD,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;YACZ,KAAK,EAAE,EAAE,EAAE,wCAAwC;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,MAAM,GAAoD,EAAE,CAAC;QACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,CAAC;gBACR,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;gBACnB,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,UAAU,CAAC,GAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,oBAAoB,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,oBAAoB,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,6DAA6D;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}
package/dist/cli.d.ts DELETED
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * FastTest Agent CI Runner — headless test execution for CI/CD pipelines.
4
- * No MCP dependency. Calls executeRun() directly.
5
- *
6
- * Usage:
7
- * fasttest-ci --api-key <key> --suite-id <id> [options]
8
- *
9
- * Options:
10
- * --api-key Organization API key (required)
11
- * --suite-id Test suite ID to run (required)
12
- * --base-url Cloud API base URL (default: https://api.fasttest.ai)
13
- * --app-url Override the application URL for test navigation
14
- * --pr-url GitHub PR URL for posting results as a comment
15
- * --browser Browser engine: chromium | firefox | webkit (default: chromium)
16
- * --test-case-ids Comma-separated test case IDs to run (default: all)
17
- * --json Output results as JSON instead of formatted text
18
- */
19
- export {};
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/cloud.d.ts DELETED
@@ -1,302 +0,0 @@
1
- /**
2
- * HTTP client to Cloud API — authenticates with the org's API key.
3
- */
4
- export interface CloudClientOptions {
5
- apiKey: string;
6
- baseUrl?: string;
7
- }
8
- export interface DeviceCodeResponse {
9
- code: string;
10
- poll_token: string;
11
- expires_in: number;
12
- verification_url: string;
13
- }
14
- export interface DeviceCodeStatusResponse {
15
- status: "pending" | "completed" | "expired";
16
- api_key?: string;
17
- org_name?: string;
18
- org_slug?: string;
19
- }
20
- export interface RunResponse {
21
- execution_id: string;
22
- status: string;
23
- base_url: string | null;
24
- test_cases: TestCasePayload[];
25
- previous_execution_id: string | null;
26
- /** Map of test_case_id → status from the previous execution (for fail-first ordering). */
27
- previous_statuses?: Record<string, string>;
28
- }
29
- export interface RegressionItem {
30
- test_case_id: string;
31
- name: string;
32
- previous_status: string;
33
- current_status: string;
34
- error?: string;
35
- }
36
- export interface ExecutionDiff {
37
- previous_execution_id: string | null;
38
- regressions: RegressionItem[];
39
- fixes: RegressionItem[];
40
- new_tests: Array<{
41
- test_case_id: string;
42
- name: string;
43
- status: string;
44
- }>;
45
- removed_tests: Array<{
46
- test_case_id: string;
47
- name: string;
48
- }>;
49
- unchanged: {
50
- passed: number;
51
- failed: number;
52
- };
53
- healed_count: number;
54
- }
55
- export interface TestCasePayload {
56
- id: string;
57
- name: string;
58
- steps: TestStep[];
59
- assertions: TestAssertion[];
60
- test_data: Record<string, unknown>[];
61
- timeout_seconds: number;
62
- retry_count: number;
63
- depends_on?: string[];
64
- }
65
- export interface TestStep {
66
- action: string;
67
- selector?: string;
68
- value?: string;
69
- url?: string;
70
- description?: string;
71
- /** Semantic intent — what this step is trying to accomplish (e.g. "Click the submit button"). */
72
- intent?: string;
73
- timeout?: number;
74
- fields?: Record<string, string>;
75
- condition?: string;
76
- key?: string;
77
- file_paths?: string[];
78
- expression?: string;
79
- target?: string;
80
- width?: number;
81
- height?: number;
82
- type?: string;
83
- text?: string;
84
- count?: number;
85
- attribute?: string;
86
- }
87
- export interface TestAssertion {
88
- type: string;
89
- selector?: string;
90
- text?: string;
91
- url?: string;
92
- count?: number;
93
- attribute?: string;
94
- value?: string;
95
- expected_value?: string;
96
- description?: string;
97
- }
98
- /** Thrown when the org has exceeded its monthly run quota (HTTP 402). */
99
- export declare class QuotaExceededError extends Error {
100
- plan: string;
101
- used: number;
102
- limit: number;
103
- constructor(plan: string, used: number, limit: number);
104
- }
105
- export declare class CloudClient {
106
- private apiKey;
107
- private baseUrl;
108
- constructor(options: CloudClientOptions);
109
- /** Derive dashboard URL from API base URL (e.g. https://api.fasttest.ai → https://fasttest.ai) */
110
- get dashboardUrl(): string;
111
- /**
112
- * Request a device code for browser-based authentication.
113
- * Unauthenticated — no API key needed.
114
- */
115
- static requestDeviceCode(baseUrl: string): Promise<DeviceCodeResponse>;
116
- /**
117
- * Poll for device code status. Returns when completed or expired.
118
- * Unauthenticated — uses the poll_token for identity.
119
- */
120
- static pollDeviceCode(baseUrl: string, pollToken: string): Promise<DeviceCodeStatusResponse>;
121
- private request;
122
- get<T>(path: string): Promise<T>;
123
- post<T>(path: string, body?: unknown): Promise<T>;
124
- health(): Promise<{
125
- status: string;
126
- }>;
127
- listProjects(): Promise<Record<string, unknown>>;
128
- /** Get-or-create a project by name. Returns project with id. */
129
- resolveProject(name: string, baseUrl?: string): Promise<{
130
- id: string;
131
- name: string;
132
- }>;
133
- /** List all test suites across all projects for the org. */
134
- listSuites(search?: string): Promise<Array<Record<string, unknown>>>;
135
- /** Resolve a suite by name (case-insensitive). Returns the best match. */
136
- resolveSuite(name: string, projectId?: string): Promise<{
137
- id: string;
138
- name: string;
139
- }>;
140
- /** Create a test suite under a project. */
141
- createSuite(projectId: string, body: {
142
- name: string;
143
- description?: string;
144
- test_type?: string;
145
- auto_generated?: boolean;
146
- tags?: string[];
147
- }): Promise<{
148
- id: string;
149
- name: string;
150
- }>;
151
- /** Create a test case and link it to suite(s). */
152
- createTestCase(body: {
153
- name: string;
154
- description?: string;
155
- priority?: string;
156
- steps: Array<Record<string, unknown>>;
157
- assertions: Array<Record<string, unknown>>;
158
- tags?: string[];
159
- test_suite_ids: string[];
160
- auto_generated?: boolean;
161
- generated_by_agent?: boolean;
162
- natural_language_source?: string;
163
- }): Promise<{
164
- id: string;
165
- name: string;
166
- }>;
167
- /** Update an existing test case. */
168
- updateTestCase(testCaseId: string, body: {
169
- name?: string;
170
- description?: string;
171
- priority?: string;
172
- steps?: Array<Record<string, unknown>>;
173
- assertions?: Array<Record<string, unknown>>;
174
- tags?: string[];
175
- }): Promise<{
176
- id: string;
177
- name: string;
178
- }>;
179
- /** Apply a healed selector to a test case, replacing the original in all steps. */
180
- applyHealing(testCaseId: string, originalSelector: string, healedSelector: string): Promise<Record<string, unknown>>;
181
- /** Detect repeated step sequences across test cases. */
182
- detectSharedSteps(projectId?: string, autoCreate?: boolean): Promise<Record<string, unknown>>;
183
- /** Resolve an environment by name within a suite's project. */
184
- resolveEnvironment(suiteId: string, name: string): Promise<{
185
- id: string;
186
- name: string;
187
- base_url: string;
188
- }>;
189
- /** Start a test run — returns execution_id + test cases to execute locally. */
190
- startRun(body: {
191
- suite_id: string;
192
- environment_id?: string;
193
- browser?: string;
194
- test_case_ids?: string[];
195
- device?: string;
196
- }): Promise<RunResponse>;
197
- /** Report the result of a single test case. */
198
- reportResult(executionId: string, body: {
199
- test_case_id: string;
200
- status: string;
201
- duration_ms?: number;
202
- error_message?: string;
203
- screenshots?: string[];
204
- console_logs?: string[];
205
- step_results?: Record<string, unknown>[];
206
- retry_attempt?: number;
207
- network_summary?: Array<{
208
- url: string;
209
- method: string;
210
- status: number;
211
- duration: number;
212
- mimeType: string;
213
- responseSize: number;
214
- }>;
215
- }): Promise<{
216
- status: string;
217
- }>;
218
- /** Mark a suite execution as complete. */
219
- completeExecution(executionId: string, status?: string): Promise<Record<string, unknown>>;
220
- /** Cancel a running execution. */
221
- cancelExecution(executionId: string): Promise<Record<string, unknown>>;
222
- /** Get execution status. */
223
- getExecutionStatus(executionId: string): Promise<Record<string, unknown>>;
224
- /** Get regression diff comparing this execution against the previous run. */
225
- getExecutionDiff(executionId: string): Promise<ExecutionDiff>;
226
- /** Notify that a test case is about to start executing. Non-fatal. */
227
- notifyTestStarted(executionId: string, testCaseId: string, testCaseName: string): Promise<void>;
228
- /** Notify that selector healing is being attempted. Non-fatal. */
229
- notifyHealingStarted(executionId: string, testCaseId: string, originalSelector: string): Promise<void>;
230
- /** Lightweight check for control signals (pause/cancel) from the dashboard. */
231
- checkControlStatus(executionId: string): Promise<string>;
232
- /** Set the org's GitHub token. */
233
- setGithubToken(token: string): Promise<Record<string, unknown>>;
234
- /** Post test results as a PR comment. */
235
- postPrComment(body: {
236
- pr_url: string;
237
- execution_id: string;
238
- status: string;
239
- total: number;
240
- passed: number;
241
- failed: number;
242
- skipped: number;
243
- duration_seconds: number;
244
- test_results: Array<{
245
- name?: string;
246
- status?: string;
247
- error?: string;
248
- }>;
249
- healed?: Array<{
250
- original_selector?: string;
251
- new_selector?: string;
252
- strategy?: string;
253
- confidence?: number;
254
- }>;
255
- flaky_retries?: Array<{
256
- name?: string;
257
- retry_attempts?: number;
258
- }>;
259
- regressions?: Array<{
260
- name: string;
261
- previous_status: string;
262
- current_status: string;
263
- error?: string;
264
- }>;
265
- fixes?: Array<{
266
- name: string;
267
- previous_status: string;
268
- current_status: string;
269
- }>;
270
- }): Promise<Record<string, unknown>>;
271
- /** Create a live session for dashboard visibility. Non-fatal by design. */
272
- createLiveSession(body: {
273
- tool: string;
274
- description: string;
275
- url?: string;
276
- project_name?: string;
277
- }): Promise<{
278
- session_id: string;
279
- }>;
280
- /** Update a live session (latest action, phase, link suite/execution). */
281
- updateLiveSession(sessionId: string, body: {
282
- latest_action?: string;
283
- phase?: string;
284
- suite_id?: string;
285
- execution_id?: string;
286
- status?: string;
287
- url?: string;
288
- }): Promise<{
289
- updated: boolean;
290
- }>;
291
- /** Save a chaos report with adversarial findings. */
292
- saveChaosReport(projectId: string | undefined, body: {
293
- url: string;
294
- findings: Array<{
295
- severity: string;
296
- category: string;
297
- description: string;
298
- reproduction_steps: string[];
299
- console_errors?: string[];
300
- }>;
301
- }): Promise<Record<string, unknown>>;
302
- }
package/dist/cloud.js DELETED
@@ -1,261 +0,0 @@
1
- /**
2
- * HTTP client to Cloud API — authenticates with the org's API key.
3
- */
4
- /** Thrown when the org has exceeded its monthly run quota (HTTP 402). */
5
- export class QuotaExceededError extends Error {
6
- plan;
7
- used;
8
- limit;
9
- constructor(plan, used, limit) {
10
- super(`Monthly run limit reached (${used}/${limit}). Current plan: ${plan}. Upgrade at https://fasttest.ai to continue.`);
11
- this.plan = plan;
12
- this.used = used;
13
- this.limit = limit;
14
- this.name = "QuotaExceededError";
15
- }
16
- }
17
- export class CloudClient {
18
- apiKey;
19
- baseUrl;
20
- constructor(options) {
21
- this.apiKey = options.apiKey;
22
- this.baseUrl = (options.baseUrl ?? "https://api.fasttest.ai").replace(/\/$/, "");
23
- }
24
- /** Derive dashboard URL from API base URL (e.g. https://api.fasttest.ai → https://fasttest.ai) */
25
- get dashboardUrl() {
26
- try {
27
- const u = new URL(this.baseUrl);
28
- u.hostname = u.hostname.replace(/^api\./, "");
29
- u.pathname = "/";
30
- return u.origin;
31
- }
32
- catch {
33
- return "https://fasttest.ai";
34
- }
35
- }
36
- /**
37
- * Request a device code for browser-based authentication.
38
- * Unauthenticated — no API key needed.
39
- */
40
- static async requestDeviceCode(baseUrl) {
41
- const url = `${baseUrl.replace(/\/$/, "")}/api/v1/auth/device-code`;
42
- const resp = await fetch(url, { method: "POST" });
43
- if (!resp.ok) {
44
- const text = await resp.text();
45
- throw new Error(`Device code request failed (${resp.status}): ${text}`);
46
- }
47
- return (await resp.json());
48
- }
49
- /**
50
- * Poll for device code status. Returns when completed or expired.
51
- * Unauthenticated — uses the poll_token for identity.
52
- */
53
- static async pollDeviceCode(baseUrl, pollToken) {
54
- const url = `${baseUrl.replace(/\/$/, "")}/api/v1/auth/device-code/status?poll_token=${encodeURIComponent(pollToken)}`;
55
- const resp = await fetch(url);
56
- if (!resp.ok) {
57
- const text = await resp.text();
58
- throw new Error(`Device code poll failed (${resp.status}): ${text}`);
59
- }
60
- return (await resp.json());
61
- }
62
- async request(method, path, body) {
63
- const url = `${this.baseUrl}/api/v1${path}`;
64
- const headers = {
65
- "x-api-key": this.apiKey,
66
- "Content-Type": "application/json",
67
- };
68
- const maxRetries = 2;
69
- const baseDelay = 1000;
70
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
71
- const controller = new AbortController();
72
- const timeoutId = setTimeout(() => controller.abort(), 30_000);
73
- try {
74
- const init = { method, headers, signal: controller.signal };
75
- if (body !== undefined) {
76
- init.body = JSON.stringify(body);
77
- }
78
- const resp = await fetch(url, init);
79
- clearTimeout(timeoutId);
80
- if (!resp.ok) {
81
- const text = await resp.text();
82
- if (resp.status >= 500 && attempt < maxRetries) {
83
- await new Promise((r) => setTimeout(r, baseDelay * 2 ** attempt));
84
- continue;
85
- }
86
- if (resp.status === 402) {
87
- // Parse "Monthly run limit reached (50/50). Current plan: free."
88
- const match = text.match(/\((\d+)\/(\d+)\).*plan:\s*(\w+)/i);
89
- throw new QuotaExceededError(match?.[3] ?? "unknown", match ? parseInt(match[1]) : 0, match ? parseInt(match[2]) : 0);
90
- }
91
- throw new Error(`Cloud API ${method} ${path} → ${resp.status}: ${text}`);
92
- }
93
- return (await resp.json());
94
- }
95
- catch (err) {
96
- clearTimeout(timeoutId);
97
- const isRetryable = err instanceof Error &&
98
- (err.name === "AbortError" || err.message.includes("fetch failed"));
99
- if (isRetryable && attempt < maxRetries) {
100
- await new Promise((r) => setTimeout(r, baseDelay * 2 ** attempt));
101
- continue;
102
- }
103
- throw err;
104
- }
105
- }
106
- throw new Error(`Cloud API ${method} ${path}: max retries exceeded`);
107
- }
108
- async get(path) {
109
- return this.request("GET", path);
110
- }
111
- async post(path, body) {
112
- return this.request("POST", path, body);
113
- }
114
- // --- Health ---
115
- async health() {
116
- const url = `${this.baseUrl}/health`;
117
- const resp = await fetch(url);
118
- return (await resp.json());
119
- }
120
- // --- Projects ---
121
- async listProjects() {
122
- return this.get("/qa/projects/");
123
- }
124
- /** Get-or-create a project by name. Returns project with id. */
125
- async resolveProject(name, baseUrl) {
126
- const body = { name };
127
- if (baseUrl)
128
- body.base_url = baseUrl;
129
- return this.post("/qa/projects/resolve", body);
130
- }
131
- // --- Suites ---
132
- /** List all test suites across all projects for the org. */
133
- async listSuites(search) {
134
- const qs = search ? `?search=${encodeURIComponent(search)}` : "";
135
- return this.get(`/qa/projects/suites/all${qs}`);
136
- }
137
- /** Resolve a suite by name (case-insensitive). Returns the best match. */
138
- async resolveSuite(name, projectId) {
139
- const body = { name };
140
- if (projectId)
141
- body.project_id = projectId;
142
- return this.post("/qa/projects/suites/resolve", body);
143
- }
144
- // --- Suite + Test Case Management ---
145
- /** Create a test suite under a project. */
146
- async createSuite(projectId, body) {
147
- return this.post(`/qa/projects/${projectId}/test-suites`, {
148
- ...body,
149
- project_id: projectId,
150
- });
151
- }
152
- /** Create a test case and link it to suite(s). */
153
- async createTestCase(body) {
154
- return this.post("/qa/test-cases/", body);
155
- }
156
- /** Update an existing test case. */
157
- async updateTestCase(testCaseId, body) {
158
- return this.request("PUT", `/qa/test-cases/${testCaseId}`, body);
159
- }
160
- /** Apply a healed selector to a test case, replacing the original in all steps. */
161
- async applyHealing(testCaseId, originalSelector, healedSelector) {
162
- return this.post(`/qa/test-cases/${testCaseId}/apply-healing`, {
163
- original_selector: originalSelector,
164
- healed_selector: healedSelector,
165
- });
166
- }
167
- /** Detect repeated step sequences across test cases. */
168
- async detectSharedSteps(projectId, autoCreate) {
169
- const params = new URLSearchParams();
170
- if (projectId)
171
- params.set("project_id", projectId);
172
- if (autoCreate)
173
- params.set("auto_create", "true");
174
- const qs = params.toString() ? `?${params.toString()}` : "";
175
- return this.post(`/qa/shared-steps/detect${qs}`, {});
176
- }
177
- // --- Environments ---
178
- /** Resolve an environment by name within a suite's project. */
179
- async resolveEnvironment(suiteId, name) {
180
- return this.post("/qa/environments/resolve", { suite_id: suiteId, name });
181
- }
182
- // --- Execution (Phase 3) ---
183
- /** Start a test run — returns execution_id + test cases to execute locally. */
184
- async startRun(body) {
185
- return this.post("/qa/execution/run", body);
186
- }
187
- /** Report the result of a single test case. */
188
- async reportResult(executionId, body) {
189
- return this.post(`/qa/execution/executions/${executionId}/results`, body);
190
- }
191
- /** Mark a suite execution as complete. */
192
- async completeExecution(executionId, status) {
193
- return this.post(`/qa/execution/executions/${executionId}/complete`, { status });
194
- }
195
- /** Cancel a running execution. */
196
- async cancelExecution(executionId) {
197
- return this.post(`/qa/execution/executions/${executionId}/cancel`, {});
198
- }
199
- /** Get execution status. */
200
- async getExecutionStatus(executionId) {
201
- return this.get(`/qa/execution/executions/${executionId}`);
202
- }
203
- /** Get regression diff comparing this execution against the previous run. */
204
- async getExecutionDiff(executionId) {
205
- return this.get(`/qa/execution/executions/${executionId}/diff`);
206
- }
207
- /** Notify that a test case is about to start executing. Non-fatal. */
208
- async notifyTestStarted(executionId, testCaseId, testCaseName) {
209
- try {
210
- await this.post(`/qa/execution/executions/${executionId}/test-started`, {
211
- test_case_id: testCaseId,
212
- test_case_name: testCaseName,
213
- });
214
- }
215
- catch {
216
- // Non-fatal — War Room will just miss the "running" indicator
217
- }
218
- }
219
- /** Notify that selector healing is being attempted. Non-fatal. */
220
- async notifyHealingStarted(executionId, testCaseId, originalSelector) {
221
- try {
222
- await this.post(`/qa/execution/executions/${executionId}/healing-started`, {
223
- test_case_id: testCaseId,
224
- original_selector: originalSelector,
225
- });
226
- }
227
- catch {
228
- // Non-fatal — War Room will just miss the "healing..." indicator
229
- }
230
- }
231
- /** Lightweight check for control signals (pause/cancel) from the dashboard. */
232
- async checkControlStatus(executionId) {
233
- const resp = await this.get(`/qa/execution/executions/${executionId}/control-status`);
234
- return resp.status;
235
- }
236
- // --- GitHub (Phase 6) ---
237
- /** Set the org's GitHub token. */
238
- async setGithubToken(token) {
239
- return this.request("PUT", "/qa/github/token", { github_token: token });
240
- }
241
- /** Post test results as a PR comment. */
242
- async postPrComment(body) {
243
- return this.post("/qa/github/pr-comment", body);
244
- }
245
- // --- Live Sessions ---
246
- /** Create a live session for dashboard visibility. Non-fatal by design. */
247
- async createLiveSession(body) {
248
- return this.post("/qa/live-sessions", body);
249
- }
250
- /** Update a live session (latest action, phase, link suite/execution). */
251
- async updateLiveSession(sessionId, body) {
252
- return this.request("PATCH", `/qa/live-sessions/${sessionId}`, body);
253
- }
254
- // --- Chaos (Break My App) ---
255
- /** Save a chaos report with adversarial findings. */
256
- async saveChaosReport(projectId, body) {
257
- const qs = projectId ? `?project_id=${projectId}` : "";
258
- return this.post(`/qa/chaos/reports${qs}`, body);
259
- }
260
- }
261
- //# sourceMappingURL=cloud.js.map
package/dist/cloud.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,21 +0,0 @@
1
- /**
2
- * Global config manager — reads/writes ~/.fasttest/config.json
3
- * Stores API key and base URL so the MCP server can boot without CLI args.
4
- * Falls back to legacy ~/.qa-agent/config.json for backward compatibility.
5
- */
6
- declare const CONFIG_PATH: string;
7
- export interface GlobalConfig {
8
- api_key?: string;
9
- base_url?: string;
10
- }
11
- /**
12
- * Load config from ~/.fasttest/config.json (or legacy ~/.qa-agent/config.json).
13
- * Returns empty object if file doesn't exist or is malformed.
14
- */
15
- export declare function loadGlobalConfig(): GlobalConfig;
16
- /**
17
- * Merge new values into ~/.fasttest/config.json and write with 0o600 permissions.
18
- * Always writes to the new location (~/.fasttest/).
19
- */
20
- export declare function saveGlobalConfig(updates: Partial<GlobalConfig>): void;
21
- export { CONFIG_PATH };