craftdriver 0.0.1 → 0.0.3

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) YEAR FULL NAME
3
+ Copyright (c) 2026 Dimitar Topuzov
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -19,8 +19,8 @@ import { Browser } from 'craftdriver';
19
19
 
20
20
  const browser = await Browser.launch({ browserName: 'chrome' });
21
21
  await browser.navigateTo('http://127.0.0.1:8080/login.html');
22
- await browser.type('#username', 'testuser');
23
- await browser.type('#password', 'secret');
22
+ await browser.fill('#username', 'testuser');
23
+ await browser.fill('#password', 'secret');
24
24
  await browser.click('#submit');
25
25
  await browser.expect('#result').toHaveText('Welcome testuser');
26
26
  await browser.quit();
@@ -23,10 +23,18 @@ export declare class Browser {
23
23
  wait<T>(condition: Condition<T>, timeoutMs?: number, intervalMs?: number, message?: string): Promise<T>;
24
24
  quit(): Promise<void>;
25
25
  click(selector: string | By): Promise<void>;
26
- type(selector: string | By, text: string, opts?: {
27
- mask?: boolean;
26
+ fill(selector: string | By, text: string, opts?: {
28
27
  timeout?: number;
29
28
  }): Promise<void>;
29
+ clear(selector: string | By, opts?: {
30
+ timeout?: number;
31
+ }): Promise<void>;
32
+ getValue(selector: string | By, opts?: {
33
+ timeout?: number;
34
+ }): Promise<string>;
35
+ getAttribute(selector: string | By, name: string, opts?: {
36
+ timeout?: number;
37
+ }): Promise<string | null>;
30
38
  gesture: {
31
39
  swipe: ({ from, to, durationMs, }: {
32
40
  from: [number, number];
@@ -44,6 +52,21 @@ export declare class Browser {
44
52
  saveScreenshot(path: string, selectorOrBy?: string | By): Promise<Buffer>;
45
53
  expect(selector: string | By): import("./expect.js").ExpectApi;
46
54
  find(selector: string | By): ElementHandle;
55
+ getByRole(role: string, opts?: {
56
+ name?: string;
57
+ exact?: boolean;
58
+ includeHidden?: boolean;
59
+ }): ElementHandle;
60
+ getByText(text: string, opts?: {
61
+ exact?: boolean;
62
+ }): ElementHandle;
63
+ getByLabel(text: string, opts?: {
64
+ exact?: boolean;
65
+ }): ElementHandle;
66
+ getByPlaceholder(text: string, opts?: {
67
+ exact?: boolean;
68
+ }): ElementHandle;
69
+ getByTestId(id: string): ElementHandle;
47
70
  keyboard: KeyboardController;
48
71
  mouse: MouseController;
49
72
  static Key: {
@@ -88,6 +111,18 @@ export declare class Browser {
88
111
  waitFor(check: ((driver: Driver) => Promise<any> | any) | (() => Promise<any> | any), options?: WaitOptions & {
89
112
  message?: string;
90
113
  }): Promise<any>;
114
+ waitForVisible(selector: string | By, opts?: {
115
+ timeout?: number;
116
+ }): Promise<void>;
117
+ waitForHidden(selector: string | By, opts?: {
118
+ timeout?: number;
119
+ }): Promise<void>;
120
+ waitForAttached(selector: string | By, opts?: {
121
+ timeout?: number;
122
+ }): Promise<void>;
123
+ waitForDetached(selector: string | By, opts?: {
124
+ timeout?: number;
125
+ }): Promise<void>;
91
126
  actions(): ActionsBuilder;
92
127
  pause(ms: number): Promise<void>;
93
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"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"}
@@ -62,14 +62,37 @@ export class Browser {
62
62
  const el = await this.driver.wait(until.elementIsVisible(by), { timeout: 5000 });
63
63
  await el.click();
64
64
  }
65
- async type(selector, text, opts) {
65
+ async fill(selector, text, opts) {
66
66
  const by = typeof selector === 'string' ? By.css(selector) : selector;
67
67
  const el = await this.driver.wait(until.elementIsVisible(by), {
68
68
  timeout: opts?.timeout ?? 5000,
69
69
  });
70
70
  await el.click();
71
+ await el.clear();
71
72
  await el.sendKeys(text);
72
73
  }
74
+ async clear(selector, opts) {
75
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
76
+ const el = await this.driver.wait(until.elementIsVisible(by), {
77
+ timeout: opts?.timeout ?? 5000,
78
+ });
79
+ await el.clear();
80
+ }
81
+ async getValue(selector, opts) {
82
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
83
+ const el = await this.driver.wait(until.elementLocated(by), {
84
+ timeout: opts?.timeout ?? 5000,
85
+ });
86
+ const val = await el.getProperty('value');
87
+ return String(val ?? '');
88
+ }
89
+ async getAttribute(selector, name, opts) {
90
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
91
+ const el = await this.driver.wait(until.elementLocated(by), {
92
+ timeout: opts?.timeout ?? 5000,
93
+ });
94
+ return await el.getAttribute(name);
95
+ }
73
96
  gesture = {
74
97
  swipe: async ({ from, to, durationMs = 300, }) => {
75
98
  await this.driver.performTouchSwipe(from, to, durationMs);
@@ -103,6 +126,25 @@ export class Browser {
103
126
  const by = typeof selector === 'string' ? By.css(selector) : selector;
104
127
  return new ElementHandle(this.driver, by);
105
128
  }
129
+ // Playwright-style getBy* helpers - return ElementHandle for fluent chaining
130
+ getByRole(role, opts) {
131
+ return new ElementHandle(this.driver, By.role(role, opts));
132
+ }
133
+ getByText(text, opts) {
134
+ if (opts?.exact === false) {
135
+ return new ElementHandle(this.driver, By.partialText(text));
136
+ }
137
+ return new ElementHandle(this.driver, By.text(text));
138
+ }
139
+ getByLabel(text, opts) {
140
+ return new ElementHandle(this.driver, By.labelText(text, opts));
141
+ }
142
+ getByPlaceholder(text, opts) {
143
+ return new ElementHandle(this.driver, By.placeholder(text, opts));
144
+ }
145
+ getByTestId(id) {
146
+ return new ElementHandle(this.driver, By.testId(id));
147
+ }
106
148
  // Keyboard controller and enum for nicer usage: browser.keyboard.press(Key.Enter)
107
149
  keyboard;
108
150
  // Mouse controller: browser.mouse.click(...), move, down, up, wheel, dragAndDrop
@@ -122,6 +164,22 @@ export class Browser {
122
164
  };
123
165
  return this.wait(cond, options);
124
166
  }
167
+ async waitForVisible(selector, opts) {
168
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
169
+ await this.driver.wait(until.elementIsVisible(by), { timeout: opts?.timeout ?? 5000 });
170
+ }
171
+ async waitForHidden(selector, opts) {
172
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
173
+ await this.driver.wait(until.elementIsNotVisible(by), { timeout: opts?.timeout ?? 5000 });
174
+ }
175
+ async waitForAttached(selector, opts) {
176
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
177
+ await this.driver.wait(until.elementExists(by), { timeout: opts?.timeout ?? 5000 });
178
+ }
179
+ async waitForDetached(selector, opts) {
180
+ const by = typeof selector === 'string' ? By.css(selector) : selector;
181
+ await this.driver.wait(until.elementNotExists(by), { timeout: opts?.timeout ?? 5000 });
182
+ }
125
183
  actions() {
126
184
  return new ActionsBuilder(this.driver);
127
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAA0B,KAAK,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,MAAM,OAAO,OAAO;IACU;IAA5B,YAA4B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAyB,EAAE;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;QAC7C,IAAI,aAA4B,CAAC;QACjC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,GAAG,CAAC;QACjE,IAAI,IAA8B,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,GAAG;gBACL,oBAAoB,EAAE;oBACpB,IAAI,EAAE,CAAC,gBAAgB,CAAC;iBACzB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC/E,IAAI,IAAI;YAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IASD,IAAI,CAAI,SAAuB,EAAE,CAAO,EAAE,CAAO,EAAE,CAAO;QACxD,OAAQ,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAqB;QAC/B,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAqB,EACrB,IAAY,EACZ,IAA2B;QAE3B,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;YAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAqB,EAAE,IAA2B;QAC5D,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;YAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAqB,EAAE,IAA2B;QAC/D,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAqB,EAAE,IAAY,EAAE,IAA2B;QACjF,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,GAAG;QACR,KAAK,EAAE,KAAK,EAAE,EACZ,IAAI,EACJ,EAAE,EACF,UAAU,GAAG,GAAG,GAKjB,EAAE,EAAE;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,EACZ,MAAM,EACN,KAAK,GAAG,GAAG,EACX,QAAQ,GAAG,GAAG,EACd,UAAU,GAAG,GAAG,GAMjB,EAAE,EAAE;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;IAEF,uGAAuG;IACvG,KAAK,CAAC,UAAU,CAAC,YAA0B;QACzC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAClF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,YAA0B;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,QAAqB;QAC1B,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,QAAqB;QACxB,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAC7E,SAAS,CAAC,IAAY,EAAE,IAAkE;QACxF,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,IAA0B;QAChD,IAAI,IAAI,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAA0B;QACjD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,IAA0B;QACvD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,kFAAkF;IAClF,QAAQ,CAAqB;IAE7B,iFAAiF;IACjF,KAAK,CAAkB;IAEvB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IAEjB,KAAK,CAAC,OAAO,CACX,KAA4E,EAC5E,OAA4C;QAE5C,MAAM,IAAI,GAAmB,KAAK,EAAE,CAAS,EAAE,EAAE;YAC/C,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBAC/B,CAAC,CAAE,KAA4B,CAAC,CAAC,CAAC;oBAClC,CAAC,CAAE,KAAmB,EAAE,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAgB,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAc,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAqB,EAAE,IAA2B;QACrE,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAqB,EAAE,IAA2B;QACpE,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAqB,EAAE,IAA2B;QACtE,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAqB,EAAE,IAA2B;QACtE,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,KAAK,CAAC,EAAU;QACpB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC"}
@@ -1,17 +1,30 @@
1
1
  import { By } from './by.js';
2
2
  import type { Driver } from './driver.js';
3
3
  import { type KeyValue } from './keys.js';
4
+ export interface ElementOptions {
5
+ timeout?: number;
6
+ }
4
7
  export declare class ElementHandle {
5
8
  private driver;
6
9
  private by;
7
10
  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>;
11
+ click(options?: ElementOptions): Promise<void>;
12
+ fill(text: string, options?: ElementOptions): Promise<void>;
13
+ clear(options?: ElementOptions): Promise<void>;
14
+ press(key: KeyValue, options?: ElementOptions): Promise<void>;
15
+ screenshot(path?: string, options?: ElementOptions): Promise<Buffer>;
16
+ text(options?: ElementOptions): Promise<string>;
17
+ value(options?: ElementOptions): Promise<string>;
18
+ getAttribute(name: string, options?: ElementOptions): Promise<string | null>;
19
+ isVisible(options?: ElementOptions): Promise<boolean>;
20
+ isEnabled(options?: ElementOptions): Promise<boolean>;
21
+ isChecked(options?: ElementOptions): Promise<boolean>;
22
+ boundingBox(options?: ElementOptions): Promise<{
23
+ x: number;
24
+ y: number;
25
+ width: number;
26
+ height: number;
27
+ } | null>;
15
28
  expect(): import("./expect.js").ExpectApi;
16
29
  }
17
30
  //# sourceMappingURL=elementHandle.d.ts.map
@@ -1 +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"}
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,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,EAAE;gBADF,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE;IAGV,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpE,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK5E,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IASrD,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,WAAW,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IASpH,MAAM;CAGP"}
@@ -9,36 +9,78 @@ export class ElementHandle {
9
9
  this.driver = driver;
10
10
  this.by = by;
11
11
  }
12
- async click() {
13
- const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: 5000 });
12
+ async click(options) {
13
+ const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: options?.timeout ?? 5000 });
14
14
  await el.click();
15
15
  }
16
- async type(text, options) {
16
+ async fill(text, options) {
17
17
  const el = await this.driver.wait(until.elementIsVisible(this.by), {
18
18
  timeout: options?.timeout ?? 5000,
19
19
  });
20
20
  await el.click();
21
+ await el.clear();
21
22
  await el.sendKeys(text);
22
23
  }
23
- async press(key) {
24
+ async clear(options) {
25
+ const el = await this.driver.wait(until.elementIsVisible(this.by), {
26
+ timeout: options?.timeout ?? 5000,
27
+ });
28
+ await el.clear();
29
+ }
30
+ async press(key, options) {
24
31
  // assumes element is focused after click/type; ensure focus by clicking first
25
- const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: 5000 });
32
+ const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: options?.timeout ?? 5000 });
26
33
  await el.click();
27
34
  const code = getKeyValue(key);
28
35
  await this.driver.keyPressCode(code, 1);
29
36
  }
30
- async screenshot(path) {
31
- const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: 5000 });
37
+ async screenshot(path, options) {
38
+ const el = await this.driver.wait(until.elementIsVisible(this.by), { timeout: options?.timeout ?? 5000 });
32
39
  const b64 = await el.screenshotBase64();
33
40
  const buf = Buffer.from(b64, 'base64');
34
41
  if (path)
35
42
  await fs.writeFile(path, buf);
36
43
  return buf;
37
44
  }
38
- async text() {
39
- const el = await this.driver.findElement(this.by);
45
+ async text(options) {
46
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
40
47
  return await el.getText();
41
48
  }
49
+ async value(options) {
50
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
51
+ const val = await el.getProperty('value');
52
+ return String(val ?? '');
53
+ }
54
+ async getAttribute(name, options) {
55
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
56
+ return await el.getAttribute(name);
57
+ }
58
+ async isVisible(options) {
59
+ try {
60
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 1000 });
61
+ return await el.isDisplayed();
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
67
+ async isEnabled(options) {
68
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
69
+ return await el.isEnabled();
70
+ }
71
+ async isChecked(options) {
72
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
73
+ return await el.isSelected();
74
+ }
75
+ async boundingBox(options) {
76
+ try {
77
+ const el = await this.driver.wait(until.elementLocated(this.by), { timeout: options?.timeout ?? 5000 });
78
+ return await el.getRect();
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
42
84
  expect() {
43
85
  return expectSelector(this.driver, this.by);
44
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"elementHandle.js","sourceRoot":"","sources":["../../src/lib/elementHandle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AAEvD,MAAM,OAAO,aAAa;IAEd;IACA;IAFV,YACU,MAAc,EACd,EAAM;QADN,WAAM,GAAN,MAAM,CAAQ;QACd,OAAE,GAAF,EAAE,CAAI;IACb,CAAC;IAEJ,KAAK,CAAC,KAAK;QACT,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA8B;QACrD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACjE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;SAClC,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAa;QACvB,8EAA8E;QAC9E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAa;QAC5B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,IAAI;YAAE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"elementHandle.js","sourceRoot":"","sources":["../../src/lib/elementHandle.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,58 @@ export interface ExpectApi {
4
4
  toHaveText(text: string | RegExp, opts?: {
5
5
  timeout?: number;
6
6
  }): Promise<void>;
7
+ toContainText(text: string | RegExp, opts?: {
8
+ timeout?: number;
9
+ }): Promise<void>;
10
+ toHaveValue(value: string | RegExp, opts?: {
11
+ timeout?: number;
12
+ }): Promise<void>;
13
+ toHaveAttribute(name: string, value?: string | RegExp, opts?: {
14
+ timeout?: number;
15
+ }): Promise<void>;
16
+ toHaveClass(className: string, opts?: {
17
+ timeout?: number;
18
+ }): Promise<void>;
7
19
  toBeVisible(opts?: {
8
20
  timeout?: number;
9
21
  }): Promise<void>;
22
+ toBeEnabled(opts?: {
23
+ timeout?: number;
24
+ }): Promise<void>;
25
+ toBeDisabled(opts?: {
26
+ timeout?: number;
27
+ }): Promise<void>;
28
+ toBeChecked(opts?: {
29
+ timeout?: number;
30
+ }): Promise<void>;
10
31
  not: {
11
32
  toBeVisible(opts?: {
12
33
  timeout?: number;
13
34
  }): Promise<void>;
35
+ toBeEnabled(opts?: {
36
+ timeout?: number;
37
+ }): Promise<void>;
38
+ toBeDisabled(opts?: {
39
+ timeout?: number;
40
+ }): Promise<void>;
41
+ toBeChecked(opts?: {
42
+ timeout?: number;
43
+ }): Promise<void>;
44
+ toHaveText(text: string | RegExp, opts?: {
45
+ timeout?: number;
46
+ }): Promise<void>;
47
+ toContainText(text: string | RegExp, opts?: {
48
+ timeout?: number;
49
+ }): Promise<void>;
50
+ toHaveValue(value: string | RegExp, opts?: {
51
+ timeout?: number;
52
+ }): Promise<void>;
53
+ toHaveAttribute(name: string, value?: string | RegExp, opts?: {
54
+ timeout?: number;
55
+ }): Promise<void>;
56
+ toHaveClass(className: string, opts?: {
57
+ timeout?: number;
58
+ }): Promise<void>;
14
59
  };
15
60
  }
16
61
  export declare function expectSelector(driver: Driver, by: By): ExpectApi;
@@ -1 +1 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/lib/expect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,WAAW,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,GAAG,EAAE;QACH,WAAW,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACzD,CAAC;CACH;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAuDhE"}
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/lib/expect.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,18 @@
1
1
  import { until } from './wait.js';
2
+ function matchValue(actual, expected) {
3
+ if (expected instanceof RegExp) {
4
+ return expected.test(actual);
5
+ }
6
+ return actual === expected;
7
+ }
2
8
  export function expectSelector(driver, by) {
3
- function fail(message) {
4
- throw new Error(message);
9
+ function fail(message, callerFn) {
10
+ const error = new Error(message);
11
+ // Remove internal expect.ts frames from stack trace so test file line shows first
12
+ if (callerFn && Error.captureStackTrace) {
13
+ Error.captureStackTrace(error, callerFn);
14
+ }
15
+ throw error;
5
16
  }
6
17
  const toHaveText = async function toHaveText(expected, opts) {
7
18
  const timeout = opts?.timeout ?? 5000;
@@ -13,12 +24,76 @@ export function expectSelector(driver, by) {
13
24
  const found = await driver.findElement(by);
14
25
  const text = (await found.getText())?.trim?.() ?? '';
15
26
  last = text;
16
- if (expected instanceof RegExp) {
17
- if (expected.test(text))
27
+ if (matchValue(text, expected))
28
+ return;
29
+ }
30
+ catch {
31
+ // retry
32
+ }
33
+ await new Promise((resolve) => setTimeout(resolve, 100));
34
+ }
35
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
36
+ fail(`Expected element ${by.using}(${by.value}) to have text ${exp} but got "${last}"`, toHaveText);
37
+ };
38
+ const toContainText = async function toContainText(expected, opts) {
39
+ const timeout = opts?.timeout ?? 5000;
40
+ const deadline = Date.now() + timeout;
41
+ let last = '';
42
+ while (Date.now() < deadline) {
43
+ try {
44
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
45
+ const found = await driver.findElement(by);
46
+ const text = (await found.getText())?.trim?.() ?? '';
47
+ last = text;
48
+ if (expected instanceof RegExp ? expected.test(text) : text.includes(expected))
49
+ return;
50
+ }
51
+ catch {
52
+ // retry
53
+ }
54
+ await new Promise((resolve) => setTimeout(resolve, 100));
55
+ }
56
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
57
+ fail(`Expected element ${by.using}(${by.value}) to contain text ${exp} but got "${last}"`, toContainText);
58
+ };
59
+ const toHaveValue = async function toHaveValue(expected, opts) {
60
+ const timeout = opts?.timeout ?? 5000;
61
+ const deadline = Date.now() + timeout;
62
+ let last = '';
63
+ while (Date.now() < deadline) {
64
+ try {
65
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
66
+ const found = await driver.findElement(by);
67
+ const val = await found.getProperty('value');
68
+ last = String(val ?? '');
69
+ if (matchValue(last, expected))
70
+ return;
71
+ }
72
+ catch {
73
+ // retry
74
+ }
75
+ await new Promise((resolve) => setTimeout(resolve, 100));
76
+ }
77
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
78
+ fail(`Expected element ${by.using}(${by.value}) to have value ${exp} but got "${last}"`, toHaveValue);
79
+ };
80
+ const toHaveAttribute = async function toHaveAttribute(name, value, opts) {
81
+ const timeout = opts?.timeout ?? 5000;
82
+ const deadline = Date.now() + timeout;
83
+ let last = null;
84
+ while (Date.now() < deadline) {
85
+ try {
86
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
87
+ const found = await driver.findElement(by);
88
+ last = await found.getAttribute(name);
89
+ if (value === undefined) {
90
+ // Just check attribute exists
91
+ if (last !== null)
18
92
  return;
19
93
  }
20
- else if (text === expected) {
21
- return;
94
+ else {
95
+ if (last !== null && matchValue(last, value))
96
+ return;
22
97
  }
23
98
  }
24
99
  catch {
@@ -26,8 +101,32 @@ export function expectSelector(driver, by) {
26
101
  }
27
102
  await new Promise((resolve) => setTimeout(resolve, 100));
28
103
  }
29
- const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
30
- fail(`Expected element ${by.using}(${by.value}) to have text ${exp} but got "${last}"`);
104
+ if (value === undefined) {
105
+ fail(`Expected element ${by.using}(${by.value}) to have attribute "${name}" but it was not found`, toHaveAttribute);
106
+ }
107
+ const exp = value instanceof RegExp ? `/${value.source}/` : `"${value}"`;
108
+ fail(`Expected element ${by.using}(${by.value}) to have attribute "${name}" = ${exp} but got "${last}"`, toHaveAttribute);
109
+ };
110
+ const toHaveClass = async function toHaveClass(className, opts) {
111
+ const timeout = opts?.timeout ?? 5000;
112
+ const deadline = Date.now() + timeout;
113
+ let last = '';
114
+ while (Date.now() < deadline) {
115
+ try {
116
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
117
+ const found = await driver.findElement(by);
118
+ const cls = await found.getAttribute('class');
119
+ last = cls ?? '';
120
+ const classes = last.split(/\s+/);
121
+ if (classes.includes(className))
122
+ return;
123
+ }
124
+ catch {
125
+ // retry
126
+ }
127
+ await new Promise((resolve) => setTimeout(resolve, 100));
128
+ }
129
+ fail(`Expected element ${by.using}(${by.value}) to have class "${className}" but got "${last}"`, toHaveClass);
31
130
  };
32
131
  const toBeVisible = async function toBeVisible(opts) {
33
132
  const timeout = opts?.timeout ?? 5000;
@@ -35,7 +134,7 @@ export function expectSelector(driver, by) {
35
134
  await driver.wait(until.elementIsVisible(by), { timeout });
36
135
  }
37
136
  catch {
38
- fail(`Expected element ${by.using}(${by.value}) to be visible within ${timeout}ms`);
137
+ fail(`Expected element ${by.using}(${by.value}) to be visible within ${timeout}ms`, toBeVisible);
39
138
  }
40
139
  };
41
140
  const toBeNotVisible = async function toBeNotVisible(opts) {
@@ -44,13 +143,202 @@ export function expectSelector(driver, by) {
44
143
  await driver.wait(until.elementIsNotVisible(by), { timeout });
45
144
  }
46
145
  catch {
47
- fail(`Expected element ${by.using}(${by.value}) to become hidden within ${timeout}ms`);
146
+ fail(`Expected element ${by.using}(${by.value}) to become hidden within ${timeout}ms`, toBeNotVisible);
147
+ }
148
+ };
149
+ const toBeEnabled = async function toBeEnabled(opts) {
150
+ const timeout = opts?.timeout ?? 5000;
151
+ const deadline = Date.now() + timeout;
152
+ while (Date.now() < deadline) {
153
+ try {
154
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
155
+ const found = await driver.findElement(by);
156
+ if (await found.isEnabled())
157
+ return;
158
+ }
159
+ catch {
160
+ // retry
161
+ }
162
+ await new Promise((resolve) => setTimeout(resolve, 100));
163
+ }
164
+ fail(`Expected element ${by.using}(${by.value}) to be enabled within ${timeout}ms`, toBeEnabled);
165
+ };
166
+ const toBeDisabled = async function toBeDisabled(opts) {
167
+ const timeout = opts?.timeout ?? 5000;
168
+ const deadline = Date.now() + timeout;
169
+ while (Date.now() < deadline) {
170
+ try {
171
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
172
+ const found = await driver.findElement(by);
173
+ if (!(await found.isEnabled()))
174
+ return;
175
+ }
176
+ catch {
177
+ // retry
178
+ }
179
+ await new Promise((resolve) => setTimeout(resolve, 100));
180
+ }
181
+ fail(`Expected element ${by.using}(${by.value}) to be disabled within ${timeout}ms`, toBeDisabled);
182
+ };
183
+ const toBeChecked = async function toBeChecked(opts) {
184
+ const timeout = opts?.timeout ?? 5000;
185
+ const deadline = Date.now() + timeout;
186
+ while (Date.now() < deadline) {
187
+ try {
188
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
189
+ const found = await driver.findElement(by);
190
+ if (await found.isSelected())
191
+ return;
192
+ }
193
+ catch {
194
+ // retry
195
+ }
196
+ await new Promise((resolve) => setTimeout(resolve, 100));
197
+ }
198
+ fail(`Expected element ${by.using}(${by.value}) to be checked within ${timeout}ms`, toBeChecked);
199
+ };
200
+ const toBeNotChecked = async function toBeNotChecked(opts) {
201
+ const timeout = opts?.timeout ?? 5000;
202
+ const deadline = Date.now() + timeout;
203
+ while (Date.now() < deadline) {
204
+ try {
205
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
206
+ const found = await driver.findElement(by);
207
+ if (!(await found.isSelected()))
208
+ return;
209
+ }
210
+ catch {
211
+ // retry
212
+ }
213
+ await new Promise((resolve) => setTimeout(resolve, 100));
214
+ }
215
+ fail(`Expected element ${by.using}(${by.value}) to not be checked within ${timeout}ms`, toBeNotChecked);
216
+ };
217
+ const notToHaveText = async function notToHaveText(expected, opts) {
218
+ const timeout = opts?.timeout ?? 5000;
219
+ const deadline = Date.now() + timeout;
220
+ while (Date.now() < deadline) {
221
+ try {
222
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
223
+ const found = await driver.findElement(by);
224
+ const text = (await found.getText())?.trim?.() ?? '';
225
+ if (!matchValue(text, expected))
226
+ return;
227
+ }
228
+ catch {
229
+ return; // element not found = text doesn't match
230
+ }
231
+ await new Promise((resolve) => setTimeout(resolve, 100));
232
+ }
233
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
234
+ fail(`Expected element ${by.using}(${by.value}) to NOT have text ${exp}`, notToHaveText);
235
+ };
236
+ const notToContainText = async function notToContainText(expected, opts) {
237
+ const timeout = opts?.timeout ?? 5000;
238
+ const deadline = Date.now() + timeout;
239
+ while (Date.now() < deadline) {
240
+ try {
241
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
242
+ const found = await driver.findElement(by);
243
+ const text = (await found.getText())?.trim?.() ?? '';
244
+ if (expected instanceof RegExp ? !expected.test(text) : !text.includes(expected))
245
+ return;
246
+ }
247
+ catch {
248
+ return;
249
+ }
250
+ await new Promise((resolve) => setTimeout(resolve, 100));
251
+ }
252
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
253
+ fail(`Expected element ${by.using}(${by.value}) to NOT contain text ${exp}`, notToContainText);
254
+ };
255
+ const notToHaveValue = async function notToHaveValue(expected, opts) {
256
+ const timeout = opts?.timeout ?? 5000;
257
+ const deadline = Date.now() + timeout;
258
+ while (Date.now() < deadline) {
259
+ try {
260
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
261
+ const found = await driver.findElement(by);
262
+ const val = String(await found.getProperty('value') ?? '');
263
+ if (!matchValue(val, expected))
264
+ return;
265
+ }
266
+ catch {
267
+ return;
268
+ }
269
+ await new Promise((resolve) => setTimeout(resolve, 100));
270
+ }
271
+ const exp = expected instanceof RegExp ? `/${expected.source}/` : `"${expected}"`;
272
+ fail(`Expected element ${by.using}(${by.value}) to NOT have value ${exp}`, notToHaveValue);
273
+ };
274
+ const notToHaveAttribute = async function notToHaveAttribute(name, value, opts) {
275
+ const timeout = opts?.timeout ?? 5000;
276
+ const deadline = Date.now() + timeout;
277
+ while (Date.now() < deadline) {
278
+ try {
279
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
280
+ const found = await driver.findElement(by);
281
+ const attr = await found.getAttribute(name);
282
+ if (value === undefined) {
283
+ if (attr === null)
284
+ return;
285
+ }
286
+ else {
287
+ if (attr === null || !matchValue(attr, value))
288
+ return;
289
+ }
290
+ }
291
+ catch {
292
+ return;
293
+ }
294
+ await new Promise((resolve) => setTimeout(resolve, 100));
295
+ }
296
+ if (value === undefined) {
297
+ fail(`Expected element ${by.using}(${by.value}) to NOT have attribute "${name}"`, notToHaveAttribute);
298
+ }
299
+ const exp = value instanceof RegExp ? `/${value.source}/` : `"${value}"`;
300
+ fail(`Expected element ${by.using}(${by.value}) to NOT have attribute "${name}" = ${exp}`, notToHaveAttribute);
301
+ };
302
+ const notToHaveClass = async function notToHaveClass(className, opts) {
303
+ const timeout = opts?.timeout ?? 5000;
304
+ const deadline = Date.now() + timeout;
305
+ while (Date.now() < deadline) {
306
+ try {
307
+ await driver.wait(until.elementExists(by), { timeout: Math.min(250, timeout) });
308
+ const found = await driver.findElement(by);
309
+ const cls = await found.getAttribute('class') ?? '';
310
+ const classes = cls.split(/\s+/);
311
+ if (!classes.includes(className))
312
+ return;
313
+ }
314
+ catch {
315
+ return;
316
+ }
317
+ await new Promise((resolve) => setTimeout(resolve, 100));
48
318
  }
319
+ fail(`Expected element ${by.using}(${by.value}) to NOT have class "${className}"`, notToHaveClass);
49
320
  };
50
321
  return {
51
322
  toHaveText,
323
+ toContainText,
324
+ toHaveValue,
325
+ toHaveAttribute,
326
+ toHaveClass,
52
327
  toBeVisible,
53
- not: { toBeVisible: toBeNotVisible },
328
+ toBeEnabled,
329
+ toBeDisabled,
330
+ toBeChecked,
331
+ not: {
332
+ toBeVisible: toBeNotVisible,
333
+ toBeEnabled: toBeDisabled, // not enabled = disabled
334
+ toBeDisabled: toBeEnabled, // not disabled = enabled
335
+ toBeChecked: toBeNotChecked,
336
+ toHaveText: notToHaveText,
337
+ toContainText: notToContainText,
338
+ toHaveValue: notToHaveValue,
339
+ toHaveAttribute: notToHaveAttribute,
340
+ toHaveClass: notToHaveClass,
341
+ },
54
342
  };
55
343
  }
56
344
  //# sourceMappingURL=expect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/lib/expect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAUlC,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,EAAM;IACnD,SAAS,IAAI,CAAC,OAAe;QAC3B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,UAAU,UAAU,CAC1C,QAAyB,EACzB,IAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;gBACrD,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,QAAQ,YAAY,MAAM,EAAE,CAAC;oBAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO;gBAClC,CAAC;qBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ;YACV,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC;QAClF,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,kBAAkB,GAAG,aAAa,IAAI,GAAG,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,UAAU,WAAW,CAAC,IAA2B;QACxE,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,0BAA0B,OAAO,IAAI,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,UAAU,cAAc,CAAC,IAA2B;QAC9E,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,6BAA6B,OAAO,IAAI,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,WAAW;QACX,GAAG,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/lib/expect.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,9 @@ export interface DriverServiceOptions {
13
13
  export declare class DriverService {
14
14
  protected proc?: ChildProcess;
15
15
  protected endpoint: WebDriverEndpoint;
16
- protected readonly opts: Required<Omit<DriverServiceOptions, 'env'>> & {
16
+ protected readonly opts: Required<Omit<DriverServiceOptions, 'env' | 'port'>> & {
17
17
  env?: NodeJS.ProcessEnv;
18
+ port?: number;
18
19
  };
19
20
  constructor(options: DriverServiceOptions);
20
21
  getEndpoint(): WebDriverEndpoint;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/lib/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,GAAG;QACrE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;KACzB,CAAC;gBAEU,OAAO,EAAE,oBAAoB;IAmBzC,WAAW,IAAI,iBAAiB;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAOX,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;cAsBtC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBhD"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/lib/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAeD,qBAAa,aAAa;IACxB,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAG,iBAAiB,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG;QAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;gBAEU,OAAO,EAAE,oBAAoB;IAazC,WAAW,IAAI,iBAAiB;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAOX,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;cAsBtC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBhD"}
@@ -1,5 +1,18 @@
1
1
  import { spawn } from 'child_process';
2
2
  import { HttpClient } from './http.js';
3
+ import net from 'net';
4
+ async function findFreePort() {
5
+ return new Promise((resolve, reject) => {
6
+ const server = net.createServer();
7
+ server.unref();
8
+ server.on('error', reject);
9
+ server.listen(0, '127.0.0.1', () => {
10
+ const addr = server.address();
11
+ const port = typeof addr === 'object' && addr ? addr.port : 0;
12
+ server.close(() => resolve(port));
13
+ });
14
+ });
15
+ }
3
16
  export class DriverService {
4
17
  proc;
5
18
  endpoint;
@@ -9,18 +22,12 @@ export class DriverService {
9
22
  args: options.args ?? [],
10
23
  command: options.command,
11
24
  hostname: options.hostname ?? '127.0.0.1',
12
- port: options.port ?? 9515,
25
+ port: options.port, // undefined means auto-assign
13
26
  pathBase: options.pathBase ?? '',
14
27
  readinessPath: options.readinessPath ?? '/status',
15
28
  readinessTimeoutMs: options.readinessTimeoutMs ?? 5000,
16
29
  env: options.env,
17
30
  };
18
- this.endpoint = {
19
- protocol: 'http',
20
- hostname: this.opts.hostname,
21
- port: this.opts.port,
22
- path: this.opts.pathBase,
23
- };
24
31
  }
25
32
  getEndpoint() {
26
33
  return this.endpoint;
@@ -29,7 +36,15 @@ export class DriverService {
29
36
  if (this.proc)
30
37
  return; // already started
31
38
  await this.ensureBinaryAvailable();
32
- this.proc = spawn(this.opts.command, [`--port=${this.opts.port}`, ...this.opts.args], {
39
+ // Assign a free port if not specified
40
+ const port = this.opts.port ?? await findFreePort();
41
+ this.endpoint = {
42
+ protocol: 'http',
43
+ hostname: this.opts.hostname,
44
+ port,
45
+ path: this.opts.pathBase,
46
+ };
47
+ this.proc = spawn(this.opts.command, [`--port=${port}`, ...this.opts.args], {
33
48
  env: { ...process.env, ...this.opts.env },
34
49
  stdio: ['ignore', 'pipe', 'pipe'],
35
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/lib/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/lib/service.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,17 @@ export declare class WebElement {
16
16
  };
17
17
  isDisplayed(): Promise<boolean>;
18
18
  screenshotBase64(): Promise<string>;
19
+ clear(): Promise<void>;
20
+ getAttribute(name: string): Promise<string | null>;
21
+ getProperty(name: string): Promise<unknown>;
22
+ isEnabled(): Promise<boolean>;
23
+ isSelected(): Promise<boolean>;
24
+ getTagName(): Promise<string>;
25
+ getRect(): Promise<{
26
+ x: number;
27
+ y: number;
28
+ width: number;
29
+ height: number;
30
+ }>;
19
31
  }
20
32
  //# sourceMappingURL=webelement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webelement.d.ts","sourceRoot":"","sources":["../../src/lib/webelement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE,eAAO,MAAM,eAAe,wCAAwC,CAAC;AACrE,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAG3B,KAAK,IAAI,MAAM;IAIT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAUhC,MAAM;;;;IAIA,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAS1C"}
1
+ {"version":3,"file":"webelement.d.ts","sourceRoot":"","sources":["../../src/lib/webelement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE,eAAO,MAAM,eAAe,wCAAwC,CAAC;AACrE,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAG3B,KAAK,IAAI,MAAM;IAIT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAUhC,MAAM;;;;IAIA,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAUnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUlD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAU7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAU9B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,OAAO,IAAI,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CASlF"}
@@ -60,5 +60,67 @@ export class WebElement {
60
60
  const value = res?.value ?? res;
61
61
  return String(value ?? '');
62
62
  }
63
+ async clear() {
64
+ const client = new HttpClient(this.endpoint);
65
+ await client.send({
66
+ method: 'POST',
67
+ path: `/session/${this.sessionId}/element/${this.elementId}/clear`,
68
+ body: {},
69
+ });
70
+ }
71
+ async getAttribute(name) {
72
+ const client = new HttpClient(this.endpoint);
73
+ const res = await client.send({
74
+ method: 'GET',
75
+ path: `/session/${this.sessionId}/element/${this.elementId}/attribute/${name}`,
76
+ });
77
+ const value = res?.value ?? res;
78
+ return value;
79
+ }
80
+ async getProperty(name) {
81
+ const client = new HttpClient(this.endpoint);
82
+ const res = await client.send({
83
+ method: 'GET',
84
+ path: `/session/${this.sessionId}/element/${this.elementId}/property/${name}`,
85
+ });
86
+ const value = res?.value ?? res;
87
+ return value;
88
+ }
89
+ async isEnabled() {
90
+ const client = new HttpClient(this.endpoint);
91
+ const res = await client.send({
92
+ method: 'GET',
93
+ path: `/session/${this.sessionId}/element/${this.elementId}/enabled`,
94
+ });
95
+ const value = res?.value ?? res;
96
+ return Boolean(value);
97
+ }
98
+ async isSelected() {
99
+ const client = new HttpClient(this.endpoint);
100
+ const res = await client.send({
101
+ method: 'GET',
102
+ path: `/session/${this.sessionId}/element/${this.elementId}/selected`,
103
+ });
104
+ const value = res?.value ?? res;
105
+ return Boolean(value);
106
+ }
107
+ async getTagName() {
108
+ const client = new HttpClient(this.endpoint);
109
+ const res = await client.send({
110
+ method: 'GET',
111
+ path: `/session/${this.sessionId}/element/${this.elementId}/name`,
112
+ });
113
+ const value = res?.value ?? res;
114
+ return String(value ?? '').toLowerCase();
115
+ }
116
+ async getRect() {
117
+ const client = new HttpClient(this.endpoint);
118
+ const res = await client.send({
119
+ method: 'GET',
120
+ path: `/session/${this.sessionId}/element/${this.elementId}/rect`,
121
+ });
122
+ const value = res?.value ?? res;
123
+ return value;
124
+ }
63
125
  }
64
126
  //# sourceMappingURL=webelement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webelement.js","sourceRoot":"","sources":["../../src/lib/webelement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webelement.js","sourceRoot":"","sources":["../../src/lib/webelement.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "craftdriver",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Modern WebDriver automation library for NodeJS",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -50,6 +50,8 @@
50
50
  ],
51
51
  "sideEffects": false,
52
52
  "devDependencies": {
53
+ "@semantic-release/changelog": "^6.0.3",
54
+ "@semantic-release/git": "^10.0.1",
53
55
  "@types/node": "^20.0.0",
54
56
  "@typescript-eslint/eslint-plugin": "^8.1.0",
55
57
  "@typescript-eslint/parser": "^8.1.0",
@@ -61,9 +63,9 @@
61
63
  "http-server": "^14.1.1",
62
64
  "prettier": "^3.3.3",
63
65
  "rimraf": "^6.0.1",
66
+ "semantic-release": "^25.0.3",
64
67
  "typescript": "^5.0.0",
65
- "vitest": "^1.6.1"
68
+ "vitest": "^4.0.18"
66
69
  },
67
- "dependencies": {
68
- }
70
+ "dependencies": {}
69
71
  }