@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
|
-
*
|
|
7
|
-
* - step.locator
|
|
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
|
|
3
|
+
* Step에서 요소 찾기 (locator 시스템 사용)
|
|
5
4
|
*/
|
|
6
5
|
async function findElement(step) {
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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 (!("
|
|
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
|
|
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
|
|
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
|
|
26
|
+
"@auto-wiz/core": "1.2.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"typescript": "^5.0.0"
|