craftdriver 0.0.1

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.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +5 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/actions.d.ts +50 -0
  8. package/dist/lib/actions.d.ts.map +1 -0
  9. package/dist/lib/actions.js +71 -0
  10. package/dist/lib/actions.js.map +1 -0
  11. package/dist/lib/browser.d.ts +94 -0
  12. package/dist/lib/browser.d.ts.map +1 -0
  13. package/dist/lib/browser.js +133 -0
  14. package/dist/lib/browser.js.map +1 -0
  15. package/dist/lib/builder.d.ts +13 -0
  16. package/dist/lib/builder.d.ts.map +1 -0
  17. package/dist/lib/builder.js +31 -0
  18. package/dist/lib/builder.js.map +1 -0
  19. package/dist/lib/by.d.ts +45 -0
  20. package/dist/lib/by.d.ts.map +1 -0
  21. package/dist/lib/by.js +132 -0
  22. package/dist/lib/by.js.map +1 -0
  23. package/dist/lib/chrome.d.ts +6 -0
  24. package/dist/lib/chrome.d.ts.map +1 -0
  25. package/dist/lib/chrome.js +27 -0
  26. package/dist/lib/chrome.js.map +1 -0
  27. package/dist/lib/driver.d.ts +35 -0
  28. package/dist/lib/driver.d.ts.map +1 -0
  29. package/dist/lib/driver.js +347 -0
  30. package/dist/lib/driver.js.map +1 -0
  31. package/dist/lib/elementHandle.d.ts +17 -0
  32. package/dist/lib/elementHandle.d.ts.map +1 -0
  33. package/dist/lib/elementHandle.js +46 -0
  34. package/dist/lib/elementHandle.js.map +1 -0
  35. package/dist/lib/expect.d.ts +17 -0
  36. package/dist/lib/expect.d.ts.map +1 -0
  37. package/dist/lib/expect.js +56 -0
  38. package/dist/lib/expect.js.map +1 -0
  39. package/dist/lib/http.d.ts +7 -0
  40. package/dist/lib/http.d.ts.map +1 -0
  41. package/dist/lib/http.js +47 -0
  42. package/dist/lib/http.js.map +1 -0
  43. package/dist/lib/keyboard.d.ts +14 -0
  44. package/dist/lib/keyboard.d.ts.map +1 -0
  45. package/dist/lib/keyboard.js +31 -0
  46. package/dist/lib/keyboard.js.map +1 -0
  47. package/dist/lib/keys.d.ts +43 -0
  48. package/dist/lib/keys.d.ts.map +1 -0
  49. package/dist/lib/keys.js +146 -0
  50. package/dist/lib/keys.js.map +1 -0
  51. package/dist/lib/locator.d.ts +20 -0
  52. package/dist/lib/locator.d.ts.map +1 -0
  53. package/dist/lib/locator.js +57 -0
  54. package/dist/lib/locator.js.map +1 -0
  55. package/dist/lib/mouse.d.ts +34 -0
  56. package/dist/lib/mouse.d.ts.map +1 -0
  57. package/dist/lib/mouse.js +108 -0
  58. package/dist/lib/mouse.js.map +1 -0
  59. package/dist/lib/service.d.ts +26 -0
  60. package/dist/lib/service.d.ts.map +1 -0
  61. package/dist/lib/service.js +86 -0
  62. package/dist/lib/service.js.map +1 -0
  63. package/dist/lib/types.d.ts +23 -0
  64. package/dist/lib/types.d.ts.map +1 -0
  65. package/dist/lib/types.js +2 -0
  66. package/dist/lib/types.js.map +1 -0
  67. package/dist/lib/wait.d.ts +25 -0
  68. package/dist/lib/wait.d.ts.map +1 -0
  69. package/dist/lib/wait.js +92 -0
  70. package/dist/lib/wait.js.map +1 -0
  71. package/dist/lib/webelement.d.ts +20 -0
  72. package/dist/lib/webelement.d.ts.map +1 -0
  73. package/dist/lib/webelement.js +64 -0
  74. package/dist/lib/webelement.js.map +1 -0
  75. package/package.json +69 -0
