AI_UIAutomation/utils/common/feedback.helper.ts

63 lines
1.9 KiB
TypeScript

import { DeviceDriver } from '../../drivers/types';
import { sleep, waitForSource } from './element.helper';
export async function navigateToFeedback(driver: DeviceDriver): Promise<boolean> {
if (driver.platform === 'android') {
const el = await driver.findElementRaw('-android uiautomator', 'new UiSelector().text("Feedback")');
if (!el) return false;
await driver.tapElement(el);
await sleep(2000);
return true;
}
const el = await driver.findElementRaw('name', 'Feedback');
if (!el) return false;
await driver.tapElement(el);
await sleep(2000);
return true;
}
export async function submitFeedback(
driver: DeviceDriver,
category: string,
description: string
): Promise<boolean> {
// Skeleton - implementation depends on actual app UI
if (driver.platform === 'android') {
const catEl = await driver.findElementRaw('-android uiautomator', `new UiSelector().text("${category}")`);
if (!catEl) return false;
await driver.tapElement(catEl);
await sleep(1000);
const textField = await driver.findElementRaw('class name', 'android.widget.EditText');
if (textField) {
await driver.typeText(textField, description);
await sleep(500);
}
const submitEl = await driver.findElementRaw('-android uiautomator', 'new UiSelector().text("Submit")');
if (!submitEl) return false;
await driver.tapElement(submitEl);
await sleep(2000);
return true;
}
// iOS
const catEl = await driver.findElementRaw('name', category);
if (!catEl) return false;
await driver.tapElement(catEl);
await sleep(1000);
const textFields = await driver.findElementsRaw('class name', 'XCUIElementTypeTextView');
if (textFields.length > 0) {
await driver.typeText(textFields[0], description);
await sleep(500);
}
const submitEl = await driver.findElementRaw('name', 'Submit');
if (!submitEl) return false;
await driver.tapElement(submitEl);
await sleep(2000);
return true;
}