@auto-wiz/dom 1.0.2 → 1.1.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.
@@ -3,9 +3,8 @@ import type { Step } from "@auto-wiz/core";
3
3
  * Step execution 유틸리티
4
4
  * 각 Step 타입별 실행 로직
5
5
  *
6
- * 새로운 locator 시스템 지원:
7
- * - step.locator 있으면 다중 selector fallback 사용
8
- * - 없으면 기존 step.selector 사용 (하위 호환성)
6
+ * locator 시스템 사용:
7
+ * - step.locator 다중 selector fallback 사용
9
8
  */
10
9
  export interface ExecutionResult {
11
10
  success: boolean;
@@ -1,30 +1,23 @@
1
- import { querySelector } from "../selectors/selectorGenerator";
2
1
  import { waitForLocator, isInteractable } from "../selectors/locatorUtils";
3
2
  /**
4
- * Step에서 요소 찾기 (locator 우선, fallback to selector)
3
+ * Step에서 요소 찾기 (locator 시스템 사용)
5
4
  */
6
5
  async function findElement(step) {
7
- // 1. 새로운 locator 시스템 시도
8
- if ("locator" in step && step.locator) {
9
- try {
10
- const element = await waitForLocator(step.locator, {
11
- timeout: step.timeoutMs || 5000,
12
- visible: true,
13
- interactable: true,
14
- });
15
- return { element, usedSelector: step.locator.primary };
16
- }
17
- catch (error) {
18
- // Locator로 찾지 못하면 selector로 폴백
19
- console.warn("Locator failed, falling back to selector", error);
20
- }
6
+ if (!("locator" in step) || !step.locator) {
7
+ return { element: null, usedSelector: "none" };
21
8
  }
22
- // 2. 기존 selector 사용 (하위 호환성)
23
- if ("selector" in step && step.selector) {
24
- const element = querySelector(step.selector);
25
- return { element, usedSelector: step.selector };
9
+ try {
10
+ const element = await waitForLocator(step.locator, {
11
+ timeout: step.timeoutMs || 5000,
12
+ visible: true,
13
+ interactable: true,
14
+ });
15
+ return { element, usedSelector: step.locator.primary };
16
+ }
17
+ catch (error) {
18
+ console.warn("Locator failed:", error);
19
+ return { element: null, usedSelector: step.locator.primary };
26
20
  }
27
- return { element: null, usedSelector: "none" };
28
21
  }
29
22
  /**
30
23
  * Click step 실행
@@ -231,7 +224,7 @@ export async function executeWaitForStep(step) {
231
224
  return { success: false, error: "Invalid waitFor step" };
232
225
  }
233
226
  // 단순 timeout인 경우
234
- if (!("selector" in step) && !("locator" in step) && step.timeoutMs) {
227
+ if (!("locator" in step) && step.timeoutMs) {
235
228
  await new Promise((resolve) => setTimeout(resolve, step.timeoutMs));
236
229
  return { success: true };
237
230
  }
@@ -245,25 +238,9 @@ export async function executeWaitForStep(step) {
245
238
  });
246
239
  return { success: true, usedSelector: step.locator.primary };
247
240
  }
248
- // selector가 있으면 기존 방식 (하위 호환성)
249
- if ("selector" in step && step.selector) {
250
- const startTime = Date.now();
251
- const pollInterval = 100;
252
- while (Date.now() - startTime < timeout) {
253
- const element = querySelector(step.selector);
254
- if (element) {
255
- return { success: true, usedSelector: step.selector };
256
- }
257
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
258
- }
259
- return {
260
- success: false,
261
- error: `Timeout waiting for element: ${step.selector}`,
262
- };
263
- }
264
241
  return {
265
242
  success: false,
266
- error: "WaitFor step requires selector, locator, or timeoutMs",
243
+ error: "WaitFor step requires locator or timeoutMs",
267
244
  };
268
245
  }
269
246
  catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auto-wiz/dom",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "license": "MIT",
5
5
  "author": "JaeSang",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@auto-wiz/core": "1.0.1"
26
+ "@auto-wiz/core": "1.2.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "typescript": "^5.0.0"