package/dist/lib/by.js ADDED
@@ -0,0 +1,132 @@
1
+ export class By {
2
+ using;
3
+ value;
4
+ constructor(using, value) {
5
+ this.using = using;
6
+ this.value = value;
7
+ }
8
+ // Base CSS/XPath helpers
9
+ static css(selector) {
10
+ return new By('css selector', selector);
11
+ }
12
+ static xpath(xpath) {
13
+ return new By('xpath', xpath);
14
+ }
15
+ // Simple attribute-based helpers
16
+ static id(id) {
17
+ return new By('css selector', `#${cssEscape(id)}`);
18
+ }
19
+ static nameAttr(name) {
20
+ return new By('css selector', `[name="${cssEscape(name)}"]`);
21
+ }
22
+ static className(cls) {
23
+ return new By('css selector', `.${cssEscape(cls)}`);
24
+ }
25
+ static tag(tag) {
26
+ return new By('css selector', tag);
27
+ }
28
+ static attr(name, value) {
29
+ return new By('css selector', `[${name}="${cssEscape(value)}"]`);
30
+ }
31
+ static dataAttr(name, value) {
32
+ return new By('css selector', `[data-${name}="${cssEscape(value)}"]`);
33
+ }
34
+ static aria(name, value) {
35
+ return new By('css selector', `[aria-${name}="${cssEscape(value)}"]`);
36
+ }
37
+ static testId(value) {
38
+ return new By('css selector', `[data-testid="${cssEscape(value)}"]`);
39
+ }
40
+ // Text-based locators (XPath)
41
+ static text(text, opts) {
42
+ const cs = opts?.caseSensitive !== false; // default true
43
+ const trim = opts?.trim !== false; // default true
44
+ const nodeExpr = trim ? 'normalize-space(.)' : 'string(.)';
45
+ const valueExpr = trim ? normalizeSpaceLiteral(text) : xpStringLiteral(text);
46
+ const left = cs ? nodeExpr : toLower(nodeExpr);
47
+ const right = cs ? valueExpr : toLower(valueExpr);
48
+ const xpath = `//*[${left} = ${right}]`;
49
+ return By.xpath(xpath);
50
+ }
51
+ static partialText(substring, opts) {
52
+ const cs = opts?.caseSensitive !== false; // default true
53
+ const trim = opts?.trim !== false; // default true
54
+ const nodeExpr = trim ? 'normalize-space(.)' : 'string(.)';
55
+ const valueExpr = trim ? normalizeSpaceLiteral(substring) : xpStringLiteral(substring);
56
+ const left = cs ? nodeExpr : toLower(nodeExpr);
57
+ const right = cs ? valueExpr : toLower(valueExpr);
58
+ // Prefer the innermost element containing the substring to avoid matching large containers
59
+ const xpath = `//*[contains(${left}, ${right}) and not(.//*[contains(${left}, ${right})])]`;
60
+ return By.xpath(xpath);
61
+ }
62
+ // Accessibility-inspired helpers (approximate)
63
+ static role(role, opts) {
64
+ const conditions = [`@role=${xpStringLiteral(role)}`];
65
+ const visibleGuard = opts?.includeHidden
66
+ ? ''
67
+ : ' and not(@hidden) and not(@aria-hidden="true")';
68
+ if (opts?.name) {
69
+ const nameLit = normalizeSpaceLiteral(opts.name);
70
+ const eq = opts.exact !== false; // default exact
71
+ const cand = 'normalize-space(@aria-label)';
72
+ const textNode = 'normalize-space(.)';
73
+ const pred = eq
74
+ ? `(${cand} = ${nameLit} or ${textNode} = ${nameLit})`
75
+ : `(contains(${cand}, ${nameLit}) or contains(${textNode}, ${nameLit}))`;
76
+ conditions.push(pred);
77
+ }
78
+ const xpath = `//*[( ${conditions.join(' and ')} )${visibleGuard}]`;
79
+ return By.xpath(xpath);
80
+ }
81
+ static labelText(text, opts) {
82
+ const eq = opts?.exact !== false; // default exact
83
+ const lit = normalizeSpaceLiteral(text);
84
+ const labelMatch = eq ? `normalize-space(.) = ${lit}` : `contains(normalize-space(.), ${lit})`;
85
+ // Inputs referenced by @for, or wrapped controls
86
+ const byFor = `//*[@id=//label[${labelMatch}]/@for]`;
87
+ const wrapped = `//label[${labelMatch}]//*[self::input or self::textarea or self::select]`;
88
+ return By.xpath(`(${byFor} | ${wrapped})`);
89
+ }
90
+ static placeholder(text, opts) {
91
+ const eq = opts?.exact !== false;
92
+ const lit = xpStringLiteral(text);
93
+ const pred = eq ? `@placeholder = ${lit}` : `contains(@placeholder, ${lit})`;
94
+ return By.xpath(`//*[(self::input or self::textarea) and ${pred}]`);
95
+ }
96
+ static altText(text, opts) {
97
+ const eq = opts?.exact !== false;
98
+ const lit = xpStringLiteral(text);
99
+ const pred = eq ? `@alt = ${lit}` : `contains(@alt, ${lit})`;
100
+ return By.xpath(`//*[(self::img or self::area or (self::input and @type='image')) and ${pred}]`);
101
+ }
102
+ static title(text, opts) {
103
+ const eq = opts?.exact !== false;
104
+ const lit = xpStringLiteral(text);
105
+ const pred = eq ? `@title = ${lit}` : `contains(@title, ${lit})`;
106
+ return By.xpath(`//*[@title and ${pred}]`);
107
+ }
108
+ }
109
+ // Helpers
110
+ function cssEscape(s) {
111
+ // Minimal escape for quotes and backslashes in our usage
112
+ return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
113
+ }
114
+ function xpStringLiteral(s) {
115
+ if (s.indexOf("'") === -1)
116
+ return `'${s}'`;
117
+ // If it doesn't contain double quotes, we can safely use double quotes
118
+ if (s.indexOf('"') === -1)
119
+ return `"${s}"`;
120
+ // Otherwise, use concat with embedded single-quote literals
121
+ const parts = s.split("'").map((p) => `'${p}'`);
122
+ // join with , "'", to inject a single quote between parts
123
+ return `concat(${parts.join(', "\'", ')})`;
124
+ }
125
+ function normalizeSpaceLiteral(s) {
126
+ // normalize-space('text')
127
+ return `normalize-space(${xpStringLiteral(s)})`;
128
+ }
129
+ function toLower(expr) {
130
+ return `translate(${expr}, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')`;
131
+ }
132
+ //# sourceMappingURL=by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"by.js","sourceRoot":"","sources":["../../src/lib/by.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,EAAE;IAEJ;IACA;IAFT,YACS,KAAa,EACb,KAAa;QADb,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAQ;IAClB,CAAC;IAEL,yBAAyB;IACzB,MAAM,CAAC,GAAG,CAAC,QAAgB;QACzB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,EAAU;QAClB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,UAAU,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,GAAW;QAC1B,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa;QACrC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,KAAa;QACzC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,SAAS,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa;QACrC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,SAAS,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,iBAAiB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,IAAkD;QAC1E,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,eAAe;QACzD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,eAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,IAAI,MAAM,KAAK,GAAG,CAAC;QACxC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,SAAiB,EAAE,IAAkD;QACtF,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,eAAe;QACzD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,eAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,2FAA2F;QAC3F,MAAM,KAAK,GAAG,gBAAgB,IAAI,KAAK,KAAK,2BAA2B,IAAI,KAAK,KAAK,MAAM,CAAC;QAC5F,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CACT,IAAY,EACZ,IAAkE;QAElE,MAAM,UAAU,GAAa,CAAC,SAAS,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,EAAE,aAAa;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,gDAAgD,CAAC;QACrD,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,gBAAgB;YACjD,MAAM,IAAI,GAAG,8BAA8B,CAAC;YAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAC;YACtC,MAAM,IAAI,GAAG,EAAE;gBACb,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,OAAO,QAAQ,MAAM,OAAO,GAAG;gBACtD,CAAC,CAAC,aAAa,IAAI,KAAK,OAAO,iBAAiB,QAAQ,KAAK,OAAO,IAAI,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,GAAG,CAAC;QACpE,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAY,EAAE,IAA0B;QACvD,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,gBAAgB;QAClD,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC,gCAAgC,GAAG,GAAG,CAAC;QAC/F,iDAAiD;QACjD,MAAM,KAAK,GAAG,mBAAmB,UAAU,SAAS,CAAC;QACrD,MAAM,OAAO,GAAG,WAAW,UAAU,qDAAqD,CAAC;QAC3F,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,OAAO,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAY,EAAE,IAA0B;QACzD,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,0BAA0B,GAAG,GAAG,CAAC;QAC7E,OAAO,EAAE,CAAC,KAAK,CAAC,2CAA2C,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAY,EAAE,IAA0B;QACrD,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC7D,OAAO,EAAE,CAAC,KAAK,CACb,wEAAwE,IAAI,GAAG,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,IAA0B;QACnD,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACjE,OAAO,EAAE,CAAC,KAAK,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,UAAU;AACV,SAAS,SAAS,CAAC,CAAS;IAC1B,yDAAyD;IACzD,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC3C,uEAAuE;IACvE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC3C,4DAA4D;IAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,0DAA0D;IAC1D,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAS;IACtC,0BAA0B;IAC1B,OAAO,mBAAmB,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,aAAa,IAAI,+DAA+D,CAAC;AAC1F,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { DriverService, type DriverServiceOptions } from './service.js';
2
+ export type ChromeServiceOptions = Omit<DriverServiceOptions, 'command'>;
3
+ export declare class ChromeService extends DriverService {
4
+ constructor(options?: ChromeServiceOptions);
5
+ }
6
+ //# sourceMappingURL=chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIxE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAEzE,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,GAAE,oBAAyB;CAqB/C"}
@@ -0,0 +1,27 @@
1
+ import { DriverService } from './service.js';
2
+ import fs from 'fs';
3
+ export class ChromeService extends DriverService {
4
+ constructor(options = {}) {
5
+ const resolved = (() => {
6
+ const envPath = process.env.CHROMEDRIVER_PATH;
7
+ if (envPath && envPath.length > 0) {
8
+ try {
9
+ if (fs.existsSync(envPath)) {
10
+ return envPath; // Points to file
11
+ }
12
+ }
13
+ catch {
14
+ // fall through to default
15
+ }
16
+ }
17
+ return 'chromedriver';
18
+ })();
19
+ super({
20
+ command: resolved,
21
+ pathBase: '',
22
+ readinessPath: '/status',
23
+ ...options,
24
+ });
25
+ }
26
+ }
27
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,YAAY,UAAgC,EAAE;QAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;YACrB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,OAAO,OAAO,CAAC,CAAC,iBAAiB;oBACnC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,0BAA0B;gBAC5B,CAAC;YACH,CAAC;YACD,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC,EAAE,CAAC;QACL,KAAK,CAAC;YACJ,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,SAAS;YACxB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import type { Capabilities, WebDriverEndpoint } from './types.js';
2
+ import { By } from './by.js';
3
+ import { WebElement } from './webelement.js';
4
+ import { type Condition, type WaitOptions } from './wait.js';
5
+ export declare class Driver {
6
+ private endpoint;
7
+ private sessionId;
8
+ constructor(endpoint: WebDriverEndpoint, sessionId: string);
9
+ static create(endpoint: WebDriverEndpoint, caps: Capabilities): Promise<Driver>;
10
+ navigateTo(url: string): Promise<void>;
11
+ quit(): Promise<void>;
12
+ getCurrentUrl(): Promise<string>;
13
+ getTitle(): Promise<string>;
14
+ findElement(locator: By): Promise<WebElement>;
15
+ findElements(locator: By): Promise<WebElement[]>;
16
+ executeScript<T = unknown>(script: string, args?: unknown[]): Promise<T>;
17
+ wait<T>(condition: Condition<T>, options?: WaitOptions & {
18
+ message?: string;
19
+ }): Promise<T>;
20
+ wait<T>(condition: Condition<T>, timeoutMs?: number, intervalMs?: number, message?: string): Promise<T>;
21
+ keyPressCode(code: string, repeat?: number): Promise<void>;
22
+ keyDownCode(code: string): Promise<void>;
23
+ keyUpCode(code: string): Promise<void>;
24
+ typeText(text: string): Promise<void>;
25
+ pointerMoveTo(originElement?: WebElement, x?: number, y?: number, duration?: number): Promise<void>;
26
+ mouseDown(button?: number): Promise<void>;
27
+ mouseUp(button?: number): Promise<void>;
28
+ pointerClick(originElement?: WebElement, x?: number, y?: number, button?: number, count?: number, moveDuration?: number): Promise<void>;
29
+ wheelScroll(deltaX: number, deltaY: number, x?: number, y?: number, duration?: number): Promise<void>;
30
+ performTouchSwipe(from: [number, number], to: [number, number], durationMs?: number): Promise<void>;
31
+ performTouchPinch(center: [number, number], scale?: number, distance?: number, durationMs?: number): Promise<void>;
32
+ screenshotBase64(): Promise<string>;
33
+ __sendActions(actions: any[]): Promise<void>;
34
+ }
35
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,347 @@
1
+ import { HttpClient } from './http.js';
2
+ import { WebElement, W3C_ELEMENT_KEY, LEGACY_ELEMENT_KEY } from './webelement.js';
3
+ import { WebDriverWait } from './wait.js';
4
+ export class Driver {
5
+ endpoint;
6
+ sessionId;
7
+ constructor(endpoint, sessionId) {
8
+ this.endpoint = endpoint;
9
+ this.sessionId = sessionId;
10
+ }
11
+ static async create(endpoint, caps) {
12
+ const client = new HttpClient(endpoint);
13
+ const res = await client.send({
14
+ method: 'POST',
15
+ path: '/session',
16
+ body: { capabilities: { alwaysMatch: caps } },
17
+ });
18
+ const value = res?.value ?? res;
19
+ const sessionId = value?.sessionId || res?.sessionId;
20
+ if (!sessionId) {
21
+ const v = value;
22
+ const err = v?.error;
23
+ const msg = v?.message || v?.data || JSON.stringify(res);
24
+ throw new Error(`Failed to create session${err ? ` [${err}]` : ''}: ${msg}`);
25
+ }
26
+ return new Driver(endpoint, sessionId);
27
+ }
28
+ async navigateTo(url) {
29
+ const client = new HttpClient(this.endpoint);
30
+ await client.send({ method: 'POST', path: `/session/${this.sessionId}/url`, body: { url } });
31
+ }
32
+ async quit() {
33
+ const client = new HttpClient(this.endpoint);
34
+ await client.send({ method: 'DELETE', path: `/session/${this.sessionId}` });
35
+ }
36
+ async getCurrentUrl() {
37
+ const client = new HttpClient(this.endpoint);
38
+ const res = await client.send({
39
+ method: 'GET',
40
+ path: `/session/${this.sessionId}/url`,
41
+ });
42
+ const v = res?.value ?? res;
43
+ return String(v ?? '');
44
+ }
45
+ async getTitle() {
46
+ const client = new HttpClient(this.endpoint);
47
+ const res = await client.send({
48
+ method: 'GET',
49
+ path: `/session/${this.sessionId}/title`,
50
+ });
51
+ const v = res?.value ?? res;
52
+ return String(v ?? '');
53
+ }
54
+ async findElement(locator) {
55
+ const client = new HttpClient(this.endpoint);
56
+ const res = await client.send({
57
+ method: 'POST',
58
+ path: `/session/${this.sessionId}/element`,
59
+ body: { using: locator.using, value: locator.value },
60
+ });
61
+ const value = res?.value ??
62
+ res;
63
+ const elId = value?.[W3C_ELEMENT_KEY] || value?.[LEGACY_ELEMENT_KEY];
64
+ if (!elId)
65
+ throw new Error(`findElement failed: ${JSON.stringify(res)}`);
66
+ return new WebElement(this.endpoint, this.sessionId, elId);
67
+ }
68
+ async findElements(locator) {
69
+ const client = new HttpClient(this.endpoint);
70
+ const res = await client.send({
71
+ method: 'POST',
72
+ path: `/session/${this.sessionId}/elements`,
73
+ body: { using: locator.using, value: locator.value },
74
+ });
75
+ const arr = (res?.value ??
76
+ res);
77
+ return (arr || [])
78
+ .map((v) => {
79
+ const elId = v?.[W3C_ELEMENT_KEY] || v?.[LEGACY_ELEMENT_KEY];
80
+ if (!elId)
81
+ return undefined;
82
+ return new WebElement(this.endpoint, this.sessionId, elId);
83
+ })
84
+ .filter(Boolean);
85
+ }
86
+ async executeScript(script, args = []) {
87
+ const client = new HttpClient(this.endpoint);
88
+ const res = await client.send({
89
+ method: 'POST',
90
+ path: `/session/${this.sessionId}/execute/sync`,
91
+ body: { script, args },
92
+ });
93
+ return (res?.value ?? res);
94
+ }
95
+ wait(condition, a, b, c) {
96
+ // Overload: prefer options object, but accept legacy positional args
97
+ if (typeof a === 'object') {
98
+ const { timeout, interval, timeoutMsg, message } = a;
99
+ return new WebDriverWait(this, { timeout, interval, timeoutMsg }).until(condition, message);
100
+ }
101
+ return new WebDriverWait(this, a, b).until(condition, c);
102
+ }
103
+ // New helpers for simplified API
104
+ // Note: string-based keyPress removed; use Key via keyboard controller.
105
+ async keyPressCode(code, repeat = 1) {
106
+ const client = new HttpClient(this.endpoint);
107
+ for (let i = 0; i < repeat; i++) {
108
+ await client.send({
109
+ method: 'POST',
110
+ path: `/session/${this.sessionId}/actions`,
111
+ body: {
112
+ actions: [
113
+ {
114
+ type: 'key',
115
+ id: 'keyboard',
116
+ actions: [
117
+ { type: 'keyDown', value: code },
118
+ { type: 'keyUp', value: code },
119
+ ],
120
+ },
121
+ ],
122
+ },
123
+ });
124
+ }
125
+ }
126
+ async keyDownCode(code) {
127
+ const client = new HttpClient(this.endpoint);
128
+ await client.send({
129
+ method: 'POST',
130
+ path: `/session/${this.sessionId}/actions`,
131
+ body: {
132
+ actions: [{ type: 'key', id: 'keyboard', actions: [{ type: 'keyDown', value: code }] }],
133
+ },
134
+ });
135
+ }
136
+ async keyUpCode(code) {
137
+ const client = new HttpClient(this.endpoint);
138
+ await client.send({
139
+ method: 'POST',
140
+ path: `/session/${this.sessionId}/actions`,
141
+ body: {
142
+ actions: [{ type: 'key', id: 'keyboard', actions: [{ type: 'keyUp', value: code }] }],
143
+ },
144
+ });
145
+ }
146
+ async typeText(text) {
147
+ const client = new HttpClient(this.endpoint);
148
+ const actions = Array.from(text).flatMap((ch) => [
149
+ { type: 'keyDown', value: ch },
150
+ { type: 'keyUp', value: ch },
151
+ ]);
152
+ await client.send({
153
+ method: 'POST',
154
+ path: `/session/${this.sessionId}/actions`,
155
+ body: { actions: [{ type: 'key', id: 'keyboard', actions }] },
156
+ });
157
+ }
158
+ // Pointer/mouse helpers
159
+ async pointerMoveTo(originElement, x, y, duration = 0) {
160
+ const client = new HttpClient(this.endpoint);
161
+ const pointerMove = { type: 'pointerMove', duration };
162
+ if (originElement) {
163
+ pointerMove.origin = originElement.toJSON();
164
+ // Always include x/y; default to 0,0 which for element origin is the element's center
165
+ pointerMove.x = typeof x === 'number' ? x : 0;
166
+ pointerMove.y = typeof y === 'number' ? y : 0;
167
+ }
168
+ else {
169
+ pointerMove.origin = 'viewport';
170
+ pointerMove.x = x ?? 0;
171
+ pointerMove.y = y ?? 0;
172
+ }
173
+ await client.send({
174
+ method: 'POST',
175
+ path: `/session/${this.sessionId}/actions`,
176
+ body: {
177
+ actions: [
178
+ {
179
+ type: 'pointer',
180
+ id: 'mouse',
181
+ parameters: { pointerType: 'mouse' },
182
+ actions: [pointerMove],
183
+ },
184
+ ],
185
+ },
186
+ });
187
+ }
188
+ async mouseDown(button = 0) {
189
+ const client = new HttpClient(this.endpoint);
190
+ await client.send({
191
+ method: 'POST',
192
+ path: `/session/${this.sessionId}/actions`,
193
+ body: {
194
+ actions: [
195
+ {
196
+ type: 'pointer',
197
+ id: 'mouse',
198
+ parameters: { pointerType: 'mouse' },
199
+ actions: [{ type: 'pointerDown', button }],
200
+ },
201
+ ],
202
+ },
203
+ });
204
+ }
205
+ async mouseUp(button = 0) {
206
+ const client = new HttpClient(this.endpoint);
207
+ await client.send({
208
+ method: 'POST',
209
+ path: `/session/${this.sessionId}/actions`,
210
+ body: {
211
+ actions: [
212
+ {
213
+ type: 'pointer',
214
+ id: 'mouse',
215
+ parameters: { pointerType: 'mouse' },
216
+ actions: [{ type: 'pointerUp', button }],
217
+ },
218
+ ],
219
+ },
220
+ });
221
+ }
222
+ async pointerClick(originElement, x, y, button = 0, count = 1, moveDuration = 50) {
223
+ const client = new HttpClient(this.endpoint);
224
+ const pointerMove = { type: 'pointerMove', duration: moveDuration };
225
+ if (originElement) {
226
+ pointerMove.origin = originElement.toJSON();
227
+ pointerMove.x = typeof x === 'number' ? x : 0;
228
+ pointerMove.y = typeof y === 'number' ? y : 0;
229
+ }
230
+ else {
231
+ pointerMove.origin = 'viewport';
232
+ pointerMove.x = x ?? 0;
233
+ pointerMove.y = y ?? 0;
234
+ }
235
+ const singleClick = [
236
+ pointerMove,
237
+ { type: 'pointerDown', button },
238
+ { type: 'pointerUp', button },
239
+ ];
240
+ const actions = Array.from({ length: Math.max(1, count) }, () => singleClick).flat();
241
+ await client.send({
242
+ method: 'POST',
243
+ path: `/session/${this.sessionId}/actions`,
244
+ body: {
245
+ actions: [{ type: 'pointer', id: 'mouse', parameters: { pointerType: 'mouse' }, actions }],
246
+ },
247
+ });
248
+ }
249
+ async wheelScroll(deltaX, deltaY, x = 0, y = 0, duration = 0) {
250
+ const client = new HttpClient(this.endpoint);
251
+ await client.send({
252
+ method: 'POST',
253
+ path: `/session/${this.sessionId}/actions`,
254
+ body: {
255
+ actions: [
256
+ {
257
+ type: 'wheel',
258
+ id: 'wheel',
259
+ actions: [{ type: 'scroll', x, y, deltaX, deltaY, duration }],
260
+ },
261
+ ],
262
+ },
263
+ });
264
+ }
265
+ async performTouchSwipe(from, to, durationMs = 300) {
266
+ const client = new HttpClient(this.endpoint);
267
+ const [x1, y1] = from;
268
+ const [x2, y2] = to;
269
+ await client.send({
270
+ method: 'POST',
271
+ path: `/session/${this.sessionId}/actions`,
272
+ body: {
273
+ actions: [
274
+ {
275
+ type: 'pointer',
276
+ id: 'finger1',
277
+ parameters: { pointerType: 'touch' },
278
+ actions: [
279
+ { type: 'pointerMove', x: x1, y: y1, duration: 0 },
280
+ { type: 'pointerDown', button: 0 },
281
+ { type: 'pointerMove', x: x2, y: y2, duration: durationMs },
282
+ { type: 'pointerUp', button: 0 },
283
+ ],
284
+ },
285
+ ],
286
+ },
287
+ });
288
+ }
289
+ async performTouchPinch(center, scale = 0.5, distance = 100, durationMs = 250) {
290
+ const client = new HttpClient(this.endpoint);
291
+ const [cx, cy] = center;
292
+ const dx = distance / 2;
293
+ const dy = 0;
294
+ const start1 = [cx - dx, cy - dy];
295
+ const start2 = [cx + dx, cy + dy];
296
+ const end1 = [cx - dx * scale, cy - dy * scale];
297
+ const end2 = [cx + dx * scale, cy + dy * scale];
298
+ await client.send({
299
+ method: 'POST',
300
+ path: `/session/${this.sessionId}/actions`,
301
+ body: {
302
+ actions: [
303
+ {
304
+ type: 'pointer',
305
+ id: 'finger1',
306
+ parameters: { pointerType: 'touch' },
307
+ actions: [
308
+ { type: 'pointerMove', x: start1[0], y: start1[1], duration: 0 },
309
+ { type: 'pointerDown', button: 0 },
310
+ { type: 'pointerMove', x: end1[0], y: end1[1], duration: durationMs },
311
+ { type: 'pointerUp', button: 0 },
312
+ ],
313
+ },
314
+ {
315
+ type: 'pointer',
316
+ id: 'finger2',
317
+ parameters: { pointerType: 'touch' },
318
+ actions: [
319
+ { type: 'pointerMove', x: start2[0], y: start2[1], duration: 0 },
320
+ { type: 'pointerDown', button: 0 },
321
+ { type: 'pointerMove', x: end2[0], y: end2[1], duration: durationMs },
322
+ { type: 'pointerUp', button: 0 },
323
+ ],
324
+ },
325
+ ],
326
+ },
327
+ });
328
+ }
329
+ async screenshotBase64() {
330
+ const client = new HttpClient(this.endpoint);
331
+ const res = await client.send({
332
+ method: 'GET',
333
+ path: `/session/${this.sessionId}/screenshot`,
334
+ });
335
+ return String(res?.value ?? res ?? '');
336
+ }
337
+ // Internal helper for ActionsBuilder to send combined payloads
338
+ async __sendActions(actions) {
339
+ const client = new HttpClient(this.endpoint);
340
+ await client.send({
341
+ method: 'POST',
342
+ path: `/session/${this.sessionId}/actions`,
343
+ body: { actions },
344
+ });
345
+ }
346
+ }
347
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { By } from './by.js';
2
+ import type { Driver } from './driver.js';
3
+ import { type KeyValue } from './keys.js';
4
+ export declare class ElementHandle {
5
+ private driver;
6
+ private by;
7
+ constructor(driver: Driver, by: By);
8
+ click(): Promise<void>;
9
+ type(text: string, options?: {
10
+ timeout?: number;
11
+ }): Promise<void>;
12
+ press(key: KeyValue): Promise<void>;
13
+ screenshot(path?: string): Promise<Buffer>;
14
+ text(): Promise<string>;
15
+ expect(): import("./expect.js").ExpectApi;
16
+ }
17
+ //# sourceMappingURL=elementHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementHandle.d.ts","sourceRoot":"","sources":["../../src/lib/elementHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEvD,qBAAa,aAAa;IAEtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,EAAE;gBADF,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE;IAGV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE,KAAK,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,MAAM;CAGP"}