@qawolf/cli 1.11.2 → 1.12.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.
package/dist/cli.js CHANGED
@@ -19251,7 +19251,7 @@ var require_path = __commonJS((exports, module) => {
19251
19251
  module.exports = isWindows ? { sep: "\\" } : { sep: "/" };
19252
19252
  });
19253
19253
 
19254
- // node_modules/balanced-match/index.js
19254
+ // node_modules/readdir-glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
19255
19255
  var require_balanced_match = __commonJS((exports, module) => {
19256
19256
  module.exports = balanced;
19257
19257
  function balanced(a2, b3, str) {
@@ -19308,7 +19308,7 @@ var require_balanced_match = __commonJS((exports, module) => {
19308
19308
  }
19309
19309
  });
19310
19310
 
19311
- // node_modules/brace-expansion/index.js
19311
+ // node_modules/readdir-glob/node_modules/minimatch/node_modules/brace-expansion/index.js
19312
19312
  var require_brace_expansion = __commonJS((exports, module) => {
19313
19313
  var balanced = require_balanced_match();
19314
19314
  module.exports = expandTop;
@@ -20363,7 +20363,7 @@ var require_readdir_glob = __commonJS((exports, module) => {
20363
20363
  readdirGlob.ReaddirGlob = ReaddirGlob;
20364
20364
  });
20365
20365
 
20366
- // node_modules/archiver/node_modules/async/dist/async.js
20366
+ // node_modules/async/dist/async.js
20367
20367
  var require_async = __commonJS((exports, module) => {
20368
20368
  (function(global2, factory) {
20369
20369
  typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.async = {}));
@@ -32626,7 +32626,272 @@ var require_isPlainObject = __commonJS((exports, module) => {
32626
32626
  module.exports = isPlainObject4;
32627
32627
  });
32628
32628
 
32629
- // node_modules/minimatch/dist/commonjs/assert-valid-pattern.js
32629
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
32630
+ var require_balanced_match2 = __commonJS((exports, module) => {
32631
+ module.exports = balanced;
32632
+ function balanced(a2, b3, str) {
32633
+ if (a2 instanceof RegExp)
32634
+ a2 = maybeMatch(a2, str);
32635
+ if (b3 instanceof RegExp)
32636
+ b3 = maybeMatch(b3, str);
32637
+ var r2 = range(a2, b3, str);
32638
+ return r2 && {
32639
+ start: r2[0],
32640
+ end: r2[1],
32641
+ pre: str.slice(0, r2[0]),
32642
+ body: str.slice(r2[0] + a2.length, r2[1]),
32643
+ post: str.slice(r2[1] + b3.length)
32644
+ };
32645
+ }
32646
+ function maybeMatch(reg, str) {
32647
+ var m4 = str.match(reg);
32648
+ return m4 ? m4[0] : null;
32649
+ }
32650
+ balanced.range = range;
32651
+ function range(a2, b3, str) {
32652
+ var begs, beg, left, right, result;
32653
+ var ai2 = str.indexOf(a2);
32654
+ var bi2 = str.indexOf(b3, ai2 + 1);
32655
+ var i2 = ai2;
32656
+ if (ai2 >= 0 && bi2 > 0) {
32657
+ if (a2 === b3) {
32658
+ return [ai2, bi2];
32659
+ }
32660
+ begs = [];
32661
+ left = str.length;
32662
+ while (i2 >= 0 && !result) {
32663
+ if (i2 == ai2) {
32664
+ begs.push(i2);
32665
+ ai2 = str.indexOf(a2, i2 + 1);
32666
+ } else if (begs.length == 1) {
32667
+ result = [begs.pop(), bi2];
32668
+ } else {
32669
+ beg = begs.pop();
32670
+ if (beg < left) {
32671
+ left = beg;
32672
+ right = bi2;
32673
+ }
32674
+ bi2 = str.indexOf(b3, i2 + 1);
32675
+ }
32676
+ i2 = ai2 < bi2 && ai2 >= 0 ? ai2 : bi2;
32677
+ }
32678
+ if (begs.length) {
32679
+ result = [left, right];
32680
+ }
32681
+ }
32682
+ return result;
32683
+ }
32684
+ });
32685
+
32686
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
32687
+ var require_brace_expansion2 = __commonJS((exports, module) => {
32688
+ var balanced = require_balanced_match2();
32689
+ module.exports = expandTop;
32690
+ var escSlash = "\x00SLASH" + Math.random() + "\x00";
32691
+ var escOpen = "\x00OPEN" + Math.random() + "\x00";
32692
+ var escClose = "\x00CLOSE" + Math.random() + "\x00";
32693
+ var escComma = "\x00COMMA" + Math.random() + "\x00";
32694
+ var escPeriod = "\x00PERIOD" + Math.random() + "\x00";
32695
+ var EXPANSION_MAX = 1e5;
32696
+ var EXPANSION_MAX_LENGTH = 4000000;
32697
+ function numeric(str) {
32698
+ return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0);
32699
+ }
32700
+ function escapeBraces(str) {
32701
+ return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod);
32702
+ }
32703
+ function unescapeBraces(str) {
32704
+ return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".");
32705
+ }
32706
+ function parseCommaParts(str) {
32707
+ if (!str)
32708
+ return [""];
32709
+ var parts = [];
32710
+ var m4 = balanced("{", "}", str);
32711
+ if (!m4)
32712
+ return str.split(",");
32713
+ var pre = m4.pre;
32714
+ var body = m4.body;
32715
+ var post = m4.post;
32716
+ var p3 = pre.split(",");
32717
+ p3[p3.length - 1] += "{" + body + "}";
32718
+ var postParts = parseCommaParts(post);
32719
+ if (post.length) {
32720
+ p3[p3.length - 1] += postParts.shift();
32721
+ p3.push.apply(p3, postParts);
32722
+ }
32723
+ parts.push.apply(parts, p3);
32724
+ return parts;
32725
+ }
32726
+ function expandTop(str, options) {
32727
+ if (!str)
32728
+ return [];
32729
+ options = options || {};
32730
+ var max = options.max == null ? EXPANSION_MAX : options.max;
32731
+ var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;
32732
+ if (str.substr(0, 2) === "{}") {
32733
+ str = "\\{\\}" + str.substr(2);
32734
+ }
32735
+ return expand(escapeBraces(str), max, maxLength, true).map(unescapeBraces);
32736
+ }
32737
+ function embrace(str) {
32738
+ return "{" + str + "}";
32739
+ }
32740
+ function isPadded(el) {
32741
+ return /^-?0\d/.test(el);
32742
+ }
32743
+ function lte(i2, y) {
32744
+ return i2 <= y;
32745
+ }
32746
+ function gte(i2, y) {
32747
+ return i2 >= y;
32748
+ }
32749
+ function combine(acc, pre, values, max, maxLength, dropEmpties) {
32750
+ var out = [];
32751
+ var length = 0;
32752
+ for (var a2 = 0;a2 < acc.length; a2++) {
32753
+ for (var v2 = 0;v2 < values.length; v2++) {
32754
+ if (out.length >= max)
32755
+ return out;
32756
+ var expansion = acc[a2] + pre + values[v2];
32757
+ if (dropEmpties && !expansion)
32758
+ continue;
32759
+ if (length + expansion.length > maxLength)
32760
+ return out;
32761
+ out.push(expansion);
32762
+ length += expansion.length;
32763
+ }
32764
+ }
32765
+ return out;
32766
+ }
32767
+ function expandSequence(body, isAlphaSequence, max, maxLength) {
32768
+ var n2 = body.split(/\.\./);
32769
+ var N2 = [];
32770
+ if (n2[0] === undefined || n2[1] === undefined) {
32771
+ return N2;
32772
+ }
32773
+ var x = numeric(n2[0]);
32774
+ var y = numeric(n2[1]);
32775
+ var width = Math.max(n2[0].length, n2[1].length);
32776
+ var incr = n2.length === 3 && n2[2] !== undefined ? Math.max(Math.abs(numeric(n2[2])), 1) : 1;
32777
+ var test = lte;
32778
+ var reverse = y < x;
32779
+ if (reverse) {
32780
+ incr *= -1;
32781
+ test = gte;
32782
+ }
32783
+ var pad = n2.some(isPadded);
32784
+ var length = 0;
32785
+ for (var i2 = x;test(i2, y) && N2.length < max; i2 += incr) {
32786
+ var c3;
32787
+ if (isAlphaSequence) {
32788
+ c3 = String.fromCharCode(i2);
32789
+ if (c3 === "\\") {
32790
+ c3 = "";
32791
+ }
32792
+ } else {
32793
+ c3 = String(i2);
32794
+ if (pad) {
32795
+ var need = width - c3.length;
32796
+ if (need > 0) {
32797
+ var z3 = new Array(need + 1).join("0");
32798
+ if (i2 < 0) {
32799
+ c3 = "-" + z3 + c3.slice(1);
32800
+ } else {
32801
+ c3 = z3 + c3;
32802
+ }
32803
+ }
32804
+ }
32805
+ }
32806
+ if (length + c3.length > maxLength)
32807
+ break;
32808
+ N2.push(c3);
32809
+ length += c3.length;
32810
+ }
32811
+ return N2;
32812
+ }
32813
+ function expand(str, max, maxLength, isTop) {
32814
+ var acc = [""];
32815
+ var dropEmpties = false;
32816
+ var firstGroup = true;
32817
+ for (;; ) {
32818
+ const m4 = balanced("{", "}", str);
32819
+ if (!m4) {
32820
+ return combine(acc, str, [""], max, maxLength, dropEmpties);
32821
+ }
32822
+ const pre = m4.pre;
32823
+ if (/\$$/.test(pre)) {
32824
+ acc = combine(acc, pre + "{" + m4.body + "}", [""], max, maxLength, dropEmpties && !m4.post.length);
32825
+ firstGroup = false;
32826
+ if (!m4.post.length)
32827
+ break;
32828
+ str = m4.post;
32829
+ continue;
32830
+ }
32831
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m4.body);
32832
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m4.body);
32833
+ var isSequence = isNumericSequence || isAlphaSequence;
32834
+ var isOptions = m4.body.indexOf(",") >= 0;
32835
+ if (!isSequence && !isOptions) {
32836
+ if (m4.post.match(/,(?!,).*\}/)) {
32837
+ str = m4.pre + "{" + m4.body + escClose + m4.post;
32838
+ isTop = true;
32839
+ continue;
32840
+ }
32841
+ return combine(acc, pre + "{" + m4.body + "}" + m4.post, [""], max, maxLength, dropEmpties);
32842
+ }
32843
+ if (firstGroup) {
32844
+ dropEmpties = isTop && !isSequence;
32845
+ firstGroup = false;
32846
+ }
32847
+ var values;
32848
+ if (isSequence) {
32849
+ values = expandSequence(m4.body, isAlphaSequence, max, maxLength);
32850
+ } else {
32851
+ var n2 = parseCommaParts(m4.body);
32852
+ if (n2.length === 1 && n2[0] !== undefined) {
32853
+ n2 = expand(n2[0], max, maxLength, false).map(embrace);
32854
+ if (n2.length === 1) {
32855
+ acc = combine(acc, pre + n2[0], [""], max, maxLength, dropEmpties && !m4.post.length);
32856
+ if (!m4.post.length)
32857
+ break;
32858
+ str = m4.post;
32859
+ continue;
32860
+ }
32861
+ }
32862
+ var dropsEmpties = dropEmpties && !m4.post.length && !pre;
32863
+ for (var d = 0;dropsEmpties && d < acc.length; d++) {
32864
+ if (acc[d]) {
32865
+ dropsEmpties = false;
32866
+ }
32867
+ }
32868
+ values = [];
32869
+ var valuesLength = 0;
32870
+ outer:
32871
+ for (var j2 = 0;j2 < n2.length; j2++) {
32872
+ var expanded = expand(n2[j2], max, maxLength, false);
32873
+ for (var k2 = 0;k2 < expanded.length; k2++) {
32874
+ var v2 = expanded[k2];
32875
+ if (dropsEmpties && !v2)
32876
+ continue;
32877
+ if (values.length >= max || valuesLength + v2.length > maxLength) {
32878
+ break outer;
32879
+ }
32880
+ values.push(v2);
32881
+ valuesLength += v2.length;
32882
+ }
32883
+ }
32884
+ }
32885
+ acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m4.post.length);
32886
+ if (!m4.post.length)
32887
+ break;
32888
+ str = m4.post;
32889
+ }
32890
+ return acc;
32891
+ }
32892
+ });
32893
+
32894
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js
32630
32895
  var require_assert_valid_pattern = __commonJS((exports) => {
32631
32896
  Object.defineProperty(exports, "__esModule", { value: true });
32632
32897
  exports.assertValidPattern = undefined;
@@ -32642,7 +32907,7 @@ var require_assert_valid_pattern = __commonJS((exports) => {
32642
32907
  exports.assertValidPattern = assertValidPattern;
32643
32908
  });
32644
32909
 
32645
- // node_modules/minimatch/dist/commonjs/brace-expressions.js
32910
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js
32646
32911
  var require_brace_expressions = __commonJS((exports) => {
32647
32912
  Object.defineProperty(exports, "__esModule", { value: true });
32648
32913
  exports.parseClass = undefined;
@@ -32757,7 +33022,7 @@ var require_brace_expressions = __commonJS((exports) => {
32757
33022
  exports.parseClass = parseClass;
32758
33023
  });
32759
33024
 
32760
- // node_modules/minimatch/dist/commonjs/unescape.js
33025
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js
32761
33026
  var require_unescape = __commonJS((exports) => {
32762
33027
  Object.defineProperty(exports, "__esModule", { value: true });
32763
33028
  exports.unescape = undefined;
@@ -32767,7 +33032,7 @@ var require_unescape = __commonJS((exports) => {
32767
33032
  exports.unescape = unescape;
32768
33033
  });
32769
33034
 
32770
- // node_modules/minimatch/dist/commonjs/ast.js
33035
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js
32771
33036
  var require_ast = __commonJS((exports) => {
32772
33037
  var _a3;
32773
33038
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -33304,7 +33569,7 @@ var require_ast = __commonJS((exports) => {
33304
33569
  _a3 = AST;
33305
33570
  });
33306
33571
 
33307
- // node_modules/minimatch/dist/commonjs/escape.js
33572
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js
33308
33573
  var require_escape = __commonJS((exports) => {
33309
33574
  Object.defineProperty(exports, "__esModule", { value: true });
33310
33575
  exports.escape = undefined;
@@ -33314,14 +33579,14 @@ var require_escape = __commonJS((exports) => {
33314
33579
  exports.escape = escape;
33315
33580
  });
33316
33581
 
33317
- // node_modules/minimatch/dist/commonjs/index.js
33582
+ // node_modules/archiver-utils/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js
33318
33583
  var require_commonjs = __commonJS((exports) => {
33319
33584
  var __importDefault = exports && exports.__importDefault || function(mod) {
33320
33585
  return mod && mod.__esModule ? mod : { default: mod };
33321
33586
  };
33322
33587
  Object.defineProperty(exports, "__esModule", { value: true });
33323
33588
  exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = undefined;
33324
- var brace_expansion_1 = __importDefault(require_brace_expansion());
33589
+ var brace_expansion_1 = __importDefault(require_brace_expansion2());
33325
33590
  var assert_valid_pattern_js_1 = require_assert_valid_pattern();
33326
33591
  var ast_js_1 = require_ast();
33327
33592
  var escape_js_1 = require_escape();
@@ -34094,7 +34359,7 @@ var require_commonjs = __commonJS((exports) => {
34094
34359
  exports.minimatch.unescape = unescape_js_1.unescape;
34095
34360
  });
34096
34361
 
34097
- // node_modules/lru-cache/dist/commonjs/index.js
34362
+ // node_modules/archiver-utils/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js
34098
34363
  var require_commonjs2 = __commonJS((exports) => {
34099
34364
  Object.defineProperty(exports, "__esModule", { value: true });
34100
34365
  exports.LRUCache = undefined;
@@ -35883,7 +36148,7 @@ var require_commonjs3 = __commonJS((exports) => {
35883
36148
  exports.Minipass = Minipass;
35884
36149
  });
35885
36150
 
35886
- // node_modules/path-scurry/dist/commonjs/index.js
36151
+ // node_modules/archiver-utils/node_modules/glob/node_modules/path-scurry/dist/commonjs/index.js
35887
36152
  var require_commonjs4 = __commonJS((exports) => {
35888
36153
  var __createBinding = exports && exports.__createBinding || (Object.create ? function(o2, m4, k2, k22) {
35889
36154
  if (k22 === undefined)
@@ -37233,7 +37498,7 @@ var require_commonjs4 = __commonJS((exports) => {
37233
37498
  exports.PathScurry = process.platform === "win32" ? PathScurryWin32 : process.platform === "darwin" ? PathScurryDarwin : PathScurryPosix;
37234
37499
  });
37235
37500
 
37236
- // node_modules/glob/dist/commonjs/pattern.js
37501
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/pattern.js
37237
37502
  var require_pattern = __commonJS((exports) => {
37238
37503
  Object.defineProperty(exports, "__esModule", { value: true });
37239
37504
  exports.Pattern = undefined;
@@ -37357,7 +37622,7 @@ var require_pattern = __commonJS((exports) => {
37357
37622
  exports.Pattern = Pattern;
37358
37623
  });
37359
37624
 
37360
- // node_modules/glob/dist/commonjs/ignore.js
37625
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/ignore.js
37361
37626
  var require_ignore = __commonJS((exports) => {
37362
37627
  Object.defineProperty(exports, "__esModule", { value: true });
37363
37628
  exports.Ignore = undefined;
@@ -37452,7 +37717,7 @@ var require_ignore = __commonJS((exports) => {
37452
37717
  exports.Ignore = Ignore;
37453
37718
  });
37454
37719
 
37455
- // node_modules/glob/dist/commonjs/processor.js
37720
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/processor.js
37456
37721
  var require_processor = __commonJS((exports) => {
37457
37722
  Object.defineProperty(exports, "__esModule", { value: true });
37458
37723
  exports.Processor = exports.SubWalks = exports.MatchRecord = exports.HasWalkedCache = undefined;
@@ -37680,7 +37945,7 @@ var require_processor = __commonJS((exports) => {
37680
37945
  exports.Processor = Processor;
37681
37946
  });
37682
37947
 
37683
- // node_modules/glob/dist/commonjs/walker.js
37948
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/walker.js
37684
37949
  var require_walker = __commonJS((exports) => {
37685
37950
  Object.defineProperty(exports, "__esModule", { value: true });
37686
37951
  exports.GlobStream = exports.GlobWalker = exports.GlobUtil = undefined;
@@ -38017,7 +38282,7 @@ var require_walker = __commonJS((exports) => {
38017
38282
  exports.GlobStream = GlobStream;
38018
38283
  });
38019
38284
 
38020
- // node_modules/glob/dist/commonjs/glob.js
38285
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/glob.js
38021
38286
  var require_glob = __commonJS((exports) => {
38022
38287
  Object.defineProperty(exports, "__esModule", { value: true });
38023
38288
  exports.Glob = undefined;
@@ -38201,7 +38466,7 @@ var require_glob = __commonJS((exports) => {
38201
38466
  exports.Glob = Glob;
38202
38467
  });
38203
38468
 
38204
- // node_modules/glob/dist/commonjs/has-magic.js
38469
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/has-magic.js
38205
38470
  var require_has_magic = __commonJS((exports) => {
38206
38471
  Object.defineProperty(exports, "__esModule", { value: true });
38207
38472
  exports.hasMagic = undefined;
@@ -38219,7 +38484,7 @@ var require_has_magic = __commonJS((exports) => {
38219
38484
  exports.hasMagic = hasMagic;
38220
38485
  });
38221
38486
 
38222
- // node_modules/glob/dist/commonjs/index.js
38487
+ // node_modules/archiver-utils/node_modules/glob/dist/commonjs/index.js
38223
38488
  var require_commonjs5 = __commonJS((exports) => {
38224
38489
  Object.defineProperty(exports, "__esModule", { value: true });
38225
38490
  exports.glob = exports.sync = exports.iterate = exports.iterateSync = exports.stream = exports.streamSync = exports.Ignore = exports.hasMagic = exports.Glob = exports.unescape = exports.escape = undefined;
@@ -60371,7 +60636,7 @@ var init_build3 = __esm(() => {
60371
60636
  ];
60372
60637
  });
60373
60638
 
60374
- // node_modules/ws/lib/stream.js
60639
+ // node_modules/webdriver/node_modules/ws/lib/stream.js
60375
60640
  var require_stream5 = __commonJS((exports, module) => {
60376
60641
  var { Duplex } = __require("stream");
60377
60642
  function emitClose(stream) {
@@ -60473,7 +60738,7 @@ var require_stream5 = __commonJS((exports, module) => {
60473
60738
  module.exports = createWebSocketStream;
60474
60739
  });
60475
60740
 
60476
- // node_modules/ws/lib/constants.js
60741
+ // node_modules/webdriver/node_modules/ws/lib/constants.js
60477
60742
  var require_constants6 = __commonJS((exports, module) => {
60478
60743
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
60479
60744
  var hasBlob = typeof Blob !== "undefined";
@@ -60492,7 +60757,7 @@ var require_constants6 = __commonJS((exports, module) => {
60492
60757
  };
60493
60758
  });
60494
60759
 
60495
- // node_modules/ws/lib/buffer-util.js
60760
+ // node_modules/webdriver/node_modules/ws/lib/buffer-util.js
60496
60761
  var require_buffer_util = __commonJS((exports, module) => {
60497
60762
  var { EMPTY_BUFFER } = require_constants6();
60498
60763
  var FastBuffer = Buffer[Symbol.species];
@@ -60570,7 +60835,7 @@ var require_buffer_util = __commonJS((exports, module) => {
60570
60835
  }
60571
60836
  });
60572
60837
 
60573
- // node_modules/ws/lib/limiter.js
60838
+ // node_modules/webdriver/node_modules/ws/lib/limiter.js
60574
60839
  var require_limiter = __commonJS((exports, module) => {
60575
60840
  var kDone = Symbol("kDone");
60576
60841
  var kRun = Symbol("kRun");
@@ -60602,7 +60867,7 @@ var require_limiter = __commonJS((exports, module) => {
60602
60867
  module.exports = Limiter;
60603
60868
  });
60604
60869
 
60605
- // node_modules/ws/lib/permessage-deflate.js
60870
+ // node_modules/webdriver/node_modules/ws/lib/permessage-deflate.js
60606
60871
  var require_permessage_deflate = __commonJS((exports, module) => {
60607
60872
  var zlib = __require("zlib");
60608
60873
  var bufferUtil = require_buffer_util();
@@ -60862,7 +61127,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
60862
61127
  }
60863
61128
  });
60864
61129
 
60865
- // node_modules/ws/lib/validation.js
61130
+ // node_modules/webdriver/node_modules/ws/lib/validation.js
60866
61131
  var require_validation = __commonJS((exports, module) => {
60867
61132
  var { isUtf8 } = __require("buffer");
60868
61133
  var { hasBlob } = require_constants6();
@@ -61049,7 +61314,7 @@ var require_validation = __commonJS((exports, module) => {
61049
61314
  }
61050
61315
  });
61051
61316
 
61052
- // node_modules/ws/lib/receiver.js
61317
+ // node_modules/webdriver/node_modules/ws/lib/receiver.js
61053
61318
  var require_receiver = __commonJS((exports, module) => {
61054
61319
  var { Writable } = __require("stream");
61055
61320
  var PerMessageDeflate = require_permessage_deflate();
@@ -61430,7 +61695,7 @@ var require_receiver = __commonJS((exports, module) => {
61430
61695
  module.exports = Receiver;
61431
61696
  });
61432
61697
 
61433
- // node_modules/ws/lib/sender.js
61698
+ // node_modules/webdriver/node_modules/ws/lib/sender.js
61434
61699
  var require_sender = __commonJS((exports, module) => {
61435
61700
  var { Duplex } = __require("stream");
61436
61701
  var { randomFillSync } = __require("crypto");
@@ -61784,7 +62049,7 @@ var require_sender = __commonJS((exports, module) => {
61784
62049
  }
61785
62050
  });
61786
62051
 
61787
- // node_modules/ws/lib/event-target.js
62052
+ // node_modules/webdriver/node_modules/ws/lib/event-target.js
61788
62053
  var require_event_target = __commonJS((exports, module) => {
61789
62054
  var { kForOnEventAttribute, kListener } = require_constants6();
61790
62055
  var kCode = Symbol("kCode");
@@ -61935,7 +62200,7 @@ var require_event_target = __commonJS((exports, module) => {
61935
62200
  }
61936
62201
  });
61937
62202
 
61938
- // node_modules/ws/lib/extension.js
62203
+ // node_modules/webdriver/node_modules/ws/lib/extension.js
61939
62204
  var require_extension = __commonJS((exports, module) => {
61940
62205
  var { tokenChars } = require_validation();
61941
62206
  function push(dest, name, elem) {
@@ -62100,7 +62365,7 @@ var require_extension = __commonJS((exports, module) => {
62100
62365
  module.exports = { format, parse: parse6 };
62101
62366
  });
62102
62367
 
62103
- // node_modules/ws/lib/websocket.js
62368
+ // node_modules/webdriver/node_modules/ws/lib/websocket.js
62104
62369
  var require_websocket = __commonJS((exports, module) => {
62105
62370
  var EventEmitter = __require("events");
62106
62371
  var https = __require("https");
@@ -62859,7 +63124,7 @@ var require_websocket = __commonJS((exports, module) => {
62859
63124
  }
62860
63125
  });
62861
63126
 
62862
- // node_modules/ws/lib/subprotocol.js
63127
+ // node_modules/webdriver/node_modules/ws/lib/subprotocol.js
62863
63128
  var require_subprotocol = __commonJS((exports, module) => {
62864
63129
  var { tokenChars } = require_validation();
62865
63130
  function parse6(header) {
@@ -62904,7 +63169,7 @@ var require_subprotocol = __commonJS((exports, module) => {
62904
63169
  module.exports = { parse: parse6 };
62905
63170
  });
62906
63171
 
62907
- // node_modules/ws/lib/websocket-server.js
63172
+ // node_modules/webdriver/node_modules/ws/lib/websocket-server.js
62908
63173
  var require_websocket_server = __commonJS((exports, module) => {
62909
63174
  var EventEmitter = __require("events");
62910
63175
  var http = __require("http");
@@ -63203,7 +63468,7 @@ var require_websocket_server = __commonJS((exports, module) => {
63203
63468
  }
63204
63469
  });
63205
63470
 
63206
- // node_modules/ws/wrapper.mjs
63471
+ // node_modules/webdriver/node_modules/ws/wrapper.mjs
63207
63472
  var import_stream, import_receiver, import_sender, import_websocket, import_websocket_server, wrapper_default;
63208
63473
  var init_wrapper = __esm(() => {
63209
63474
  import_stream = __toESM(require_stream5(), 1);
@@ -87563,21 +87828,19 @@ var require_supports_color = __commonJS((exports, module) => {
87563
87828
  var tty2 = __require("tty");
87564
87829
  var hasFlag2 = require_has_flag();
87565
87830
  var { env: env3 } = process;
87566
- var flagForceColor2;
87831
+ var forceColor;
87567
87832
  if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false") || hasFlag2("color=never")) {
87568
- flagForceColor2 = 0;
87833
+ forceColor = 0;
87569
87834
  } else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) {
87570
- flagForceColor2 = 1;
87835
+ forceColor = 1;
87571
87836
  }
87572
- function envForceColor2() {
87573
- if ("FORCE_COLOR" in env3) {
87574
- if (env3.FORCE_COLOR === "true") {
87575
- return 1;
87576
- }
87577
- if (env3.FORCE_COLOR === "false") {
87578
- return 0;
87579
- }
87580
- return env3.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env3.FORCE_COLOR, 10), 3);
87837
+ if ("FORCE_COLOR" in env3) {
87838
+ if (env3.FORCE_COLOR === "true") {
87839
+ forceColor = 1;
87840
+ } else if (env3.FORCE_COLOR === "false") {
87841
+ forceColor = 0;
87842
+ } else {
87843
+ forceColor = env3.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env3.FORCE_COLOR, 10), 3);
87581
87844
  }
87582
87845
  }
87583
87846
  function translateLevel2(level) {
@@ -87591,22 +87854,15 @@ var require_supports_color = __commonJS((exports, module) => {
87591
87854
  has16m: level >= 3
87592
87855
  };
87593
87856
  }
87594
- function supportsColor2(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
87595
- const noFlagForceColor = envForceColor2();
87596
- if (noFlagForceColor !== undefined) {
87597
- flagForceColor2 = noFlagForceColor;
87598
- }
87599
- const forceColor = sniffFlags ? flagForceColor2 : noFlagForceColor;
87857
+ function supportsColor2(haveStream, streamIsTTY) {
87600
87858
  if (forceColor === 0) {
87601
87859
  return 0;
87602
87860
  }
87603
- if (sniffFlags) {
87604
- if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) {
87605
- return 3;
87606
- }
87607
- if (hasFlag2("color=256")) {
87608
- return 2;
87609
- }
87861
+ if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) {
87862
+ return 3;
87863
+ }
87864
+ if (hasFlag2("color=256")) {
87865
+ return 2;
87610
87866
  }
87611
87867
  if (haveStream && !streamIsTTY && forceColor === undefined) {
87612
87868
  return 0;
@@ -87623,7 +87879,7 @@ var require_supports_color = __commonJS((exports, module) => {
87623
87879
  return 1;
87624
87880
  }
87625
87881
  if ("CI" in env3) {
87626
- if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE", "DRONE"].some((sign) => (sign in env3)) || env3.CI_NAME === "codeship") {
87882
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => (sign in env3)) || env3.CI_NAME === "codeship") {
87627
87883
  return 1;
87628
87884
  }
87629
87885
  return min;
@@ -87635,7 +87891,7 @@ var require_supports_color = __commonJS((exports, module) => {
87635
87891
  return 3;
87636
87892
  }
87637
87893
  if ("TERM_PROGRAM" in env3) {
87638
- const version2 = Number.parseInt((env3.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
87894
+ const version2 = parseInt((env3.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
87639
87895
  switch (env3.TERM_PROGRAM) {
87640
87896
  case "iTerm.app":
87641
87897
  return version2 >= 3 ? 3 : 2;
@@ -87654,17 +87910,14 @@ var require_supports_color = __commonJS((exports, module) => {
87654
87910
  }
87655
87911
  return min;
87656
87912
  }
87657
- function getSupportLevel(stream, options = {}) {
87658
- const level = supportsColor2(stream, {
87659
- streamIsTTY: stream && stream.isTTY,
87660
- ...options
87661
- });
87913
+ function getSupportLevel(stream) {
87914
+ const level = supportsColor2(stream, stream && stream.isTTY);
87662
87915
  return translateLevel2(level);
87663
87916
  }
87664
87917
  module.exports = {
87665
87918
  supportsColor: getSupportLevel,
87666
- stdout: getSupportLevel({ isTTY: tty2.isatty(1) }),
87667
- stderr: getSupportLevel({ isTTY: tty2.isatty(2) })
87919
+ stdout: translateLevel2(supportsColor2(true, tty2.isatty(1))),
87920
+ stderr: translateLevel2(supportsColor2(true, tty2.isatty(2)))
87668
87921
  };
87669
87922
  });
87670
87923
 
@@ -172638,7 +172891,7 @@ var screenNotReadyDescription = "`screen-not-ready` if the runner has a screen t
172638
172891
  var runnerScreenNeedsARunSchema = exports_external.object({
172639
172892
  outcome: exports_external.literal("screen-needs-a-run")
172640
172893
  });
172641
- var screenNeedsARunDescription = "`screen-needs-a-run` if the runner has not run anything yet, so its virtual desktop has never started. Waiting will not change this and retrying is pointless — call `runner.runFlow` on the runner, then ask for the screen again. Evaluating a snippet does not start the desktop.";
172894
+ var screenNeedsARunDescription = "`screen-needs-a-run` if the runner's virtual desktop has never started. Waiting will not change this and retrying is pointless — call `runner.runFlow` with a flow that opens a browser, then ask for the screen again. On a runner image with a browser that has never run anything, any `runner.performAction` also starts the browser itself. Evaluating a snippet does not start the desktop.";
172642
172895
  var runnerHasNoScreenSchema = exports_external.object({
172643
172896
  outcome: exports_external.literal("runner-has-no-screen")
172644
172897
  });
@@ -172670,7 +172923,7 @@ var makePerformActionOnRunnerContract = () => {
172670
172923
  runnerUnreachableSchema
172671
172924
  ]);
172672
172925
  return {
172673
- description: `Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as \`runner.takeScreenshot\`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus \`screenshot\` (use \`runner.takeScreenshot\`) and \`wait\` (delay on the caller's side). \`performed\` if the action took effect. \`action-failed\`, with a reason, if it reached the runner and did not take effect. ${screenNeedsARunDescription} ${screenNotReadyDescription} A \`navigate\` does not go through the screen, so a screen that is not ready does not stop it — but it still needs the runner to have run something, and until then it answers \`action-failed\` rather than \`screen-needs-a-run\`. ${runnerHasNoScreenDescription} ${unreachableDescription}`,
172926
+ description: `Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as \`runner.takeScreenshot\`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus \`screenshot\` (use \`runner.takeScreenshot\`) and \`wait\` (delay on the caller's side). \`performed\` if the action took effect. \`action-failed\`, with a reason, if it reached the runner and did not take effect. On a runner image with a browser, the first action on a runner that has never run anything starts its browser and waits for it, so it can take up to a minute to answer — no \`runner.runFlow\` is needed before acting; if the browser is still starting when the wait runs out, the answer is \`screen-not-ready\` and retrying converges. \`screen-needs-a-run\` if the browser could not be started that way — usually a runner whose runs all finished without starting its desktop; call \`runner.runFlow\` with a flow that opens a browser. ${screenNotReadyDescription} A \`navigate\` does not go through the screen, so a screen that is not ready does not stop it. ${runnerHasNoScreenDescription} ${unreachableDescription}`,
172674
172927
  input,
172675
172928
  kind: "write",
172676
172929
  name: "runner.performAction",
@@ -172979,6 +173232,7 @@ var issueStatusSchema = exports_external.enum([
172979
173232
  var publicIssueTypeSchema = exports_external.enum(["bug", "coverageRequest", "maintenance"]);
172980
173233
  var openIssueStatuses = ["pending", "inProgress", "paused"];
172981
173234
  var makeIssueResourceSchema = (ids) => resource({
173235
+ coveredFlowIds: exports_external.array(ids.flow).describe("The flows a coverage request covers. Always empty on bug and maintenance reports, whose flows are listed under reproductions."),
172982
173236
  createdAt: exports_external.coerce.date().describe("When the issue was created."),
172983
173237
  description: exports_external.string().describe("The issue description in Markdown."),
172984
173238
  issueId: ids.issue,
@@ -173030,6 +173284,24 @@ var makeGetIssueContract = (ids) => {
173030
173284
  };
173031
173285
  };
173032
173286
 
173287
+ // node_modules/@qawolf/api-contracts/dist/v1/issue/addFlows.js
173288
+ var makeAddFlowsToIssueContract = (ids) => {
173289
+ const input = exports_external.object({
173290
+ flowIds: exports_external.array(ids.flow).min(1).max(300).refine((flowIds) => new Set(flowIds).size === flowIds.length, "flowIds must be unique").describe("The flows the coverage request covers."),
173291
+ issueId: ids.issue
173292
+ });
173293
+ const output = exports_external.object({
173294
+ issue: makeIssueResourceSchema(ids)
173295
+ });
173296
+ return {
173297
+ description: "Add flows to a coverage request owned by the caller's team. " + "Flows already covered stay covered. " + "Bug and maintenance reports link to flows through the runs that reproduce them, so their flows cannot be set directly.",
173298
+ input,
173299
+ kind: "write",
173300
+ name: "issue.addFlows",
173301
+ output
173302
+ };
173303
+ };
173304
+
173033
173305
  // node_modules/@qawolf/api-contracts/dist/v1/issue/create.js
173034
173306
  var makeCreateIssueContract = (ids) => {
173035
173307
  const commonFields = {
@@ -173382,6 +173654,7 @@ var makeContractsV1 = (ids) => {
173382
173654
  update: makeUpdateFlowContract(resolvedIds)
173383
173655
  },
173384
173656
  issue: {
173657
+ addFlows: makeAddFlowsToIssueContract(resolvedIds),
173385
173658
  create: makeCreateIssueContract(resolvedIds),
173386
173659
  find: makeFindIssuesContract(resolvedIds),
173387
173660
  get: makeGetIssueContract(resolvedIds),
@@ -175923,7 +176196,7 @@ function startUpdateCheck(deps) {
175923
176196
  // package.json
175924
176197
  var package_default = {
175925
176198
  name: "@qawolf/cli",
175926
- version: "1.11.2",
176199
+ version: "1.12.0",
175927
176200
  description: "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
175928
176201
  keywords: [
175929
176202
  "automation",
@@ -175983,12 +176256,11 @@ var package_default = {
175983
176256
  "@clack/prompts": "1.5.1",
175984
176257
  "@napi-rs/keyring": "1.3.0",
175985
176258
  "@oxc-node/core": "0.1.0",
175986
- "@qawolf/api-contracts": "0.25.0",
176259
+ "@qawolf/api-contracts": "0.26.0",
175987
176260
  "@qawolf/emails": "1.1.1",
175988
176261
  "@qawolf/flow-targets": "1.0.0",
175989
176262
  "@qawolf/flows": "0.1.4",
175990
176263
  "@qawolf/testkit": "1.1.1",
175991
- appium: "2.11.3",
175992
176264
  commander: "14.0.3",
175993
176265
  "env-paths": "4.0.0",
175994
176266
  picomatch: "4.0.4",
@@ -176006,7 +176278,8 @@ var package_default = {
176006
176278
  "@tsconfig/strictest": "2.0.8",
176007
176279
  "@types/bun": "1.3.14",
176008
176280
  "@types/picomatch": "4.0.3",
176009
- "appium-uiautomator2-driver": "4.2.9",
176281
+ appium: "3.6.0",
176282
+ "appium-uiautomator2-driver": "8.4.0",
176010
176283
  "expect-webdriverio": "5.6.5",
176011
176284
  knip: "6.16.1",
176012
176285
  oxfmt: "0.54.0",
@@ -176732,8 +177005,8 @@ var flowsVersion = "0.1.4";
176732
177005
  var playwrightVersion = "1.62.0";
176733
177006
  var emailsVersion = "1.1.1";
176734
177007
  var testkitVersion = "1.1.1";
176735
- var appiumVersion = "2.11.3";
176736
- var appiumUiautomator2DriverVersion = "4.2.9";
177008
+ var appiumVersion = "3.6.0";
177009
+ var appiumUiautomator2DriverVersion = "8.4.0";
176737
177010
  var expectWebdriverioVersion = "5.6.5";
176738
177011
 
176739
177012
  // src/domains/doctor/checks/playwright.ts
@@ -177725,6 +177998,109 @@ async function glob(globInput, options) {
177725
177998
  // src/core/flowMeta.ts
177726
177999
  import { getWebBrowserInfo, parseExecutionTarget as parseExecutionTarget2 } from "@qawolf/flow-targets";
177727
178000
  import { basename as basename2 } from "node:path";
178001
+
178002
+ // src/core/stringLiteral.ts
178003
+ var lineTerminator = /[\n\r\u2028\u2029]/;
178004
+ function readStringLiteral(source, start) {
178005
+ const quote = source.charAt(start);
178006
+ if (quote !== '"' && quote !== "'" && quote !== "`")
178007
+ return;
178008
+ let value = "";
178009
+ let i2 = start + 1;
178010
+ while (i2 < source.length) {
178011
+ const char = source.charAt(i2);
178012
+ if (char === "\\") {
178013
+ const escaped = source.charAt(i2 + 1);
178014
+ if (lineTerminator.test(escaped)) {
178015
+ const crlf = escaped === "\r" && source.charAt(i2 + 2) === `
178016
+ `;
178017
+ i2 += crlf ? 3 : 2;
178018
+ continue;
178019
+ }
178020
+ value += escaped;
178021
+ i2 += 2;
178022
+ continue;
178023
+ }
178024
+ if (char === quote)
178025
+ return { value, end: i2 };
178026
+ if (quote === "`") {
178027
+ if (char === "$" && source.charAt(i2 + 1) === "{")
178028
+ return;
178029
+ } else if (char === `
178030
+ ` || char === "\r") {
178031
+ return;
178032
+ }
178033
+ value += char;
178034
+ i2++;
178035
+ }
178036
+ return;
178037
+ }
178038
+
178039
+ // src/core/flowCall.ts
178040
+ var flowCallRe = /(?<![#$\p{ID_Continue}])flow\s*\(\s*/gu;
178041
+ var argSeparatorRe = /\s*,\s*/y;
178042
+ var keyValueRe = /\s*:\s*/y;
178043
+ var wordChar = /\w/;
178044
+ function readTargetFromObject(source, start) {
178045
+ let depth = 0;
178046
+ let i2 = start;
178047
+ while (i2 < source.length) {
178048
+ const char = source.charAt(i2);
178049
+ if (char === "{") {
178050
+ depth++;
178051
+ i2++;
178052
+ continue;
178053
+ }
178054
+ if (char === "}") {
178055
+ depth--;
178056
+ if (depth === 0)
178057
+ return;
178058
+ i2++;
178059
+ continue;
178060
+ }
178061
+ const literal2 = readStringLiteral(source, i2);
178062
+ if (literal2) {
178063
+ i2 = literal2.end + 1;
178064
+ continue;
178065
+ }
178066
+ if (depth === 1 && source.startsWith("target", i2) && !wordChar.test(source.charAt(i2 - 1))) {
178067
+ keyValueRe.lastIndex = i2 + "target".length;
178068
+ if (keyValueRe.test(source)) {
178069
+ return readStringLiteral(source, keyValueRe.lastIndex)?.value;
178070
+ }
178071
+ }
178072
+ i2++;
178073
+ }
178074
+ return;
178075
+ }
178076
+ function readTarget(source, afterName) {
178077
+ argSeparatorRe.lastIndex = afterName;
178078
+ if (!argSeparatorRe.test(source))
178079
+ return;
178080
+ const argStart = argSeparatorRe.lastIndex;
178081
+ if (source.charAt(argStart) === "{") {
178082
+ return readTargetFromObject(source, argStart);
178083
+ }
178084
+ return readStringLiteral(source, argStart)?.value || undefined;
178085
+ }
178086
+ function parseFlowCall(source) {
178087
+ let name;
178088
+ let target;
178089
+ for (const match of source.matchAll(flowCallRe)) {
178090
+ const nameLiteral = readStringLiteral(source, match.index + match[0].length);
178091
+ if (!nameLiteral)
178092
+ continue;
178093
+ if (name === undefined && nameLiteral.value !== "")
178094
+ name = nameLiteral.value;
178095
+ if (target === undefined)
178096
+ target = readTarget(source, nameLiteral.end + 1);
178097
+ if (name !== undefined && target !== undefined)
178098
+ break;
178099
+ }
178100
+ return { name, target };
178101
+ }
178102
+
178103
+ // src/core/flowMeta.ts
177728
178104
  function flowBasename(file2) {
177729
178105
  return basename2(file2).replace(/\.flow\.(ts|js)$/, "");
177730
178106
  }
@@ -177768,13 +178144,8 @@ function targetToBrowser(target) {
177768
178144
  function isAndroidTarget(target) {
177769
178145
  return classifyTarget(target)?.kind === "android";
177770
178146
  }
177771
- var nameRe = /\bflow\s*\(\s*["']([^"'\n]+)["']/;
177772
- var flowTargetRe = /\bflow\s*\(\s*["'][^"'\n]*["']\s*,\s*(?:["']([^"'\n]+)["']|\{[^{}]*\btarget\s*:\s*["']([^"'\n]+)["'])/;
177773
178147
  function extractFlowMeta(source) {
177774
- const name = nameRe.exec(source)?.[1];
177775
- const flowTargetMatch = flowTargetRe.exec(source);
177776
- const target = flowTargetMatch?.[1] ?? flowTargetMatch?.[2];
177777
- return { name, target };
178148
+ return parseFlowCall(source);
177778
178149
  }
177779
178150
 
177780
178151
  // src/domains/flows/expand.ts
@@ -187412,4 +187783,4 @@ createProgram({ signals }).parseAsync().catch(() => {
187412
187783
  process.exitCode = 1;
187413
187784
  }).finally(() => flushAndExit(typeof process.exitCode === "number" ? process.exitCode : 0));
187414
187785
 
187415
- //# debugId=0187A36B3165B15F64756E2164756E21
187786
+ //# debugId=50767334C9C30D3E64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qawolf/cli",
3
- "version": "1.11.2",
3
+ "version": "1.12.0",
4
4
  "description": "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
5
5
  "keywords": [
6
6
  "automation",
@@ -60,12 +60,11 @@
60
60
  "@clack/prompts": "1.5.1",
61
61
  "@napi-rs/keyring": "1.3.0",
62
62
  "@oxc-node/core": "0.1.0",
63
- "@qawolf/api-contracts": "0.25.0",
63
+ "@qawolf/api-contracts": "0.26.0",
64
64
  "@qawolf/emails": "1.1.1",
65
65
  "@qawolf/flow-targets": "1.0.0",
66
66
  "@qawolf/flows": "0.1.4",
67
67
  "@qawolf/testkit": "1.1.1",
68
- "appium": "2.11.3",
69
68
  "commander": "14.0.3",
70
69
  "env-paths": "4.0.0",
71
70
  "picomatch": "4.0.4",
@@ -83,7 +82,8 @@
83
82
  "@tsconfig/strictest": "2.0.8",
84
83
  "@types/bun": "1.3.14",
85
84
  "@types/picomatch": "4.0.3",
86
- "appium-uiautomator2-driver": "4.2.9",
85
+ "appium": "3.6.0",
86
+ "appium-uiautomator2-driver": "8.4.0",
87
87
  "expect-webdriverio": "5.6.5",
88
88
  "knip": "6.16.1",
89
89
  "oxfmt": "0.54.0",
@@ -133,6 +133,7 @@ current branch.
133
133
  | `qawolf install android` | local | Install Android system images, AVDs, and the Appium driver used by the project's Android flows |
134
134
  | `qawolf install browsers` | local | Install Playwright browsers used by the project's web flows |
135
135
  | `qawolf install clear` | local | Remove the managed runtime cache (all installed runtime versions) |
136
+ | `qawolf issue addFlows` | write | Add flows to a coverage request owned by the caller's team. Flows already covered stay covered. Bug and maintenance reports link to flows through the runs that reproduce them, so their flows cannot be set directly. |
136
137
  | `qawolf issue create` | write | Create a bug or coverage request issue for the caller's team. Maintenance issues cannot be created through the public API. |
137
138
  | `qawolf issue find` | read | List the team's bug reports, maintenance reports, or coverage requests, newest first. |
138
139
  | `qawolf issue get` | read | Get an issue by id. |