63 lines
1.9 KiB
TypeScript
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;
|
|
}
|